MCP server for BSUIR (Belarusian State University of Informatics and Radioelectronics) providing tools for accessing university schedule, structure, employees, and facilities information
The server demonstrates solid definition quality with explicit tool registration, comprehensive parameter schemas, and well-structured Pydantic models. However, descriptions vary in clarity and actionability. Most tools have detailed parameter documentation (exceeding the 72-char baseline), but some descriptions lack guidance on when to use the tool vs. alternatives. Output schemas are not documented, which is a notable gap. Parameter validation (enums, ranges, patterns) is generally present and well-applied. The Russian-language descriptions are context-appropriate for a university system but reduce cross-cultural usability. All 11 tools have schemas defined in code (not inferred), meeting the hard scoring rule.
Поиск списка СВОБОДНЫХ аудиторий в заданный момент времени. Используйте, когда студент ищет пустое место для самостоятельной работы. Обязательно уточните номер корпуса, если пользователь не указал.
Проверка занятости КОНКРЕТНОЙ аудитории. Позволяет узнать, кто сейчас занимается в аудитории ('Какая группа сейчас в 305-2?') или получить список всех пар в этой аудитории на день. Имя аудитории должно быть в формате {214-4 к.}, где 214 это номер аудитории, 4 к. это 4 корпус
Получение списков структурных подразделений университета. Получение списков: факультеты, кафедры, аудитории, специальности, группы ВАЖНО для списков: Факультеты: используйте всегда когда необходимо узнать полную информацию о факультетах; Кафедры: используйте всегда когда необходимо узнать полную информацию о кафедрах; Аудитории: используйте для получени списка всех аудиторий, и когда нужно узнать, относятся ли аудитории к какому-либо корпусу и т.д.; Специальности: используйте всегда когда необходим доступ к специальностям конкретной кафедры; Группы: используйте всегда когда необходим доступ к группам конкретной специальности; Не используйте для поиска людей.
Поиск преподавателей и сотрудников. Позволяет найти человека по ФИО, получить список всех сотрудников определенной кафедры или найти конкретного человека внутри кафедры.
Output schemas not documented. While input schemas are explicit (Pydantic models), the response structures returned by tools are never formally specified. LLMs cannot predict what fields to extract or plan downstream tool chains without knowing the response schema.
schedule_get description explicitly warns 'RETURNS HUGE JSON' and asks for confirmation, but the tool has no confirmation/dry-run capability. Irreversible or expensive operations should support a dry-run or confirmation step before execution, not just documentation.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | B | 76 | 2026-07-28+ | v2 |
| 2026-03-09 | D | 52 | - | v1 |
Глобальный поиск по всем расписаниям. Используйте ТОЛЬКО для вопросов вида: 'Кто ведет Нейронные сети?', 'У каких групп есть Философия?'. Позволяет найти преподавателей или группы, связанные с предметом.
Получение списка всех преподавателей, которые ведут занятия у указанной группы, на основе расписания.
ВНИМАНИЕ: ВОЗВРАЩАЕТ ОГРОМНЫЙ JSON СО ВСЕМ РАСПИСАНИЕМ НА ВЕСЬ СЕМЕСТР. Вызывать ТОЛЬКО в крайнем случае, если пользователь явно просит 'Покажи всё расписание целиком' и подтвердил это действие. ВСЕГДА спрашивай подтверждение пользователя Для конкретных вопросов ('какие пары во вторник?', 'когда математика?') используйте инструменты `schedule_get_day` или `schedule_search_event`.
Получение расписания на ОДИН конкретный день. Используйте это ВМЕСТО `schedule_get` для вопросов вида: 'Какие пары завтра?', 'Что у меня в среду?', 'Расписание на понедельник'. Возвращает список занятий только на указанный день.
Поиск конкретных занятий (лекций, лабораторных) по названию предмета в расписании группы или преподавателя. Используйте это вместо получения полного расписания, если пользователь спрашивает: 'Когда у меня математика?', 'Во сколько лекция по БД?', 'В какой аудитории физика?'.
Получение детальной информации о группе: специальность, курс, факультет.
Возвращает номер текущей учебной недели (1-4). Используйте этот инструмент ПЕРВЫМ при любых вопросах, связанных с датами, расписанием на 'сегодня', 'завтра' или 'эту неделю', чтобы правильно фильтровать занятия.
Tool names could be more action-oriented. 'auditories_free', 'auditories_occupancy_check', 'group_teachers_get' start with nouns or are structurally unclear. Prefer 'search_free_auditories', 'check_auditory_occupancy', 'get_group_teachers' to align with verb_noun pattern (90% baseline for A+ tools).
Parameter descriptions contain example values and domain-specific hints but lack explicit guidance on when to use the tool vs. similar tools. E.g., schedule_search_event vs schedule_get_day overlap, when should the LLM choose one over the other? Current descriptions assume domain knowledge.
directories_get has multiple conditional required parameters (faculty_id required for specialty queries, specialty_id required for group queries) but parameter descriptions don't explicitly state these dependencies. LLMs may omit required params or pass wrong combinations.
No pagination support documented for tools returning lists (employees_find returns 'limit' but no offset/cursor; directories_get lists could be large). Without pagination, large result sets risk context window overflow.
Parameter format guidance is documented in descriptions (e.g., 'ЧЧ:ММ' for time, '221703' for group numbers) but uses regex patterns inconsistently. time pattern is defined (^\d{2}:\d{2}$) but group_name format is only documented in text, not enforced via pattern.
No error handling documentation. Tools don't specify what errors they might return, when to retry, or what recovery actions the LLM should take. E.g., if employees_find matches no results, should the LLM broaden the search or ask the user for clarification?