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는 인터넷에 있는 서버에만 연결할 수 있어요. 다른 앱을 고르세요.
선택한 앱은 이 기기의 쿠키에만 저장돼요. 계정은 필요 없어요.
EDUPAGE_USERNAME env이 설정은 제작자의 레지스트리 정보로 만들었어요. README와 다르면 README를 따르세요.
내 컴퓨터에서 실행돼요. 설치하면 AI 앱에 도구 목록이 나타나요.
누구나 볼 수 있는 정보를 점검했고, 코드는 읽지 않았어요. 해당하지 않는 항목은 개수에서 뺐어요. · 2026년 11월 7일 점검
레지스트리 이름이 GitHub 계정 stefanbackor 기준으로 확인되었고, 이 계정이 저장소를 소유하고 있어요
아직 GitHub에서 이 저장소를 읽어 오지 않았어요
아직 GitHub에서 이 저장소를 읽어 오지 않았어요
내 컴퓨터에서 실행되는 서버라 인터넷 엔드포인트가 없어요
내 컴퓨터에서 실행되며, 대신 로컬 설정을 사용해요
내 컴퓨터에서 실행돼요. 도구 목록은 인터넷 엔드포인트가 있는 서버에서만 읽을 수 있어요
레지스트리에서 이 카테고리의 활성 서버 전체와 비교했어요. 스타는 게시자가 저장소를 소유한 경우에만 세요.
해당하는 기본 점검 1개 중 1개를 통과했어요. 코드는 읽지 않았어요. 키나 토큰을 넣기 전에 서버가 어떤 권한을 요구하는지 확인하고, 꼭 필요한 권한만 있는 키를 쓰세요.
레지스트리에 필수 키가 나와 있지 않아요. 다만 처음 쓸 때 로그인을 요구하는 서버도 있어요.
내 컴퓨터에서 실행돼요. AI 앱이 필요할 때 실행하고, 데이터는 제작자의 서버를 거치지 않아요(서버 자체가 온라인 서비스를 호출하는 경우는 제외).
GitHub 저장소는 마지막으로 – 변경됐고, 최신 버전(0.6.0)은 그저께 레지스트리에 올라왔어요.
Claude Desktop, Claude Code, Cursor, VS Code처럼 MCP를 지원하는 앱에서 쓸 수 있어요. 내 컴퓨터에 Python (uv)도 있어야 해요.
같은 카테고리에는: Spec Driven Development, Remote Desktop Commander, Signoff
같은 카테고리에서 다른 제작자가 만든 서버예요. 스타 순으로 정렬했어요.
카드 보는 법:★ 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.
Five gates that make an agent's 'done' provable: run them, read the verdict, audit the record.
제작자의 저장소에서 쓰인 그대로 가져왔어요. 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
앞부분만 보여 드려요. 나머지는 저장소에서 읽어 보세요