MCP server for USOS (Uniwersytecki System Obsługi Studiów) - provides access to university student information system data including grades, schedules, courses, and groups
Server has 16 well-named tools with consistent verb_noun patterns (login, check_login, logout, get_*). All tools have descriptions (10 - 200 chars, within baseline 34 - 392 range). Input schemas are present and typed for all tools. However, descriptions are often terse (e.g., 'Check if the MCP server is currently authenticated' = 56 chars), lacking WHEN/WHY context and dependency hints. Output schemas are not documented, LLMs cannot predict response structure for chaining. Error handling is minimal; most tools lack recovery guidance. Tool annotations (readOnlyHint, destructiveHint, idempotentHint) are present on login but absent on 15 others. Parameters generally lack format constraints (e.g., date strings, ID patterns). No pagination documented despite tools returning lists (get_exams, get_grades, get_student_groups, get_group_participants, search_lecturer, get_lecturer_courses, get_schedule, get_faculties). Composition is sound, tools are single-responsibility and chainable (e.g., get_faculties → get_days_off). Security: credentials are not exposed as parameters (OAuth handled server-side), but no audit logging or permission gates visible.
Check if the MCP server is currently authenticated with the USOS API. Use this to verify if the user has completed the setup.
Fetch comprehensive details about a course edition (ECTS credits, passing status, description, bibliography, assessment criteria, and course units).
Check who teaches a given course in a specific term (list of lecturers).
Find day-off calendar events in a date range. faculty_id is optional and auto-resolved from the student's profile when omitted. Use get_faculties if resolution fails.
Find exam session calendar events in a selected term. faculty_id is optional and auto-resolved from the student's profile when omitted. Use get_faculties if resolution fails.
Output schemas not documented. LLMs cannot predict response structure (fields, types, nested objects) for downstream tool chaining. E.g., get_exams returns exam list but response format is invisible.
Pagination not documented. Tools returning lists (get_exams, get_grades, get_student_groups, search_lecturer, get_schedule) lack limit/offset/page parameters and total_count in response. Large result sets will blow context window.
Tool annotations missing on 15/16 tools. Only login has readOnlyHint/destructiveHint/idempotentHint. Agents cannot determine which tools are safe to retry or have side effects.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 60 | <=2025-11-25 | v2 |
Check scheduled exam dates and groups for the authenticated student. Defaults to upcoming exams only.
List faculties linked to the authenticated student's active programmes. Use ONLY when faculty_id is unknown and you want to use schedule tools.
Calculate the authenticated student's ECTS-weighted grade point average. By default uses all academic terms from the student's study history. Pass term_ids to filter by specific terms.
Fetch the authenticated student's grades. Supports four modes: 'term' — grades for a given academic term; 'course' — grades for a specific course edition (requires course_id); 'latest' — recently modified grades (last N days); 'all' (default) — grades from all academic terms overall.
List the first names and surnames of other students enrolled in a specific class group. Requires course_unit_id and group_number.
Find what courses a given employee teaches.
Fetch the timetable for a student or lecturer for a selected date window (1-7 days). Defaults to the authenticated student if lecturer_id is omitted.
Retrieve the list of class groups the authenticated student belongs to. Filter results to active academic terms only using active_only=True.
Interactive step-by-step authentication tool. Run this tool with no parameters first to start.
Log out and delete stored USOS API authentication credentials from the local configuration store.
Search for employees/lecturers and retrieve their academic titles and emails.
Descriptions lack WHEN/WHY context and dependency hints. E.g., 'Check if the MCP server is currently authenticated' (56 chars) does not explain when to call it or what to do if false. Baseline: 194 chars average.
No error handling guidance. Tools lack recovery hints (e.g., 'If course not found, try search_courses()') or error categorization (retryable vs user-fixable). Agents cannot self-correct on failures.