EduPage Keyring

السجل الرسمي أخرى

EduPage timetables, grades, homework and messages; session in the OS Credential Store, no password.

ماذا يمكنك أن تفعل مع EduPage Keyring؟

  • "What does each kid have tomorrow, and what's due this week?"
  • "Any tests coming up for Šimon? Which topics?"
  • "How are Ema's grades in Slovak this term?"
  • "Did Peter get to school on time today?"
  • "Summarize what the school sent in the last two weeks and flag anything I must act on."
  • "Which of today's lessons are substituted for 5.C?"
  • "Tell the class teacher that Ema will be absent on Friday." (Claude Desktop asks before sending)

التثبيت

أضف هذا إلى إعدادات MCP في عميلك (Claude Desktop: claude_desktop_config.json، وCursor: ‏.cursor/mcp.json، ويستخدم VS Code وغيره الصيغة نفسها «mcpServers»).

PYPI package edupage-keyring-mcp
Claude Code
claude mcp add edupage-keyring -e 'EDUPAGE_USERNAME=<EDUPAGE_USERNAME>' -- uvx edupage-keyring-mcp==0.5.0 --school '<school>'
إعداد JSON (Claude Desktop وCursor وVS Code)
{
    "mcpServers": {
        "edupage-keyring": {
            "command": "uvx",
            "args": [
                "edupage-keyring-mcp==0.5.0",
                "--school",
                "<school>"
            ],
            "env": {
                "EDUPAGE_USERNAME": "<EDUPAGE_USERNAME>"
            }
        }
    }
}

متغيرات البيئة

  • EDUPAGE_USERNAME Optional. Only to keep two EduPage accounts at the same school apart. The password is never configured.

التوثيق

مأخوذ من ملف README للمشروع على GitHub ويُحدَّث أسبوعيًا. تفتح الروابط على GitHub.

المحتويات
  1. EduPage Keyring MCP
  2. What you can ask
  3. Why this one
  4. Install
  5. Connect Claude Desktop
  6. Features
  7. Security model
  8. Commands
  9. Development
  10. Credits
  11. License

EduPage Keyring MCP

An MCP server that lets Claude (or any MCP client) read your EduPage school account: timetables, grades, homework, tests, absences, messages, menus and more, for every child and school you have, without ever storing your password.

You sign in once per school in Chrome, on EduPage's own page, two-factor included. Only the resulting session cookies are kept, in the macOS Keychain. Built on edupage-api.

Unofficial. Not affiliated with EduPage or aSc Applied Software Consultants. EduPage's web endpoints are undocumented and can change without notice. macOS only.

What you can ask

  • "What does each kid have tomorrow, and what's due this week?"
  • "Any tests coming up for Šimon? Which topics?"
  • "How are Ema's grades in Slovak this term?"
  • "Did Peter get to school on time today?"
  • "Summarize what the school sent in the last two weeks and flag anything I must act on."
  • "Which of today's lessons are substituted for 5.C?"
  • "Tell the class teacher that Ema will be absent on Friday." (Claude Desktop asks before sending)

Why this one

edupage-keyring-mcpTypical EduPage MCP servers
PasswordNever stored; typed only into EduPage in ChromeEDUPAGE_PASSWORD in a config file
Two-factor loginYes, on EduPage's own pageOften unsupported or tool-driven
Several childrenMatched by name; every timeline item says which child it is forVaries
Several schoolsYes, one Keychain session eachVaries
NetworkConfined to your school's host; every redirect checked; responses cappedLibrary defaults
Writes4 actions, marked destructive so clients ask first; inputs checkedOften none, or a raw-request tool
ErrorsFixed status codes; never server pagesRaw exception text
DependenciesExact pins plus a hashed uv.lockRanges

Install

Requirements: macOS, Google Chrome, and uv.

export EDUPAGE_USERNAME='you@example.com'      # your EduPage login name (not secret)
uvx edupage-keyring-mcp login myschool        # myschool = the part before .edupage.org

Chrome opens on your school's login page. Sign in there, including any two-factor prompt. When EduPage shows your account, the window closes and the session is saved to the Keychain. If macOS asks whether Python may use the Keychain, choose Always Allow.

Check it:

uvx edupage-keyring-mcp status --school myschool

A session lasts until EduPage expires it. Tools then return AUTH_REQUIRED (or SESSION_EXPIRED); run login again. EDUPAGE_USERNAME only labels the Keychain entry; the login name EduPage itself reports is stored at sign-in.

Connect Claude Desktop

Open Settings → Local MCP servers → Edit Config (older versions: Settings → Developer → Edit Config) and add:

{
  "mcpServers": {
    "edupage": {
      "command": "/Users/YOU/.local/bin/uvx",
      "args": ["edupage-keyring-mcp", "--school", "myschool"],
      "env": { "EDUPAGE_USERNAME": "you@example.com" }
    }
  }
}

Use the output of which uvx as command. Quit Claude Desktop (⌘Q) and reopen it.

  • Several schools: repeat --school: "--school", "first", "--school", "second". The first is the default. A school without a saved session reports AUTH_REQUIRED and does not affect the others.
  • Different login at one school: "--school", "second=other@example.com".
  • Attachments on EduPage file servers: if get_attachment reports REDIRECT_NOT_ALLOWED, allow that exact host with "--download-host", "cloud-4.edupage.org". Only *.edupage.org hosts are accepted.

Other MCP clients: run edupage-keyring-mcp --school myschool as a stdio server.

Features

34 tools. Each takes an optional school. Child tools take child: a first name (accents optional, so simon finds Šimon), full name, student ID, or the ref from list_children.

Account and children
ToolReturns
auth_statusWhether the saved session works
list_schoolsSchools, session status, role (parent, student, teacher), number of children
list_childrenYour children: name, class, student ID, ref
user_id, school_yearAccount ID and role; current school year
Timetables
ToolReturns
get_timetableA child's lessons for a date, with substitutions applied: times, subject, teacher, room, group, topic, cancelled flag
get_week_timetableMonday to Friday for a child
get_timetable_forTimetable of any teacher, class, classroom or student
get_periods, get_next_ringing_timeBell schedule; next lesson or break
get_timetable_changesSchool-wide substitutions and cancellations for a date
get_missing_teachersTeachers absent on a date
Grades and the timeline
ToolReturns
get_gradesSubject, title, grade, comment, weight, points and percent, class average, teacher; current or a past term
get_homeworkHomework with full text, subject, author and due date
get_assignmentsHomework, tests and exams
get_upcoming_eventsTests announced as events (topic and date), trips, meetings, holidays
get_absencesAbsences, excuses, arrival and departure scans
get_newsSchool news
get_notificationsAny timeline item, optionally by EduPage type (znamka, homework, ...)

Timeline tools look back up to 90 days (default 30). Every item has for_children: which of your children it is addressed to, by name or class. With child set, items addressed to a sibling are left out.

Messages
ToolReturns
list_messagesMessages with sender, recipient, for_children, snippet, number of files
get_messageFull text and the files attached; no read receipt is sent
get_attachmentA PDF, PNG, JPEG or GIF attached to a message, up to 3 MB, base64
People and school data

get_students, get_all_students, find_student, get_teachers (IDs for send_message), get_classes, get_classrooms, get_subjects.

Meals

get_meals: a child's menu, allergens and current order, or MEALS_NOT_AVAILABLE when the school has no canteen module.

Actions
ToolDoesChecks
send_messageSends an EduPage message as youRecipient must be a real teacher, student or parent ID; 1 to 5,000 characters
choose_mealOrders menu A to H for a childMeal type, date within 30 days, menu must be choosable
sign_off_mealCancels a child's mealMeal type, date
rate_mealRates a served lunch 1 to 5Lunch only, last 14 days

These are marked destructiveHint; clients such as Claude Desktop ask before each call.

Security model

  • No password anywhere. It is typed only into EduPage's page in a throwaway Chrome window. The Keychain item holds EduPage session cookies, the account ID and the login name EduPage reports. The server refuses to start if any EDUPAGE_* environment variable other than EDUPAGE_USERNAME is set.
  • Keychain only. On anything but the macOS Keychain backend the server refuses to run, so sessions never land in a plaintext keyring file.
  • Confined network. edupage-api gets a replacement session that allows HTTPS to your configured school host only, checks every redirect hop, caps every response at 8 MB (attachments at 3 MB) and ignores proxy and .netrc settings. Cookies loaded from the Keychain are validated for that host first.
  • Narrow inputs. No tool accepts a URL, cookie, session ID, header or password. Dates are ISO and window-limited. school only picks a configured school. Attachments are fetched by file id; the model never sees their URLs.
  • Child switching is verified. For parent accounts, child-scoped calls switch to the child and back under a per-school lock, then re-check that the session is the parent again; otherwise it is dropped and recovered before reuse.
  • Quiet errors. Failures return fixed codes (and at most an exception class name), never server pages or messages.
  • Untrusted content. All school text is labelled untrusted_content.
  • Pinned dependencies. Exact versions in pyproject.toml, hashes in uv.lock.

Reading can still be visible to EduPage, like opening a page in the browser.

See SECURITY.md to report a vulnerability.

Commands

edupage-keyring-mcp [serve] --school NAME[=LOGIN] [--school ...] [--download-host HOST]
edupage-keyring-mcp login NAME [--username LOGIN] [--timeout SECONDS]
edupage-keyring-mcp logout NAME [--username LOGIN]
edupage-keyring-mcp status --school NAME [...]
edupage-keyring-mcp probe --school NAME [...]   # every read tool once; statuses and counts only

logout removes the local session only; EduPage itself is not logged out.

Development

git clone https://github.com/stefanbackor/edupage-keyring-mcp
cd edupage-keyring-mcp
uv sync --locked
uv run pytest

Tests use synthetic data only and never touch the network or the Keychain. Upgrading a dependency means changing its pin in pyproject.toml, running uv lock, and reviewing the diff.

Credits

Built on edupage-api (GPL-3.0). Tool coverage follows Arnost55/edupage-mcp-full.

License

GPL-3.0-or-later. Copyright © 2026 Stefan Backor.

الأسئلة الشائعة

ما هو EduPage Keyring؟

EduPage timetables, grades, homework and messages; session in the OS Credential Store, no password.

كيف أثبّت EduPage Keyring؟

يعمل على جهازك. في Claude Code: claude mcp add edupage-keyring -e 'EDUPAGE_USERNAME=<EDUPAGE_USERNAME>' -- uvx edupage-keyring-mcp==0.5.0 --school '<school>'. وفي العملاء الآخرين، الصق إعداد JSON من هذه الصفحة في إعدادات MCP الخاصة بهم.

هل يحتاج EduPage Keyring إلى مفتاح API؟

لا يذكر إدراجه في السجل أي مفتاح أو سر إلزامي. قد تتطلب بعض الميزات حسابًا لدى الخدمة التي يتصل بها.

هل EduPage Keyring مفتوح المصدر؟

نعم. شيفرته متاحة على GitHub بترخيص GPL-3.0.

من يصون EduPage Keyring؟

ينشره stefanbackor. يدرجه AI.tn لكنه لا يصونه ولا يوصي به.

من سجل MCP الرسمي. الإدراج ليس توصية: راجع شيفرة الخادم وصلاحياته قبل منحه الوصول إلى بياناتك.