webuntis-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| WEBUNTIS_SCHOOL | No | School short name as shown in QR code dialog | |
| WEBUNTIS_SECRET | No | 16-character TOTP key from QR code dialog | |
| WEBUNTIS_SERVER | No | WebUntis server hostname (e.g. `yourschool.webuntis.com`) | |
| WEBUNTIS_STUDENT | No | Child's first name (for student resolution) | |
| WEBUNTIS_PASSWORD | No | Login password (not needed for read-only, reserved for future write support) | |
| WEBUNTIS_USERNAME | No | Your login (usually email address) |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_timetableA | Fetch the student's timetable for a date range. Returns lessons with subject, room, teacher, and any changes (cancellations, substitutions, room swaps). Args: start_date: Start date in YYYY-MM-DD format (default: today) end_date: End date in YYYY-MM-DD format (default: start + 4 days) |
| get_todayA | Fetch today's schedule with all details. Shows all lessons for today including any cancellations, substitutions, room changes, and teacher changes. |
| get_tomorrowA | Fetch tomorrow's schedule. Shows all lessons for the next school day. If tomorrow is a weekend, returns the next Monday's schedule. |
| get_class_timetableA | Fetch a class timetable. Can show any class at the school, not just the student's own. Useful for seeing religious instruction, split groups, comparing schedules between classes, or checking a friend's class. Use list_classes to discover available class names. Args: class_name: Class name like '1a', '2b', '3c' (default: student's own class) start_date: Start date in YYYY-MM-DD format (default: today) end_date: End date in YYYY-MM-DD format (default: start + 4 days) |
| list_classesA | List all classes at the school for the current school year. Returns class names that can be used with the get_class_timetable tool to fetch any class's schedule. |
| get_homeworkB | Fetch pending homework assignments. Returns homework with subject, teacher, description text, and due date. Args: days_ahead: Number of days to look ahead (default: 14) |
| get_examsA | Fetch upcoming exams and tests. Args: days_ahead: Number of days to look ahead (default: 30) |
| get_absencesC | Fetch registered absences for the student. Shows absence records with dates, times, reasons, excuse status, and any notes attached. Args: start_date: Start date in YYYY-MM-DD format (default: school year start) end_date: End date in YYYY-MM-DD format (default: school year end) |
| get_changesA | Detect timetable changes like cancellations, substitutions, and room swaps. Filters the timetable for lessons that have been modified from the original schedule. Args: start_date: Start date in YYYY-MM-DD format (default: today) end_date: End date in YYYY-MM-DD format (default: start + 4 days) |
| get_messagesB | Fetch messages of the day from the school. Returns announcements, notices, and information messages published by the school for a specific date. Args: target_date: Date in YYYY-MM-DD format (default: today) |
| get_school_infoA | Fetch school metadata including period times, holidays, and last data import. Useful for understanding the school's schedule structure and upcoming free days. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 11 tools
get_today and get_tomorrow are essentially convenience wrappers around get_timetable with fixed date ranges, and get_changes overlaps with get_timetable (whose description already promises cancellations/substitutions/room swaps). Descriptions provide useful context, but an agent must still reason about when to prefer the specialized tool over the general one.
Nearly every tool follows the get_<noun> pattern (get_timetable, get_homework, get_exams, etc.), with list_classes as the only variant, which is still a clean verb_noun convention. No mixing of camelCase/snake_case or vague verbs.
11 tools is well-scoped for a school information server, with each covering a distinct data domain (timetable, homework, exams, absences, messages, metadata). No padding or redundancy at the count level.
The surface covers the core student life domains: schedules, classes, homework, exams, absences, messages, and school metadata. Grades/report cards and any write operations (e.g., excusing absences) are absent, but read-only coverage is largely complete.