๐ mcp-grad-party
Bring your agent. This party has its own MCP server.
Tonight (2026-07-28) the Model Context Protocol published its final specification:handshakes removed, protocol-level sessions gone, sticky routing dead, core stateless.The protocol graduated. This server is the party's authoritative and celebratoryreference on everything that changed versus 2025-11-25, with real SEP numbers underevery joke.
No account, no API key, no sign-in. Point any MCP client at:
https://mcp-grad-party.alex-8ee.workers.dev/mcp
Connect
Claude Code
claude mcp add --transport http mcp-grad-party https://mcp-grad-party.alex-8ee.workers.dev/mcp
Cursor โ add to ~/.cursor/mcp.json, then restart:
{
"mcpServers": {
"mcp-grad-party": {
"url": "https://mcp-grad-party.alex-8ee.workers.dev/mcp"
}
}
}
VS Code, Codex, Gemini CLI, Windsurf โ same shape, plus "type": "http":
{
"mcpServers": {
"mcp-grad-party": {
"type": "http",
"url": "https://mcp-grad-party.alex-8ee.workers.dev/mcp"
}
}
}
Anything else that speaks streamable HTTP: give it the URL. There is no step two.
Ask it something
- What actually changed in the MCP spec tonight?
- Is
Mcp-Session-Iddead or just deprecated? - Quiz my table on the new spec.
- Give a toast to statelessness.
- What do I have to change in my server before Monday?
Tools
| Tool | What it does |
|---|---|
party_info |
Tonight's event: venue, hosts, speakers, RSVP, house rules |
commencement_program |
Every change in the 2026-07-28 release, with SEP numbers |
yearbook_page(topic) |
Deep dive on one change: detail, migration, superlative, senior quote |
class_superlatives |
The awards ceremony โ a superlative for every graduate |
did_it_graduate(feature) |
Lifecycle check: graduated / held back / expelled / renamed |
summer_homework(role) |
Migration checklist for server or client authors |
pop_quiz(n?, reveal?) |
Spec trivia โ quiz the humans at your table |
give_a_toast(topic?) |
A raiseable toast, per graduate or for the whole class |
Read-only, no auth, no data collected. Point whatever you want at it.
How it's built
The original is Python on arcade-mcp-server(mcp-grad-party), deployed witharcade deploy. That deployment is live and is the better demo when you want to showwhat a governed gateway does, because every call is attributed to a user.
It is not what a stranger at a party can use. Arcade-managed servers are reachable onlythrough an MCP gateway, and every gateway auth mode requires an identity. The ArcadeAuth mode admits members of the project, so a guest who signs up at the door completesOAuth and is then refused on reconnect. For a read-only trivia server that holds no userdata, that is the wrong trade, so this port drops the gateway and serves the same eighttools on Cloudflare Workers with no auth at all.
Parity with the Python original
src/content.ts is generated, not retyped:
python scripts/gen_content.py ../mcp-grad-party
Both servers were run side by side and diffed across 18 tool calls covering every tool,both summer_homework roles, five did_it_graduate lookups and three quiz questions.All 18 were byte-identical.
The one deliberate difference is naming. Arcade's runtime exposes the tools asMcpGradParty_PartyInfo; here they keep the names from the Python source,party_info through give_a_toast.
Develop and deploy
npm install
npm run dev # http://localhost:8787/mcp
npm run typecheck
export CLOUDFLARE_ACCOUNT_ID=<the Arcade account id>
npm run deploy
account_id is deliberately not committed. Without it, wrangler will ask which accountto use when your login can see more than one.
Notes
agentsneedsaiinstalled even when unused; without it the build fails onCould not resolve "ai".@modelcontextprotocol/sdkis pinned viaoverridesto keepagentsoff its nested1.23.0, which carries a cross-client data-leak advisory (GHSA-345p-7cg4-v4c7).Irrelevant to a stateless public server, but there is no reason to ship it.GET /returns a plain-text pointer, so anyone who pastes the URL into a browser getsan explanation instead of a protocol error.