Demo MCP Stateless
Click on "Deploy 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., "@Demo MCP Statelessdemonstrate the stateless MCP protocol"
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.
Old MCP vs new MCP, on a real (local) serverless platform
A runnable proof of what the 2026-07-28 MCP revision means by
"stateless", built on the official mcp Python SDK (2.0.0). A tiny
but honest serverless platform cold-starts real server processes on
demand, scales out under load, and kills anything idle for 4 seconds —
then a narrated client runs the old protocol and the new protocol
against that same platform. The old one dies (Session not found); the
new one never notices, including a mid-call user question whose asking
instance is dead before the answer arrives.
git clone https://github.com/jobvancreij/demo-mcp-stateless
cd demo-mcp-stateless
./run_demo.sh # needs uv + Python >= 3.11; creates .venv on first run
.venv/bin/python probes.py # the four adversarial checksBinds 127.0.0.1:9000 (the gateway) and 127.0.0.1:9102+ (instances);
the script refuses to start if anything already holds those ports.
The whole run takes about 36 seconds — most of it deliberate idling,
waiting for the reaper. probes.py needs POSIX fcntl (it takes a lock
so two copies can't answer each other's checks), so it is Linux/macOS only.
What's in the box
File | Role |
| One MCP server on the official SDK. Serves BOTH eras: legacy handshake sessions and stateless 2026-07-28 requests. MRTR via |
| The local serverless platform: zero warm instances, measured cold starts (real |
| The narrated walkthrough (five acts, official SDK |
| The adversarial checks the walkthrough can't make, each actually executed: header/body mismatch → |
| Starts the platform, runs the client, kills exactly the PID it started. |
| Companion Medium article draft. |
| The four article figures — fleet lifetimes across one run, old-vs-new request shape, the MRTR timeline across instance death, and the shared-key vs omitted-argument split. SVG sources plus rendered PNGs; |
Related MCP server: example-mcp-server-streamable-http-stateless
The five acts
Old pattern —
mode="legacy": handshake, session, tool call works; 4s of idleness later the platform reaps the instance and the next call isMCPError: Session not found. That error is the whole reason remote MCP needed sticky, always-on servers.New pattern —
mode="2026-07-28": first packet is a real request; three concurrent calls scale the fleet to 3; idleness scales it to 0; the same client object keeps working via fresh cold starts.MRTR across instance death —
book_flightpauses withinput_required+ AES-GCM-sealedrequestState; the user "thinks" for 6s; the asking instance is reaped; the retry cold-starts a new process that unseals the state and completes the booking. Works only because all instances share theRequestStateSecuritykey. The twoprints inserver.pyshow what re-runs: the resolver fires once per round trip (on both instances), the tool body exactly once.Durable state — the process-memory job handle dies with its instance; the SQLite-backed handle survives (
started on 'i7', fetched from 'i8').MCP Apps —
boarding_passis bound toui://flight-desk/boarding-pass(text/html;profile=mcp-app) via the SDK'sAppsextension; the demo writesboarding-pass.htmlwith the tool's structured result injected the way a host's postMessage bridge would.
Fidelity notes
Server and client are the unmodified official SDK, so the wire format is
the SDK's real 2026-07-28 implementation (and its real legacy
implementation in Act 1). The platform is the toy part: a sub-300-line
process manager standing in for Lambda/Cloud Run/Workers. Out of scope:
OAuth, Origin validation hardening, SSE streaming responses,
subscriptions/listen — note that last one still exists in this revision,
so server-to-client notifications were reshaped, not deleted; what MRTR
replaced is the tool-scoped server-initiated request.
Two consequences of json_response=True (every reply a plain JSON
object, which keeps the gateway trivially bufferable) are worth naming.
book_flight is 2026-07-28-only: a legacy session would need the SSE
back-channel to deliver elicitation/create, and answers
no back-channel for server-initiated requests without it — so Act 1
uses whoami. And because there is no authenticated transport here, the
sealed requestState is bound to its originating request, expiry and
audience, but not to a principal; add OAuth and the SDK binds that too.
This server cannot be deployed
Maintenance
Related MCP Connectors
Remote MCP for A2A failure replay MCP, structured receipts, audit logs, and reviewer-ready evidence.
Cloud-hosted MCP server for durable AI memory
An MCP memory server. One memory your agents share — across models, devices and apps.
- Nexlab MCPOAuthnet.nexlab
28 MCP servers behind one endpoint: earth, sky, policy, records and research
Related MCP Servers
- FlicenseNot gradedqualityDmaintenancestateful MCP server with Redis sessions, event sourcing, and horizontal scaling1-
- FlicenseNot gradedqualityNot gradedmaintenancestateless MCP server — fresh instance per request, infinite horizontal scaling-
- FlicenseNot gradedqualityCmaintenanceDemonstrates migrating an MCP server to the stateless protocol, eliminating session management overhead and enabling seamless scaling behind round-robin load balancers.6-
- AlicenseNot gradedqualityCmaintenanceA production-ready stateless MCP server template implementing the 2026-07-28 specification, enabling horizontal scaling and easy migration from session-based servers.MIT