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_timetable_changes

Experimental tool:

  • get_missing_teachers

get_missing_teachers is exposed, but it is currently unreliable because of an upstream edupage-api parsing issue on some schools.

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_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

Publish

Build the package:

uv build

Publish manually:

uv publish

Or with a token:

UV_PUBLISH_TOKEN=your-pypi-token uv publish

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.0.tar.gz (11.3 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.0-py3-none-any.whl (11.6 kB view details)

Uploaded Python 3

File details

Details for the file edupage_mcp-0.1.0.tar.gz.

File metadata

  • Download URL: edupage_mcp-0.1.0.tar.gz
  • Upload date:
  • Size: 11.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.7

File hashes

Hashes for edupage_mcp-0.1.0.tar.gz
Algorithm Hash digest
SHA256 cb6df059cfaab675a0e47ee20b61433e23df454bc65252c0d26ca4f1983bd266
MD5 b7698adacb41ce44127e74f5bb76f19b
BLAKE2b-256 1cb2f4ce6f4e46cb1159875fd561dcafe7e3a3bf7823977a41b5c176e9996312

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for edupage_mcp-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 fd840ddc180074b854b51475f13187181decabef5a17252e192a5c6a255ab98c
MD5 97f7ccc507ef564aa10a88d4f4f47ad2
BLAKE2b-256 e5b4beb1d5116ccda2b7b3824bf21c081d1ac84f9c4fe9e0012ffcf2d634818d

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