Edupage MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| EDUPAGE_PASSWORD | Yes | Your Edupage password | |
| EDUPAGE_USERNAME | Yes | Your Edupage username | |
| EDUPAGE_SUBDOMAIN | Yes | The subdomain of your school's Edupage URL (e.g., myschool for https://myschool.edupage.org) |
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 |
|---|---|
| loginA | Log in to Edupage using environment variables. No parameters needed if EDUPAGE_USERNAME, EDUPAGE_PASSWORD, and EDUPAGE_SUBDOMAIN are set. Supports multiple schools via comma-separated subdomains. Args: username: Your Edupage username (defaults to EDUPAGE_USERNAME env var) password: Your Edupage password (defaults to EDUPAGE_PASSWORD env var) subdomain: Your school's Edupage subdomain, or comma-separated list for multi-school (defaults to EDUPAGE_SUBDOMAIN env var) Returns: Success or error message |
| login_autoA | Log in to Edupage via the portal (auto-detect school). No parameters needed if EDUPAGE_USERNAME and EDUPAGE_PASSWORD are set. Args: username: Your Edupage username / email (defaults to EDUPAGE_USERNAME env var) password: Your Edupage password (defaults to EDUPAGE_PASSWORD env var) Returns: Success or error message |
| get_timetableA | Get the timetable for a given date (defaults to today). Args: date_str: Date in YYYY-MM-DD format. Leave empty for today. class_name: Class name (e.g. '6e', '4a'). If empty, uses logged-in user's timetable. student_name: Student name to look up their class timetable (e.g. 'Jan Novak'). Resolves the student's class automatically (searches all schools). school: School subdomain (only needed with multiple schools and no student_name). Returns: JSON array of lean timetable lessons |
| get_next_week_timetableA | Get timetable for each day of the upcoming week (Mon-Fri). Args: class_name: Class name (e.g. '6e', '4a'). If empty, uses logged-in user's timetable. student_name: Student name to look up their class timetable (searches all schools). school: School subdomain (only needed with multiple schools and no student_name). Returns: JSON object keyed by date with lean timetable lessons |
| get_timetable_changesA | Get timetable changes / substitutions for a date (defaults to today). Args: date_str: Date in YYYY-MM-DD format. Leave empty for today. school: School subdomain (only needed with multiple schools). Returns: JSON array of timetable changes |
| get_gradesA | Get student grades/marks. Returns grades for the current session's child. For parent accounts with multiple children, grades are for the child linked to the current session. Args: term: Term/semester filter (leave empty for all) year: School year filter (leave 0 for current) school: School subdomain (only needed with multiple schools). Returns: JSON array of lean grade records with percent, class_avg, etc. |
| get_my_childrenA | Get your children (for parent accounts) or classmates (for student accounts). Use this to find student names for use with other tools like get_timetable, get_absences, and get_student_summary. Args: school: School subdomain (only needed with multiple schools). Returns: JSON array of students with person_id, name, class_id, number |
| get_studentsB | Get students in your class. Args: school: School subdomain (only needed with multiple schools). Returns: JSON array of lean student records |
| get_all_studentsA | Get all students in the school (name + class only). Args: school: School subdomain (only needed with multiple schools). Returns: JSON array of student skeletons |
| get_teachersA | Get all teachers in the school. Args: school: School subdomain (only needed with multiple schools). Returns: JSON array of lean teacher records |
| get_classesA | Get all classes in the school. Args: school: School subdomain (only needed with multiple schools). Returns: JSON array of lean class records |
| get_classroomsA | Get all classrooms in the school. Args: school: School subdomain (only needed with multiple schools). Returns: JSON array of lean classroom records |
| get_homeworkA | Get homework assignments from the last N days. Extracts homework from the timeline/notification history. Args: since_days: How many days back to search (default 30) status: Filter by status — "active" (not done), "done", or "" (all, default) school: School subdomain (only needed with multiple schools). Returns: JSON array of homework items with title, subject, due_date, etc. |
| get_assignmentsA | Get all assignments (homework, tests, exams, projects, etc.) from the last N days. Args: since_days: How many days back to search (default 30) status: Filter by status — "active", "done", or "" (all, default) event_type: Narrow to specific types (comma-separated). Valid types: homework, etesthw, bexam, sexam, oexam, rexam, pexam, testing school: School subdomain (only needed with multiple schools). Returns: JSON array of assignment items |
| get_timelineA | Get the visible timeline (recent messages, assignments, grades). System events (H_* types) are hidden by default. Args: status: Filter by status — "active" (default), "done", or "all". starred: Filter by starred — "yes", "no", or "" (all). event_type: Raw type filter (comma-separated, e.g. "sprava,znamka"). category: Human-friendly category. One of: homework, grades, exams, messages, absences, events, news. Mutually exclusive with event_type. date_from: Start date (YYYY-MM-DD) for date range filter. date_to: End date (YYYY-MM-DD) for date range filter. limit: Max items to return (default 50). offset: Items to skip for pagination. include_system: Include system events like H_* types (default false). school: School subdomain (only needed with multiple schools). Returns: JSON array of lean timeline events |
| get_notificationsA | Get recent notifications. System events are hidden by default. Args: status: Filter — "active", "done", or "" (all, default). starred: Filter — "yes", "no", or "" (all). event_type: Raw type filter (comma-separated). category: Category filter: homework, grades, exams, messages, absences, events, news. limit: Max items (default 50). offset: Skip items for pagination. include_system: Include system events (default false). school: School subdomain (only needed with multiple schools). Returns: JSON array of lean notification events |
| get_notification_historyA | Get notification history since a given date. Args: since_date: Start date in YYYY-MM-DD format. Defaults to 7 days ago. status: Filter — "active", "done", or "" (all, default). starred: Filter — "yes", "no", or "" (all). event_type: Raw type filter (comma-separated). category: Category filter: homework, grades, exams, messages, absences, events, news. limit: Max items (default 50). offset: Skip items for pagination. include_system: Include system events (default false). school: School subdomain (only needed with multiple schools). Returns: JSON array of lean notification events |
| get_newsB | Get school news from the Edupage webpage. Args: school: School subdomain (only needed with multiple schools). Returns: JSON array of news items |
| get_mealsB | Get school meal information for a given date (defaults to today). Args: date_str: Date in YYYY-MM-DD format. Leave empty for today. school: School subdomain (only needed with multiple schools). Returns: JSON of meal data (snack, lunch, afternoon_snack) |
| send_messageA | Send a message to one or more Edupage users. ⚠️ Use with care – this sends real messages. Args: recipients: Comma-separated list of recipient names (must match teacher/student names exactly) body: The message text to send school: School subdomain (required when recipient exists in multiple schools). Returns: Success or error message |
| get_absencesA | Get absence records from the last N days. Args: since_days: How many days back to search (default 30) student_name: Optional student name to validate context (e.g. 'Jan Novak'). Searches all schools automatically. school: School subdomain (only needed with multiple schools and no student_name). Returns: JSON array of absence records with date, type, text, author |
| get_upcoming_eventsA | Get upcoming events and exams within the next N days. Args: days_ahead: How many days ahead to look (default 30) school: School subdomain (only needed with multiple schools). Returns: JSON array of upcoming events sorted by date (nearest first) |
| get_student_summaryA | Get a comprehensive summary for a student: grades, homework, exams, absences, and messages — all in one call. Args: student_name: Student name (e.g. 'Jan Novak'). Use get_my_children() to find names. Searches all schools automatically. since_days: How many days back to include (default 14) school: School subdomain (only needed when student exists in multiple schools). Returns: JSON object with student, class, grades, homework, exams, absences, messages |
| get_subjectsA | Get all subjects taught at the school. Args: school: School subdomain (only needed with multiple schools). Returns: JSON array of lean subject records |
| get_periodsA | Get school period / bell schedule information. Args: school: School subdomain (only needed with multiple schools). Returns: JSON array of periods with start/end times |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/mhlavac/edupage-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server