Skip to main content

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_timetable
  • get_grades
  • get_notifications
  • get_teachers
  • get_students
  • get_classes
  • get_subjects
  • get_meals
  • get_substitutions
  • get_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-api behavior

Acknowledgements

This project would not be possible without the upstream edupage-api library:

https://github.com/EdupageAPI/edupage-api

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

edupage_mcp-0.1.1.tar.gz (14.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

edupage_mcp-0.1.1-py3-none-any.whl (14.8 kB view details)

Uploaded Python 3

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

Hashes for edupage_mcp-0.1.1.tar.gz
Algorithm Hash digest
SHA256 866af22594b817113b24e3cc891f92575916cb11a88305662c8cfc9902f1968d
MD5 964f32d94795d10fa51ae1139aa3e799
BLAKE2b-256 31959cd1cbd541b22a7e16caaa7cc9f3524ed492066c2a43305a26b41bdea3fd

See more details on using hashes here.

File details

Details for the file edupage_mcp-0.1.1-py3-none-any.whl.

File metadata

File hashes

Hashes for edupage_mcp-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 11fca47454b892daceed1c14eebbfe42fc99e52172751020d904d1bec9e5f08c
MD5 b09335879061e85d7b6163f21efa2082
BLAKE2b-256 f70c1478f17e9e3293396fcce94f1be85f3e7ae3516be698503577523c0a2f97

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page