Fetches and parses the MIIT (RUT) university timetable. Remembers current group, tracks history, auto-infers next-year group. Provides stateful access to institute catalogs, group schedules, and student portal data.
Server has 11 tools with basic naming and descriptions, but significant gaps in schema completeness, parameter documentation, and error handling. Most tools lack detailed input/output schemas. Descriptions are present but often generic (10-50 chars). No parameter descriptions for most inputs. No error recovery guidance. Stateful design (state.json) violates modern MCP patterns. Cabinet tools rely on lazy imports and undocumented credentials handling.
Get information about the cached cabinet data (when it was last synced).
Get cached student grades by semester and discipline. Returns cached data without browser access.
Get cached student profile data (full name, personal info, contact details). Returns cached data without browser access.
Get cached student study plan (specialty, department, qualification, documents). Returns cached data without browser access.
Sync student profile, grades, and study plan from the cabinet portal. Requires valid MIIT_LOGIN and MIIT_PASSWORD environment variables or credentials.json file.
search group by code
show stored group, history, and next-year suggestion
Cabinet tools (cabinet_sync, cabinet_get_profile, cabinet_get_grades, cabinet_get_study_plan, cabinet_get_cache_info) have no visible output schemas. Return types are undocumented, forcing LLMs to guess field names and structure. Credentials handling via environment variables or credentials.json is mentioned in descriptions but not validated or documented in tool definitions.
Stateful design (state.json file) violates MCP protocol statefulness principle. Server maintains persistent group history and current_group across requests, making behavior dependent on file system state rather than request parameters. Modern MCP requires stateless request handling with all context in _meta.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 37 | 2026-07-28+ | v2 |
get lab report context (uses stored group if none given)
get schedule (uses stored group if none given)
list all institutes
set active group + infer next year
No error handling or recovery guidance. Tools like miit_get_timetable and miit_find_group can fail (network timeout, invalid group_id, HTML parse failure) but provide no actionable error messages. LLMs receive raw exceptions with no guidance on retry strategy or alternatives.
Parameter descriptions missing or minimal. 'group_id' parameter in miit_get_timetable has description 'Timetable ID for the group (optional, uses stored group if not provided)' but does not explain format, valid range, or how to obtain a valid ID. LLMs cannot infer whether to pass numeric ID, string code, or URL.
No output schemas documented for any tool. Timetable parsing returns JSON with window._timetableData structure, but no schema is provided. Cabinet tools return cached data but structure is undocumented. LLMs cannot plan downstream tool calls or extract required fields without trial-and-error.