MCP Goes Stateless in Its Biggest Protocol Update Yet
- What happened
- Anthropic shipped MCP 2026-07-28 — a stateless rewrite that eliminates sessions, adds header-based routing, and formalizes the extensions framework.
- Why it matters
- MCP servers can now run on standard Kubernetes with conventional load balancers — the missing piece for production-scale enterprise AI agent deployments.
- What to do
- If you maintain an MCP server or client, start migration planning now — AWS, Microsoft, Cloudflare, and GitHub are already in production with the new spec.
Anthropic shipped the 2026-07-28 MCP specification on July 28 — the largest revision since the protocol launched in November 2024 — and it fundamentally changes how MCP works: the protocol is now stateless. No more initialize handshakes, no more Mcp-Session-Id headers, no more sticky sessions at the load balancer. Every request now carries its own protocol version, client identity, and capabilities in _meta. Any request can land on any server instance behind a plain round-robin load balancer. This is the update that makes MCP production-grade enterprise infrastructure.
What happened
The stateless core is the headline, but the 2026-07-28 spec ships six major changes at once:
- No handshake or sessions. The
initialize/initializedexchange andMcp-Session-Idheader are retired. Each request is self-describing — clients that need server capabilities up front call the newserver/discoverRPC, but it's optional. MCP servers can now run on conventional Kubernetes deployments with standard load balancers and no shared Redis stores (Anthropic, 2026). - Multi Round-Trip Requests (MRTR). Server-to-client interactions like elicitation and sampling no longer require a held-open SSE stream. The server returns
resultType: "input_required"with an opaquerequestStatetoken, and the client retries the original call with the user's answers. Any server instance can pick up the retry (Anthropic, 2026). - Header-based routing. Every Streamable HTTP request now surfaces
Mcp-MethodandMcp-Namein standard headers. API gateways, rate limiters, and WAFs can route, throttle, and meter on headers alone — no JSON body parsing required (Anthropic, 2026). - Cacheable list results.
tools/list,prompts/list, andresources/listresponses now carryttlMsandcacheScopehints. Clients can cache tool catalogs without holding persistent connections open for change notifications (Anthropic, 2026). - Authorization hardening. RFC 9207 issuer validation, client credential binding to the issuing authorization server, and a formal deprecation of Dynamic Client Registration (DCR) in favor of Client ID Metadata Documents (CIMD). The auth framework now aligns with production OAuth 2.0 and OpenID Connect patterns enterprise security teams already trust (Anthropic, 2026).
- Formal extensions framework. Capabilities like Tasks, MCP Apps, and Enterprise Managed Authorization (EMA) now live as governed extensions with their own reverse-DNS IDs and release cadences — independent of the core spec. This prevents the fragmentation that plagued earlier versions (Anthropic, 2026).
All four Tier 1 SDKs — TypeScript, Python, Go, and C# — shipped with 2026-07-28 support on launch day. The Rust SDK followed in beta.
The ecosystem moved fast. AWS AgentCore Gateway(opens in new tab) shipped day-one support with a single UpdateGateway configuration toggle — add "2026-07-28" to your gateway's supportedVersions and existing clients keep working unchanged (AWS, 2026). Microsoft released .NET C# SDK v2.0(opens in new tab) targeting the new spec. GitHub's MCP Server(opens in new tab) shipped support five days ahead of the spec. Cloudflare, Google Cloud, Supabase, and FastMCP all announced day-zero support.
Why it matters
MCP just solved the single biggest barrier to enterprise adoption: the session-bound architecture that made horizontal scaling a practical nightmare. Before 2026-07-28, every MCP interaction began with a handshake that pinned the client to a specific server instance. Scaling meant sticky sessions at the load balancer, shared session stores, or deep packet inspection — all of which sat uneasily with the ops teams who approve production deployments.
Now an MCP server is a standard HTTPS endpoint. It works behind any load balancer. It plays nicely with API gateways, CDNs, and service meshes. The protocol has grown up into something an enterprise platform team can actually operate.
The extensions framework is nearly as important as statelessness. By decoupling capabilities like Tasks and authorization from the core spec, MCP can now evolve without forcing coordinated breaking changes across the entire ecosystem. AWS contributed the Tasks extension; Cloudflare, Anthropic, and others are shipping their own. This is how HTTP grew — and it's the right model for a protocol with half a billion SDK downloads per month.
The deprecation policy matters too: Roots, Sampling, Logging, and the legacy HTTP+SSE transport are deprecated with a twelve-month minimum window. You plan upgrades instead of reacting to them.
What changes for you
If you run MCP servers in production: You can drop sticky sessions and shared Redis stores. Migrate to the new SDKs — the stateless transport eliminates a whole class of operational complexity. The deprecation window gives you time, but the architectural win of going stateless is immediate.
If you maintain an MCP client: Audit for Mcp-Session-Id dependencies, logging/setLevel calls, and the literal -32002 error code (now -32602). Check that your client declares the correct capabilities — a client that omits required ones is rejected with code -32021 on the new path.
If you're evaluating MCP for a new project: Start on 2026-07-28. The Tier 1 SDKs are ready. AWS AgentCore Gateway supports dual-version mode — you can serve old and new clients simultaneously while you migrate. There's no reason to build new infrastructure on the session-bound 2025 spec.
If you use AWS AgentCore Gateway: One UpdateGateway call adds 2026-07-28 to your supportedVersions. Your existing clients, tool definitions, and auth configuration are unchanged.
FAQ
Is this backward compatible? No — the 2026-07-28 spec is backward-incompatible by design. But it's opt-in: clients select the protocol version per request via the MCP-Protocol-Version header. Gateways can advertise multiple versions simultaneously, so existing clients keep working while you migrate. The protocol maintainers have stated this is intended to be the last revision that breaks compatibility.
What's deprecated and when will it stop working? Roots, Sampling, and Logging are deprecated, along with the legacy HTTP+SSE transport and Dynamic Client Registration (DCR). All remain functional for at least twelve months from the spec publication date. New implementations should not adopt them.
Which SDKs support the new spec? TypeScript, Python, Go, and C# (Tier 1) shipped with 2026-07-28 support on launch day. Rust SDK supports it in beta. Check the MCP SDK documentation(opens in new tab) for the current tier list.
Affected tools & models
Never need to catch up again
The weekly delta: only verdict changes and act-now items. No digest filler.