Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
作者提供的说明(英文原文)
EduPage timetables, grades, homework and messages; session in the OS Credential Store, no password.
这三项永远不会合并成一个分数:意见、测量和人气是不同的东西。
我们还没有为它写通俗的介绍。下面是我们从注册中心读取到的事实。
选择你使用的 AI 应用,然后复制设置。
EDUPAGE_USERNAME你需要
你用的是哪个应用?
在上方选择你的应用。我们会记住它,下次按钮会显示“安装到 …”。
打开 Claude Desktop → Settings → Developer → Edit Config,把下面的内容粘贴到 claude_desktop_config.json
{
"mcpServers": {
"edupage-keyring": {
"command": "uvx",
"args": [
"edupage-keyring-mcp",
"--school"
],
"env": {
"EDUPAGE_USERNAME": "your-value"
}
}
}
}在终端中运行这条命令
claude mcp add edupage-keyring --env EDUPAGE_USERNAME=your-value -- uvx edupage-keyring-mcp --school运行前请先填写空着的值。
这个服务器需要在启动命令中填入值,请复制设置后自行填写。
粘贴到项目中的 .cursor/mcp.json,或 ~/.cursor/mcp.json
{
"mcpServers": {
"edupage-keyring": {
"command": "uvx",
"args": [
"edupage-keyring-mcp",
"--school"
],
"env": {
"EDUPAGE_USERNAME": "your-value"
}
}
}
}浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。
这个服务器需要在启动命令中填入值,请复制设置后自行填写。
粘贴到项目中的 .vscode/mcp.json
{
"servers": {
"edupage-keyring": {
"type": "stdio",
"command": "uvx",
"args": [
"edupage-keyring-mcp",
"--school"
],
"env": {
"EDUPAGE_USERNAME": "your-value"
}
}
}
}浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。
这个服务器在你的电脑上运行,而 ChatGPT 只能连接互联网上的服务器。请选择其他应用。
你的选择通过 Cookie 保存在这台设备上,无需账户。
EDUPAGE_USERNAME env这些设置是根据作者在注册中心的条目生成的。如果 README 的写法不同,请以 README 为准。
它在你的电脑上运行;安装后,工具列表会显示在你的 AI 应用中。
我们检查的是任何人都能看到的信息;我们没有阅读代码。不适用的检查项不计入总数。 · 检查于 2026年11月8日
注册名称已通过 GitHub 账户 stefanbackor 验证,该账户拥有此仓库
我们还没有从 GitHub 读取这个仓库
我们还没有从 GitHub 读取这个仓库
它在你的电脑上运行,没有互联网端点
在你的电脑上运行,改用本地设置
它在你的电脑上运行;我们只能读取互联网端点的工具列表
与注册中心里这个分类中所有活跃的服务器比较。只有当发布者拥有该仓库时,星标数才计入。
它在 1 项适用的基础检查中通过了 1 项。我们没有阅读代码。在添加密钥或令牌之前,请先看看这个服务器要求哪些权限,并使用只具备所需权限的密钥。
注册中心没有列出必需的密钥,不过有些服务器会在首次使用时要求你登录。
它在你的电脑上运行。你的 AI 应用会在需要时启动它,数据不会经过作者的服务器(除非它自己调用在线服务)。
GitHub 仓库最后更新于–,最新版本(0.6.0)于3天前进入注册中心。
支持 MCP 的应用,例如 Claude Desktop、Claude Code、Cursor 和 VS Code。你的电脑上还需要有 Python (uv)。
同一分类中有:Spec Driven Development, Remote Desktop Commander, Egovframe Scaffold MCP
同一分类中其他作者的服务器,按星标数排序。
如何看卡片:↓ 每周下载量i★ GitHub 星标i三大支柱:评价 · 检查 · 使用情况i更新 = 最新版本发布到注册中心的时间i
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
eGovFrame (전자정부 표준프레임워크) projects: templates, components, CRUD, build, 5.x migration, dependencies
按原文从作者的仓库复制。PopNx MCP 没有审查或背书其内容。HTML、图片和脚本已被移除。链接会离开本站。
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 EduPage's session cookie (PHPSESSID) is kept, in your computer's Credential Store: the macOS Keychain, or Windows Credential Manager (Windows support is beta). Built on edupage-api.
edupage-keyring-mcp.mcpb from the latest release..edupage.org, or your school's EduPage address. Several schools: separate them with commas (first, second); the first is the default. Two accounts at one school: myschool=teacher (see Options).You need macOS or Windows (beta, see Windows) and Google Chrome. Nothing else to install: when the extension is installed, Claude Desktop downloads its own copy of uv, which sets up Python and the extension's dependencies. The extension runs on your computer like any local MCP server, with the same Saved Sessions in the Credential Store. Then go on with Ask something.
Updates are manual. The extension does not update itself. To get a new
version, download
edupage-keyring-mcp.mcpbfrom the link above again and
install it over the old one. Want updates on every restart instead? Use
uvx.
You need macOS or Windows (beta), Google Chrome, and uv:
brew install uv # or: curl -LsSf https://astral.sh/uv/install.sh | sh
On Windows, see Windows.
Nothing else to install: uvx downloads this server from PyPI and runs it in its own isolated environment.
Desktop apps need the full path to uvx; get it with which uvx (Windows: where uvx). It is usually /opt/homebrew/bin/uvx (Homebrew), /Users/YOU/.local/bin/uvx (installer script) or C:\Users\YOU\.local\bin\uvx.exe (Windows). Replace myschool with your school: the name before .edupage.org, or simply your school's whole EduPage address, such as https://myschool.edupage.org.
Claude Desktop: open Settings → Local MCP servers → Edit Config (older versions: Settings → Developer → Edit Config) and add:
{
"mcpServers": { "edupage": { "command": "/opt/homebrew/bin/uvx", "args": ["edupage-keyring-mcp@latest", "--school", "myschool"] } } }
Quit Claude Desktop (⌘Q on macOS; on Windows, quit it from the system tray) and reopen it.
Claude Code:
claude mcp add edupage --scope user -- uvx edupage-keyring-mcp@latest --school myschool
Codex CLI:
codex mcp add edupage -- uvx edupage-keyring-mcp@latest --school myschool
Cursor: add the Claude Desktop JSON above to ~/.cursor/mcp.json.
VS Code: .vscode/mcp.json, or MCP: Open User Configuration:
{
"servers": { "edupage": { "type": "stdio", "command": "/opt/homebrew/bin/uvx", "args": ["edupage-keyring-mcp@latest", "--school", "myschool"] } } }
Any other client: run uvx edupage-keyring-mcp@latest --school myschool as a stdio server.
Ask Claude about school, for example "What's on the timetable tomorrow?". The first time, Claude opens your school's EduPage in a Chrome window (Claude Desktop asks you first). Sign in there the way you always do: password, two-factor or QR code. The window closes by itself, the session is saved to the Credential Store, and Claude answers. If macOS asks whether Python may use the Keychain, choose Always Allow.
Prefer to sign in before connecting a client? Run uvx edupage-keyring-mcp login myschool (this works for the Claude Desktop extension too: both use the same Saved Session).
Add these to the args list (or after --school myschool on the command line). The Claude Desktop extension has only the School and Keep-alive fields, so of these it takes several schools and account labels, written in the School field, and the keep-alive.
--school: "--school", "first", "--school", "second", or separate them with commas: "--school", "first,second". The first is the default. A school without a saved session reports AUTH_REQUIRED and does not affect the others."--school", "myschool=teacher", and sign in to each once. The label only names its Credential Store entry."--no-browser-signin". sign_in then reports SIGNIN_UNAVAILABLE, and you sign in with login in a terminal (see Command line)."--keep-alive", "90" (5 to 120; smaller values count as 5), or turn it off with "--keep-alive", "0". It never opens a school you haven't used since the client started and never opens a sign-in window. If EduPage has ended the session anyway, the server stops for that school until you next use it, and the server log gets one line with the school and status code. It only runs while the client is open and the computer is awake: after a night asleep you may still need to sign in again. In the Claude Desktop extension, this is the Keep-alive (minutes) field.get_attachment reports REDIRECT_NOT_ALLOWED, allow that exact host with "--download-host", "cloud-4.edupage.org". Only *.edupage.org hosts are accepted.@latest makes uvx check PyPI each time the client starts the server, so a new release is picked up on the next client restart.edupage-keyring-mcp.mcpb and install it over the old one.What changed is on the releases page.
Windows support is beta until someone has done a full sign-in on a real Windows machine; please report how it goes.
winget install --id=astral-sh.uv -e, or powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"). uv fetches Python itself; an existing Python 3.10 or newer works too.edupage-keyring-mcp (or run uvx edupage-keyring-mcp logout myschool).A session lasts until EduPage expires it, which it does after about 2 hours without use. While your client is open, the keep-alive prevents that. Once it has expired anyway (say, after the computer slept), Claude does the same as the first time: it gets AUTH_REQUIRED and asks whether it may open the sign-in. If you agree, it calls sign_in, and a Chrome window opens on your school's EduPage. While you sign in, Claude waits with wait_for_sign_in, which returns as soon as you're done, and carries on with your question. No restart is needed, and you don't have to tell Claude you're done. The window waits up to 10 minutes.
Set up before version 0.2 with EDUPAGE_USERNAME? Keep it to go on using the session you saved then, or remove it and sign in once more.
edupage-keyring-mcp [serve] --school NAME[=LOGIN] [--school ...] [--download-host HOST] [--no-browser-signin]
[--keep-alive MINUTES] 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
Run each with uvx edupage-keyring-mcp@latest ..., also when you use the Claude Desktop extension: the commands work on the same Saved Sessions. logout removes the local session only; EduPage itself is not logged out. probe is handy when reporting a problem: its output contains no school data.
36 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.
| Tool | Returns |
|---|---|
auth_status | Whether the saved session works, and how a sign-in started by sign_in went |
sign_in | Opens EduPage's sign-in page in Chrome when the session is missing or expired |
wait_for_sign_in | Waits (up to 50 s per call) for that sign-in to finish, then reports the new session |
list_schools | Schools, session status, role (parent, student, teacher), number of children |
list_children | Your children: name, class, student ID, ref |
user_id, school_year | Account ID and role; current school year |
| Tool | Returns |
|---|---|
get_timetable | A child's lessons for a date, with substitutions applied: times, subject, teacher, room, group, topic, cancelled flag |
get_week_timetable | Monday to Friday for a child |
get_timetable_for | Timetable of any teacher, class, classroom or student |
get_periods, get_next_ringing_time | Bell schedule; next lesson or break |
get_timetable_changes | School-wide substitutions and cancellations for a date |
get_missing_teachers | Teachers absent on a date |
| Tool | Returns |
|---|---|
get_grades | Subject, title, grade, comment, weight, points and percent, class average, teacher; current or a past term |
get_homework | Homework with full text, subject, author and due date |
get_assignments | Homework, tests and exams |
get_upcoming_events | Tests announced as events (topic and date), trips, meetings, holidays |
get_absences | Absences, excuses, arrival and departure scans |
get_news | School news |
get_notifications | Any 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, item
只显示了开头部分;其余内容请在仓库中阅读