Preface

The Model Context Protocol (MCP) is an open standard that connects AI models with external tools and data sources. On July 28, 2026, MCP officially released the 2026-07-28 specification—this is the largest revision to the protocol since its launch, and the fifth official specification release for MCP. The protocol is now hosted by the Agentic AI Foundation (AAIF) under the Linux Foundation, with co-maintenance from vendors including Anthropic, OpenAI, Google, Microsoft, and others.

According to official data, the monthly downloads of MCP’s Tier 1 SDKs have exceeded 400 million, with an approximate 4x growth within the year; the MCP server directory in Claude Connector now includes over 950 MCP servers, which are used by millions of users every day. This update completely shifts MCP from a “bidirectional stateful protocol” to a request/response stateless model, while also launching the official extension framework and enterprise-grade OAuth authentication. The goal is clear: enable Agent interconnection to truly run on ordinary HTTP infrastructure.

Stateless Core: From Session Binding to Self-Contained Requests

Legacy (2025-11-25) Workflow

In the previous specification version, calling tools via Streamable HTTP required first establishing a session. The client sends an initialize handshake, and the server returns an Mcp-Session-Id. Every subsequent request must carry this session ID, locking the client to the specific instance that issued the session:

POST /mcp HTTP/1.1
Content-Type: application/json

{"jsonrpc":"2.0","id":1,"method":"initialize",
 "params":{"protocolVersion":"2025-11-25","capabilities":{},
           "clientInfo":{"name":"my-app","version":"1.0"}}}
POST /mcp HTTP/1.1
Mcp-Session-Id: 1868a90c-3a3f-4f5b
Content-Type: application/json

{"jsonrpc":"2.0","id":2,"method":"tools/call",
 "params":{"name":"search","arguments":{"q":"otters"}}}

This means production deployments typically require sticky sessions, shared session storage, and deep parsing of request bodies at gateways—incurring significant operational costs.

Changes in the New Version (2026-07-28)

The 2026-07-28 specification removes the initialize/initialized handshake (SEP-2575) and the Mcp-Session-Id session header (SEP-2567). A single tool call becomes a self-contained request that any server instance can handle:

POST /mcp HTTP/1.1
MCP-Protocol-Version: 2026-07-28
Mcp-Method: tools/call
Mcp-Name: search
Content-Type: application/json

{"jsonrpc":"2.0","id":1,"method":"tools/call",
 "params":{"name":"search","arguments":{"q":"otters"},
           "_meta":{"io.modelcontextprotocol/clientInfo":{"name":"my-app","version":"1.0"}}}}

The protocol version, client information, and capability declarations are now carried in the _meta field of each request; when you need to understand the server’s capabilities in advance, you can call the new server/discover method. The practical effect is that MCP servers can be deployed on Serverless, edge nodes, or behind ordinary round-robin load balancers, eliminating the need for session affinity.

Stateless Protocol ≠ Stateless Applications

Removing sessions at the protocol layer does not mean that applications cannot hold state. The officially recommended pattern aligns with HTTP APIs: tools return an explicit handle (such as basket_id), and the model passes it back as a regular parameter in subsequent calls. Compared to session state hidden in transport layer metadata, explicit handles are more transparent to models and easier to combine and reason across tools.

Routing, Caching, and Tracing

Three supporting changes make stateless traffic easier to operate:

  1. Header Routing (SEP-2243): Streamable HTTP transport mandates the Mcp-Method and Mcp-Name headers, allowing load balancers and gateways to route and rate-limit traffic without parsing the JSON body.
  2. Cacheable Lists (SEP-2549): List results such as tools/list carry ttlMs and cacheScope, similar to HTTP Cache-Control. Clients can cache results by TTL without relying on long-lived SSE connections to detect changes.
  3. W3C Trace Context (SEP-414): Standardizes the traceparent, tracestate, and baggage key names in _meta, enabling distributed tracing that spans Host → SDK → MCP Server → downstream services.

Multi Round-Trip Requests (MRTR)

Stateless protocols still need to support the server requesting input from the client mid-interaction (such as confirming a deletion). Multi Round-Trip Requests (SEP-2322) replaces long-held SSE streams with InputRequiredResult: the server returns inputRequests and requestState, the client collects responses and resends the original request with inputResponses, and any instance can continue processing the request.

Extensions as First-Class Citizens

The 2025-11-25 version had extension concepts but lacked a formal process. SEP-2133 completes extension governance: extensions are identified by reverse-DNS IDs, negotiated via the extensions map in capabilities, released with independent versions, and have an Extensions Track ranging from experimental to official.

This release includes two official extensions:

MCP Apps: Server-Side Rendered UI

MCP Apps (SEP-1865) allows MCP servers to provide interactive HTML interfaces, which are rendered by the Host in a sandboxed iframe. Tools declare UI templates in advance, and the Host can prefetch, cache, and security-review them. Communication between the UI and the Host still uses the JSON-RPC base protocol, with every user action going through the same audit and authorization paths as a direct tool call. Claude already supports MCP Apps, allowing users to directly operate connector interfaces within conversations without switching tabs.

Tasks: Long-Running Asynchronous Tasks

Tasks were released as an experimental core feature in 2025-11-25, but production practice revealed the need to redesign around the stateless model, so it was elevated to an independent extension. The new lifecycle is as follows: tools/call can return a task handle, and the client uses tasks/get, tasks/update, and tasks/cancel to drive progress; task creation is determined by the server. tasks/list has been removed—you cannot safely scope requests in a sessionless model. If you developed based on the legacy experimental Tasks API, you need to migrate to the new lifecycle.

Enterprise-Grade Authentication Hardening

Six SEPs strengthen the authorization specification to better align with OAuth 2.0 and OpenID Connect deployments in production environments:

  • Clients must validate the iss parameter in authorization responses per RFC 9207 (SEP-2468), mitigating mix-up attacks in MCP’s “single client, multiple server” deployment mode.
  • Declare the OIDC application_type during Dynamic Client Registration (SEP-837), preventing desktop/CLI clients from being incorrectly defaulted to "web" and rejecting localhost callbacks.
  • Bind registration credentials to the authorization server’s issuer, requiring re-registration when migrating resources (SEP-2352).
  • Supplement refresh token request methods (SEP-2207), scope accumulation during step-up authentication (SEP-2350), and the .well-known discovery suffix (SEP-2351).

Claude now offers Enterprise-Managed Auth: administrators authorize connectors once via an IdP (such as Entra, Okta), users inherit access permissions through existing IdP groups, and first-time login enables zero-configuration access.

Other Key Changes

Three Core Capabilities Deprecated

Per the new feature lifecycle policy (SEP-2577), the following capabilities are marked as Deprecated and will not be removed for at least one year:

Capability Replacement
Roots Tool parameters, resource URIs, or server-side configuration
Sampling Direct integration with LLM provider APIs
Logging Use stderr for stdio; use OpenTelemetry for structured observability

Tool Schema Upgrade

Tool inputSchema / outputSchema have been upgraded to full JSON Schema 2020-12 (SEP-2106), supporting oneOf/anyOf/allOf, conditional branches, and $ref. The error code for missing resources has changed from the custom MCP -32002 to the JSON-RPC standard -32602.

Evolution Governance

This release includes breaking changes, but the official team emphasizes this is not the norm. The official 12-month deprecation window, the Extensions framework, and Standards Track SEPs must pass the conformance test suite (SEP-2484) before reaching Final status—future revisions are expected to allow smooth upgrades without rewriting the transport layer.

Practical Impact for Developers

If you are maintaining an MCP server or client, we recommend troubleshooting in the following order:

  1. Transport Layer: Remove dependencies on the initialize handshake and Mcp-Session-Id; add the MCP-Protocol-Version, Mcp-Method, and Mcp-Name headers to requests.
  2. Stateful Logic: Convert cross-call state to explicit handle parameters, which models pass between tool calls.
  3. Tasks Users: Migrate from the experimental core API to the new lifecycle of the Tasks extension.
  4. OAuth Implementation: Complete iss validation, application_type declaration, and issuer binding.
  5. SDK Upgrade: The four Tier 1 SDKs (TypeScript, Python, Go, C#) already support 2026-07-28; upgrade the official SDKs first before modifying business code.

Claude’s support for 2026-07-28 is currently rolling out gradually; developers planning to submit connectors to the Claude directory can refer to the official Connectors documentation to align with the new specification.

MCP 2026-07-28 has turned Agent interconnection into infrastructure “just like the Web”: stateless, cacheable, routable, and horizontally scalable. For teams that have already bet on MCP, this update is not a minor tweak but a shift in production deployment paradigms—but it is precisely this shift that will take MCP from “working” to “working at scale”.