MCP Goes Stateless: No More Sessions, No More Handshakes

No Sessions. No Handshakes. No Sticky Connections.
On July 28, 2026, the MCP team released spec version 2026-07-28. The main event: the entire session mechanism โ the initialize/initialized handshake, the Mcp-Session-Id header โ is gone. MCP is now a pure request/response protocol.
The numbers make this change significant: nearly 500 million SDK downloads per month, with both TypeScript and Python SDKs crossing 1 billion total downloads. Claude Code, Cursor, Windsurf, and a growing list of agent platforms use MCP as their tool connectivity layer. Any change here ripples across the entire ecosystem.
Why Now?
MCP launched in 2024 with a stateful design โ each client opened a long-lived connection to a server, maintaining a session throughout the interaction. That design was fine for an MVP. It became a bottleneck as the ecosystem grew.
Three trends converged to make stateless urgent:
- Scale: at half a billion requests per month, sticky sessions aren't practical. Every deploy, restart, or scale event breaks sessions, forcing clients to reconnect and reinitialize.
- Serverless: more MCP servers now run on Lambda, Cloud Run, and Cloudflare Workers โ platforms where functions live in milliseconds, not sessions.
- Multi-provider: when an agent calls tools across multiple MCP servers, maintaining separate sessions for each provider creates unnecessary connection matrices.
How Stateless Works
Every request is now a standalone, self-describing unit:
POST /mcp HTTP/1.1
MCP-Protocol-Version: 2026-07-28
Mcp-Method: tools/call
Mcp-Name: search
{"jsonrpc":"2.0","id":1,"method":"tools/call",
"params":{"name":"search","arguments":{"q":"otters"},
"_meta":{"io.modelcontextprotocol/clientInfo":{"name":"my-app","version":"1.0"}}}}
No pre-flight needed. The server reads _meta from the first request. Clients can optionally call server/discover to fetch capabilities upfront, but it's not required.
The upshot: an MCP server sits behind the simplest round-robin load balancer. No sticky sessions. No shared Redis for session sync. Deploy on serverless without thinking about connection draining.
MRTR: When the Server Needs to Ask the Client
Dropping sessions means dropping bidirectional streams โ the only channel for the server to send requests back to the client (e.g., "are you sure you want to delete this?"). This was the hardest technical problem to solve.
The answer is Multi Round-Trip Requests (MRTR) (SEP-2322):
- Server returns
resultType: "input_required"with a list of questions - Client retries the original call with
inputResponsesfilled in
Instead of one open two-way connection, MRTR creates a chain of independent request/response pairs. The model manages handles between tool calls. This approach uses the natural LLM behavior: tool call โ result โ next tool call.
Route by Header, Not by Body
Requests now carry Mcp-Method and Mcp-Name in HTTP headers (SEP-2243). It sounds small, but it changes operations fundamentally:
| Before | After |
|---|---|
| Gateway must parse JSON body to identify method | Read headers โ no JSON parsing needed |
| Rate limiting requires application-layer inspection | Rate-limit at the edge, based on headers |
| Debugging requires body inspection | Log headers + trace ID for troubleshooting |
Combined with cache hints (ttlMs, cacheScope) on list responses (SEP-2549), clients can cache tool catalogs and prompt lists โ cutting 30-40% of unnecessary round-trips for repeated calls.
Auth: Fixing the Biggest Integration Pain Points
Authorization has been the most time-consuming part of MCP integration. Three key changes:
- RFC 9207 issuer validation (SEP-2468): servers must return
iss; clients must validate. Closes the authorization-server mix-up hole โ a vulnerability where redirect URLs could be hijacked. - CIMD replaces DCR: Dynamic Client Registration is deprecated. Client ID Metadata Documents are the new standard. Why? DCR breaks with CLI and desktop apps due to localhost redirect_uri issues.
- Issuer-bound credentials (SEP-2352): no more reusing credentials across authorization servers.
What's In, What's Out
- Tasks graduates to the official
io.modelcontextprotocol/tasksextension (SEP-2663), with poll-basedtasks/getandtasks/update. - Roots, Sampling, Logging are deprecated (SEP-2577).
- HTTP+SSE transport is also deprecated.
Everything has a 12-month offramp. This is MCP's first formal deprecation policy โ a signal that the protocol has matured and takes backward compatibility seriously.
What Developers Should Do
All four Tier 1 SDKs (TypeScript, Python, Go, C#) have migration guides. If you run an MCP server:
- Audit session dependencies: grep for
Mcp-Session-Idandinitializein your codebase - MRTR for elicitation: if your server calls
elicitation/createorsampling/createMessage, redesign for MRTR - Auth migration: DCR โ CIMD, add
issvalidation - Enable cache hints: use
ttlMsto cut round-trips - Timeline: Roots, Sampling, Logging, and HTTP+SSE have 12 months โ don't panic, but don't forget
The Trade-Off
Stateless isn't free. Servers lose the ability to push notifications proactively. Use cases that need real-time interaction โ streaming tool output, long-running task progress โ will need polling or out-of-band mechanisms.
But the trade-off is worth it. MCP is no longer a demo protocol. It's becoming production infrastructure. When a protocol chooses to sacrifice features for scalability, it's preparing for something much bigger than what came before.
Content assisted by AI (Amy ๐ธ). Reviewed by the author.
Related Posts
The MCP Era: AI Agents Running Operations via AWS DevOps Agent
Moving past simple text generation, AI agents are now operating infrastructure directly using MCP, AWS Continuum, and AWS DevOps Agent.
Salesforce Acquires Fin for $3.6B: Defining the AI Agent Era
Salesforce's acquisition of Fin (formerly Intercom) for $3.6 billion is a watershed moment, shifting the enterprise software paradigm from copilots to fully autonomous AI agents.
Gemini 3.6 Flash: Fewer Tokens, Lower Cost, Better Agent Performance
Google released Gemini 3.6 Flash โ 17% fewer output tokens, lower price, higher benchmarks. Flash-Lite hits 350 tok/s at $0.3/1M input, built for scaling agentic workflows.