sio-mcp
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@sio-mcpWhat's my schedule for this semester?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
foreword
this is a proof of concept by claude and not suitable for production
-noah
sio-mcp
Read-only MCP server over CMU Student Information Online (SIO), built as a thin wrapper around a reusable typed client library.
Related MCP server: MCP Student Assistant
Layout
src/sio_mcp/
utils/session.py auth: Playwright login (AndrewID + Duo), cookie persistence
terms.py term codes (F26 <-> fall-2026 <-> "Fall 2026")
models.py pydantic models; ISO dates, 24h times, decimal-string money
parsers/ HTML parsers for SIO's server-rendered pages
client.py SIOClient: typed async API with TTL caching
server.py the MCP server (8 read-only tools)
cli.py `sio-login`
tests/fixtures/ real SIO page snapshots the parser tests run againstSIOClient is the reuse surface: the MCP server, a CLI, a cron job, or a RAG
ingestion script all call the same functions.
Setup
uv sync
uv run sio-login # AndrewID + password (env: ANDREW_ID/ANDREW_PASSWORD or prompts), approve the Duo pushSessions expire on CMU's schedule; when a tool reports an authentication
error, re-run sio-login.
Register with Claude Code:
claude mcp add cmu-sio -- uv --directory /path/to/this/repo run sio-mcpTools
Tool | Returns |
| name, current term, class level, major, advisor, units |
| sections with days/times/rooms/instructors + add/drop deadlines |
| official |
| per-course grades + QPA for a semester |
| AP/transfer credit and exam scores |
| enrollment record for a semester |
| student account ledger + balance |
| housing assignment, Plaid Cash |
Conventions: times are America/New_York HH:MM; dates ISO YYYY-MM-DD;
money is a decimal string in USD (charges positive, payments/credits
negative); course codes are normalized to 15-122 form; term params accept
F26, fall-2026, or Fall 2026.
Testing
uv run pytestParser tests run offline against tests/fixtures/. SIO redeploys weekly — if
a parser starts raising UpstreamChangedError, re-capture the page into the
fixtures and adjust.
Non-goals (for now)
Writes. Registration/drop actions live in SIO's legacy GWT app behind opaque GWT-RPC, and SIO explicitly warns that automated registration requests get access revoked. This server is deliberately read-only.
The legacy
/sio/#...app generally (invoices, pay-now, planning). The data worth reading is duplicated on the server-rendered pages this uses.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- FlicenseNot gradedqualityCmaintenanceRemote MCP connector providing live, structured access to CMU Courses public data including courses, prerequisites, schedules, instructors, gen-eds, and final-exam times to help students plan schedules.
- FlicenseNot gradedqualityCmaintenanceEnables querying student information such as marks, attendance, pending assignments, and timetables from a MySQL database through MCP tools.
- AlicenseAqualityAmaintenanceProvides read-only access to StudyLife data including courses, notes, sessions, and learning goals, enabling MCP clients to query study information via natural language.7AGPL 3.0
- AlicenseAqualityAmaintenanceRead-only MCP server for Canvas LMS that exposes tools to list courses, assignments, grades, submissions, syllabi, announcements, modules, pages, and files, without any write operations.11MIT
Related MCP Connectors
Read-only MCP server for ClassQuill, a tutoring-business-management platform.
Read-only MCP access to sessions, funnels, campaigns, errors, live visitors, and anomalies.
Read-only Frasma MCP: profile, knowledge search, diagnostic handoff. No email.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/noah-lowry/sio-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server