Read-only EduPage MCP server for timetables, grades, notifications, meals, and school metadata
Project description
edupage-mcp
edupage-mcp is a read-only MCP server for EduPage. It lets MCP clients and agents query timetable data, grades, notifications, meals, and school metadata through the edupage-api library.
Supported Features
Supported tools:
get_timetableget_gradesget_notificationsget_teachersget_studentsget_classesget_subjectsget_mealsget_substitutionsget_timetable_changes
Experimental tool:
get_missing_teachers
get_missing_teachers is exposed, but some schools block teacher substitution visibility entirely, so it may return an availability message instead of teacher data.
Requirements
- Python
3.10+ uv- An EduPage account
- EduPage 2FA disabled
- Your school subdomain from
https://<subdomain>.edupage.org
Environment variables:
EDUPAGE_USERNAME=your_username
EDUPAGE_PASSWORD=your_password
EDUPAGE_SUBDOMAIN=your_school_subdomain
Run It
Install and run from PyPI with uvx:
uvx edupage-mcp
For local development:
uv sync
uv run edupage-mcp
The server uses stdio transport, so it is meant to be launched by an MCP client.
MCP Setup
OpenCode
Add this to ~/.config/opencode/opencode.json or project opencode.json:
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"edupage": {
"type": "local",
"command": ["uvx", "edupage-mcp"],
"environment": {
"EDUPAGE_USERNAME": "your_username",
"EDUPAGE_PASSWORD": "your_password",
"EDUPAGE_SUBDOMAIN": "your_school_subdomain"
}
}
}
}
Claude Desktop
Add this to your Claude Desktop MCP config:
{
"mcpServers": {
"edupage": {
"command": "uvx",
"args": ["edupage-mcp"],
"env": {
"EDUPAGE_USERNAME": "your_username",
"EDUPAGE_PASSWORD": "your_password",
"EDUPAGE_SUBDOMAIN": "your_school_subdomain"
}
}
}
}
Tool Summary
| Tool | Parameters | Description |
|---|---|---|
get_timetable |
date_str |
Timetable for a date. Defaults to today. |
get_grades |
year, term |
Grades, optionally filtered by school year and term. |
get_notifications |
date_from |
Notifications, optionally from a given date onward. |
get_teachers |
none | Teachers at the school. |
get_students |
none | Students in the logged-in student's class. |
get_classes |
none | School classes. |
get_subjects |
none | School subjects. |
get_meals |
date_str |
Meal menu for a date. Defaults to today. |
get_substitutions |
date_str |
Raw substitution rows for a date. Defaults to today. |
get_timetable_changes |
date_str |
Timetable changes for a date. Defaults to today. |
get_missing_teachers |
date_str |
Absent teachers for a date. Experimental. |
Limitations
- Read-only only
- No 2FA support
- Parent and teacher accounts are not verified
- Depends on upstream
edupage-apibehavior
Acknowledgements
This project would not be possible without the upstream edupage-api library:
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file edupage_mcp-0.1.1.tar.gz.
File metadata
- Download URL: edupage_mcp-0.1.1.tar.gz
- Upload date:
- Size: 14.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
866af22594b817113b24e3cc891f92575916cb11a88305662c8cfc9902f1968d
|
|
| MD5 |
964f32d94795d10fa51ae1139aa3e799
|
|
| BLAKE2b-256 |
31959cd1cbd541b22a7e16caaa7cc9f3524ed492066c2a43305a26b41bdea3fd
|
File details
Details for the file edupage_mcp-0.1.1-py3-none-any.whl.
File metadata
- Download URL: edupage_mcp-0.1.1-py3-none-any.whl
- Upload date:
- Size: 14.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
11fca47454b892daceed1c14eebbfe42fc99e52172751020d904d1bec9e5f08c
|
|
| MD5 |
b09335879061e85d7b6163f21efa2082
|
|
| BLAKE2b-256 |
f70c1478f17e9e3293396fcce94f1be85f3e7ae3516be698503577523c0a2f97
|