Edupage Mcp — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Edupage Mcp (MCP Server) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
MCP server that connects Claude to Edupage — a school information system used across Europe. Provides access to timetables, grades, homework, messages, students, teachers, and more.
cd /path/to/edupage-mcp
uv syncOr if you prefer a one-liner without cloning:
uv pip install "mcp>=1.2.0" "edupage-api>=0.12.3"The easiest way — just open the project folder and the .mcp.json will be picked up automatically. Set environment variables first:
export EDUPAGE_USERNAME=your_user
export EDUPAGE_PASSWORD=your_pass
export EDUPAGE_SUBDOMAIN=your_schoolOr add the server manually:
claude mcp add edupage -- uv run --directory /path/to/edupage-mcp python -m edupage_mcpWith auto-login via environment variables:
claude mcp add --env EDUPAGE_USERNAME=your_user --env EDUPAGE_PASSWORD=your_pass --env EDUPAGE_SUBDOMAIN=your_school edupage -- uv run --directory /path/to/edupage-mcp python -m edupage_mcpAdd to your Claude Desktop config (~/Library/Application Support/Claude/claude_desktop_config.json on macOS):
{
"mcpServers": {
"edupage": {
"command": "uv",
"args": ["run", "--directory", "/path/to/edupage-mcp", "python", "-m", "edupage_mcp"],
"env": {
"EDUPAGE_USERNAME": "your_username",
"EDUPAGE_PASSWORD": "your_password",
"EDUPAGE_SUBDOMAIN": "your_school"
}
}
}
}Use the .mcp.json file included in this repo — just set the environment variables.
Two options:
EDUPAGE_USERNAME, EDUPAGE_PASSWORD, and EDUPAGE_SUBDOMAIN. The server logs in automatically at startup.login or login_auto tool at the start of your session.The subdomain is the part before .edupage.org in your school's URL (e.g. myschool for https://myschool.edupage.org).
| Tool | Description |
|---|---|
login | Log in with username, password, subdomain |
login_auto | Log in via portal (auto-detect school) |
get_timetable | Get timetable for a date |
get_next_week_timetable | Get Mon-Fri timetable for next week |
get_timetable_changes | Get substitutions / changes for a date |
get_grades | Get student grades/marks |
get_students | Get students in your class |
get_all_students | Get all students in the school |
get_teachers | Get all teachers |
get_classes | Get all classes |
get_classrooms | Get all classrooms |
get_homework | Get homework assignments |
get_assignments | Get all assignments (homework, tests, etc.) |
get_timeline | Get recent timeline items |
get_notifications | Get recent notifications |
get_notification_history | Get notifications since a date |
get_news | Get school news |
get_meals | Get meal information |
send_message | Send a message to users |
get_subjects | Get all subjects |
get_periods | Get bell schedule / periods |
get_my_children | Get children linked to a parent account |
get_absences | Get student absences |
get_upcoming_events | Get upcoming school events (filters on the real event date parsed from the title, not the post date) |
get_student_summary | All-in-one summary: grades, homework, exams, absences |
get_school_days | Per-date "is the kid at school over lunch?" view fusing trips, excursions, and absences (⚠️ holidays NOT covered) |
edupage-mcp/
├── CLAUDE.md # Developer guide
├── pyproject.toml # Package config (uv/hatch)
├── .mcp.json # Claude Code project config
├── .env.example # Example environment variables
└── src/
└── edupage_mcp/
├── __init__.py
├── __main__.py
└── server.py # MCP server implementationRun the server directly for testing:
uv run python -m edupage_mcpTest with MCP Inspector:
npx @modelcontextprotocol/inspector uv run python -m edupage_mcpmcp >= 1.2.0 — Model Context Protocol Python SDKedupage-api >= 0.12.3 — Unofficial Edupage API client (GitHub)send_message tool sends real messages — use with carepost date (when the announcement was published) in their timestamp; the real event date lives in the title (e.g. Udalosť: Sternwarte - 17.06.2026). get_upcoming_events parses that title date and filters on it, so events announced months ahead still surface. get_timeline / get_notifications expose an opt-in by_event_date flag to apply their date range to the parsed event date instead of the timestamp.
and absences only. Public / Brandenburg state holidays and school-closure days are not reliably present in Edupage data, so undisrupted days come back in_school: null (unknown), never true. Cross-check a public-holiday source or the caterer's menu before assuming a child is at school.
This project is licensed under the GPL-3.0-or-later — see the LICENSE file for details.
The edupage-api dependency is GPL-3.0 licensed, which requires derivative works to use a compatible license.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.