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) |
Capabilities
Features and capabilities supported by this server
| 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
- 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