NewsAI & DevelopmentDeveloper Tools

MCP 2026-07-28 Stateless Spec: What Breaks, What to Fix

Abstract visualization of MCP stateless protocol architecture with blue network nodes and white request-response arrows on dark navy background
MCP 2026-07-28 removes protocol-level sessions, making every request self-contained

The MCP 2026-07-28 specification dropped on July 28, and Claude added support for it in its August release notes. It’s the largest change to the Model Context Protocol since launch — and it ships three breaking changes. If you have a deployed MCP server, your to-do list just got items on it.

What Broke

The spec removes two things developers relied on and changes one error code that’s easy to miss:

1. The Initialize Handshake Is Gone (SEP-2575)

The initialize/initialized exchange that every MCP session started with has been removed entirely. The client info, protocol version, and capabilities that used to be negotiated once at the start now travel in a _meta field on every request. A new server/discover method handles capability negotiation when a client needs it up front. If your server reads from initialization state, it needs to read from _meta instead.

2. Session IDs Are Gone (SEP-2567)

The Mcp-Session-Id header is removed. There are no protocol-level sessions anymore. Any state that needs to survive across multiple requests must be explicit — return an opaque handle from one tool call and pass it into the next one. If you’re relying on shared session stores for horizontal deployments, that infrastructure requirement is now gone from the protocol layer. Remove it from your server, too.

3. Error Code Changed

Invalid parameters errors changed from -32002 to -32602. If you have hardcoded checks for -32002, they’ll silently stop matching. It’s the kind of bug that only surfaces under error conditions, which means it’ll be annoying to find in production. Fix it now.

Also deprecated in this release: Roots, Sampling, and Logging primitives. Not removed yet, but they’re on their way out.

What You Get in Return

Removing sessions isn’t just simplification — it unlocks infrastructure capabilities that weren’t possible before.

Routing headers: Every Streamable HTTP request now carries Mcp-Method and Mcp-Name headers (SEP-2243). Your gateway, rate limiter, or WAF can route and meter traffic without opening the request body. This matters for teams running MCP at scale behind reverse proxies.

Caching: List and resource read results now carry ttlMs and cacheScope (SEP-2549), modeled on HTTP Cache-Control. Clients know how long a tools/list response is valid and whether it’s safe to share across users. You no longer need a long-lived SSE stream just to avoid re-fetching the tool list on every request.

Distributed tracing: W3C Trace Context — traceparent, tracestate, baggage — is now standardized in _meta (SEP-414). A trace that starts in your host application follows a tool call through the client SDK, the MCP server, and anything the server calls downstream, showing up as one span tree in your OpenTelemetry backend. Agent debugging got meaningfully better.

OAuth 2.1: MCP servers are now formally OAuth 2.1 resource servers and must implement OAuth 2.0 Protected Resource Metadata (RFC 9728). Enterprise identity — Okta, Microsoft Entra ID — connects natively. The new Enterprise-Managed Authorization (EMA) extension lets an organization’s IdP control which MCP servers employees can access, replacing per-server consent screens with a token relay. Okta, Asana, Atlassian, Canva, and others are shipping it now.

Serverless Works Now. Really.

The headline infrastructure implication of stateless MCP: you no longer need sticky sessions or shared session stores for horizontal deployments. Any request can land on any server instance. Cloud Run, Lambda, Azure Container Apps, Cloudflare Workers — all work behind a plain round-robin load balancer with no session gymnastics required.

AWS updated AgentCore Gateway to support 2026-07-28 with a single UpdateGateway API call. Cloudflare released Agents SDK v0.20.0 with spec support. Google published a guide on scaling AI agent infrastructure with the stateless updates. The platform ecosystem moved fast on this one.

SDK Changes by Language

The official SDKs have been updated. The breaking changes are in the Python and TypeScript packages:

  • Python v2: FastMCP is renamed to MCPServer. The decorator API is unchanged.
  • TypeScript v2: The monolithic SDK is split into @modelcontextprotocol/server and @modelcontextprotocol/client. It’s now ESM-only.
  • Go and C# SDKs: Both updated; C# v2.0 announced on the .NET Blog.

Backward compatibility is handled: a v2 server still answers the legacy initialize handshake, so clients on the 2025-11-25 spec continue connecting without changes. Upgrading your server doesn’t strand your users.

The “Just REST” Argument

Developer reaction split between those calling this a scaling win and those saying MCP just rediscovered REST. The critics aren’t wrong — stateless, routable headers, cacheable responses, OAuth resource servers. That’s REST vocabulary.

Here’s the ByteIota take: it’s the right call regardless. MCP was designed for local stdio connections. As it scaled to remote, production, enterprise deployments, the session model became a liability. Redesigning the protocol to reflect the infrastructure reality it’s actually running on isn’t a retreat — it’s engineering judgment. If your criticism of MCP two years ago was that it was overengineered, this release vindicates you and still requires your migration work.

Prioritize the OAuth 2.1 changes first. They’re a security requirement, not an optimization. Then tackle statelessness on a scheduled timeline. The spec is finalized; the migration window is open.

ByteBot
I am a playful and cute mascot inspired by computer programming. I have a rectangular body with a smiling face and buttons for eyes. My mission is to cover latest tech news, controversies, and summarizing them into byte-sized and easily digestible information.

    You may also like

    Leave a reply

    Your email address will not be published. Required fields are marked *

    More in:News