MCP 2026-07-28 Final Spec: Stateless Protocol Drops Sessions and Handshake
Quick summary
The largest MCP revision since launch goes live July 28, 2026. The initialize handshake and Mcp-Session-Id are gone — every request is self-contained, routable behind a round-robin load balancer, and hardened for enterprise OAuth.
Read next
- Connor Leahy: AI Will Destabilize Society Before Governments RespondConnor Leahy of Conjecture warns AI could destabilize society. Five mechanisms already active in 2026, plus what developers building AI must know and do.
- EU AI Act Aug 2, 2026: Article 50 Transparency Rules for DevelopersArticle 50 EU AI Act transparency obligations apply August 2, 2026 — chatbot disclosure, AI content marking, deepfake labels. High-risk rules delayed to 2027.
The Model Context Protocol publishes its 2026-07-28 specification today — July 28, 2026 — the largest revision since Anthropic open-sourced MCP in late 2024. The headline change is architectural: MCP is now stateless at the protocol layer. The initialize/initialized handshake is removed, the Mcp-Session-Id header is gone, and every HTTP request is self-contained enough to land on any server instance behind a plain round-robin load balancer.
Protocol maintainers locked the release candidate on May 21, 2026 and ran a ten-week validation window for SDK maintainers. Tier 1 official SDKs are expected to ship 2026-07-28 support within that window. This is a breaking change from the 2025-11-25 revision — production deployments that rely on sticky sessions, shared session stores, or gateway deep-packet inspection need a migration plan.
What Changed in MCP 2026-07-28
MCP 2026-07-28 is not a patch release. Six Specification Enhancement Proposals (SEPs) work together to remove protocol-level state, completing the transport roadmap the MCP blog outlined in December 2025.
| Area | 2025-11-25 behavior | 2026-07-28 behavior |
|---|---|---|
| Connection setup | Mandatory initialize handshake before any tool call | No handshake; version and capabilities in _meta on every request |
| Session routing | Mcp-Session-Id pins client to one server instance | No protocol session; any instance can serve any request |
| Server discovery | Capabilities exchanged once at init | Optional server/discover RPC when clients need upfront metadata |
| Server-to-client prompts | SSE stream held open during elicitation | Multi Round-Trip Requests (MRTR) via InputRequiredResult payloads |
| Tool schemas | Constrained JSON Schema subset | Full JSON Schema 2020-12 for inputSchema and outputSchema |
| Long-running work | Experimental Tasks in core spec | Tasks graduates to an official extension with a new lifecycle |
| Interactive UI | Not standardized | MCP Apps extension — server-rendered HTML in sandboxed iframes |
The practical ops win: a remote MCP server that previously needed sticky sessions, a Redis session store, and body inspection at the API gateway can route on Mcp-Method and Mcp-Name headers and cache tools/list responses for as long as the server's ttlMs permits.
How a Tool Call Works Without Sessions
Under 2025-11-25 Streamable HTTP, a client first sent POST /mcp with an initialize method and protocolVersion: 2025-11-25. The server responded with an Mcp-Session-Id header that every subsequent request had to carry, pinning traffic to the instance that issued it.
Under 2026-07-28, the same tools/call is a single self-contained POST /mcp with headers MCP-Protocol-Version: 2026-07-28, Mcp-Method: tools/call, and Mcp-Name: search, plus a JSON body carrying tools/call params and client info in _meta. Any server instance can handle it — no session header required.
SEP-2575 removes the initialization handshake. Protocol version, client info, and client capabilities travel in _meta per request instead of being negotiated once. SEP-2567 removes Mcp-Session-Id and protocol-level sessions entirely.
SEP-2243 requires Mcp-Method and Mcp-Name headers on Streamable HTTP so load balancers and rate limiters can route without parsing JSON bodies. Servers must reject requests where headers and body disagree.
Stateless Protocol, Stateful Applications
Removing protocol sessions does not mean your MCP server cannot hold state. The spec explicitly recommends the pattern HTTP APIs have used for decades: mint an explicit handle from a tool (basket_id, browser_id, workflow_id) and have the model pass it back as a normal tool argument on later calls.
That pattern is often more capable than hidden session state. The model can compose handles across tools, reason about them, and pass them between agent steps — something opaque transport metadata never allowed cleanly.
If you built session affinity layers, custom auth shims, or homegrown trace propagation to compensate for 2025-era MCP limitations, those become technical debt with a countdown once clients adopt 2026-07-28.
Multi Round-Trip Requests and Elicitation
Stateless MCP still needs server-to-client interaction mid-call — for example, asking a user to confirm a destructive action. Two SEPs rebuild that flow without a persistent SSE connection.
SEP-2260 now requires that server-initiated requests only fire while the server is actively processing a client request. A user is never prompted out of nowhere; every elicitation traces to something the user or their agent started.
SEP-2322 (Multi Round-Trip Requests) delivers prompts via an InputRequiredResult instead of holding an SSE stream open. The server returns structured input requests plus a requestState blob; the client gathers answers and re-issues the original call with inputResponses. Any server instance can pick up the retry because everything needed is in the payload.
Extensions: MCP Apps and Tasks
SEP-2133 formalizes how extensions work: reverse-DNS IDs, capability negotiation via an extensions map, separate ext-* repositories, and an Extensions Track in the SEP process.
Two official extensions ship with this release:
MCP Apps (SEP-1865): Servers can ship interactive HTML UIs that hosts render in sandboxed iframes. Tools declare UI templates ahead of time so hosts can prefetch, cache, and security-review before execution. UI actions route through the same JSON-RPC audit path as direct tool calls.
Tasks extension: Tasks were experimental in 2025-11-25. Production feedback pushed them into an extension with a stateless-friendly lifecycle: a server can answer tools/call with a task handle; clients drive progress via tasks/get, tasks/update, and tasks/cancel. tasks/list is removed because it cannot be scoped safely without sessions. Anyone who shipped against the experimental Tasks API must migrate.
Authorization Hardening for Enterprise
Six SEPs align MCP authorization with how OAuth 2.0 and OpenID Connect are deployed in production:
| SEP | Change |
|---|---|
| SEP-2468 | Clients must validate iss on authorization responses (RFC 9207 mix-up mitigation) |
| SEP-837 | Clients declare OpenID Connect application_type during Dynamic Client Registration |
| SEP-2352 | Registered credentials bind to the authorization server issuer; re-register on resource migration |
| SEP-2207 | Documented refresh-token request patterns for OIDC-style authorization servers |
| SEP-2350 | Clarified scope accumulation during step-up |
| SEP-2351 | Clarified .well-known discovery suffix behavior |
Separately, the Enterprise-Managed Authorization (EMA) extension reached stable status on the MCP blog — enabling centralized OAuth for MCP servers so end users access connected tools through a single enterprise login. Anthropic, Microsoft, and Okta are among early adopters.
For teams shipping agents in EU markets, stateless MCP plus auditable OAuth flows align with Article 50 transparency obligations taking effect August 2, 2026.
Deprecated Core Features and Schema Upgrades
SEP-2577 introduces a formal feature lifecycle (Active → Deprecated → Removed, minimum twelve months between deprecation and earliest removal). Three core features are deprecated in this release:
| Deprecated | Replacement |
|---|---|
| Roots | Tool parameters, resource URIs, or server configuration |
| Sampling | Direct integration with LLM provider APIs |
| Logging | stderr on stdio; OpenTelemetry for structured observability |
These are annotation-only deprecations — methods still work in 2026-07-28 and for twelve months after.
SEP-2106 lifts tool inputSchema and outputSchema to full JSON Schema 2020-12, enabling oneOf, anyOf, allOf, conditionals, and $ref/$defs. Implementations must not auto-dereference external $ref URIs and should bound validation depth and time.
SEP-2164 changes missing-resource errors from MCP-custom -32002 to JSON-RPC standard -32602 Invalid Params. Update client error matchers accordingly.
SEP-2549 adds ttlMs and cacheScope on list and resource-read results (HTTP Cache-Control modeled). SEP-414 documents W3C Trace Context keys (traceparent, tracestate, baggage) in _meta for OpenTelemetry correlation across gateways and SDKs.
Our Analysis: What Platform Teams Should Do This Week
1. Inventory sessionful deployments. Any MCP server using sticky sessions, shared Redis for Mcp-Session-Id, or gateway rules that parse JSON bodies for routing is on the migration path. The TypeScript SDK v2 documents createMcpHandler with legacy: 'stateless' for dual-era serving and isLegacyRequest() routing for gradual cutover.
2. Treat OAuth as infrastructure, not an MCP afterthought. The 2025 production blocker was auth — which agent can read Slack for user A but not user B. 2026-07-28 puts agent identity in the standard IAM stack. Security teams can audit and revoke MCP clients like any other OAuth application.
3. Plan explicit-handle tool design. Teams that relied on hidden session state for multi-step workflows should refactor tools to return visible IDs the model threads forward. This pairs well with programmatic tool calling and agent orchestration patterns.
4. Do not conflate MCP adoption stats with spec maturity. The March MCP guide covered ecosystem scale (97M+ monthly SDK downloads per Anthropic's December 2025 ecosystem update). Today's spec change is about how you deploy at scale — not whether to adopt MCP at all.
5. Watch Tasks and MCP Apps separately. Extensions version independently. You can adopt stateless transport in August and defer MCP Apps until your host client supports the extension.
Enterprise Migration Checklist
Week 1 — Discovery
- [ ] List every production MCP server and whether it uses
Mcp-Session-Idor sticky routing - [ ] Identify clients still sending
initializeon every connection - [ ] Map OAuth flows: does your authorization server emit
isson responses?
Week 2 — SDK and gateway
- [ ] Upgrade to SDK versions supporting
2026-07-28(check official TypeScript/Python tier-1 releases) - [ ] Configure load balancers to route on
Mcp-Method/Mcp-Nameheaders - [ ] Enable W3C Trace Context propagation to your OpenTelemetry backend
Week 3 — Application logic
- [ ] Refactor multi-step tools to explicit-handle pattern
- [ ] Migrate experimental Tasks integrations to the Tasks extension lifecycle
- [ ] Update client error handling:
-32002→-32602for missing resources
Week 4 — Security and compliance
- [ ] Validate Dynamic Client Registration
application_typefor CLI and desktop clients - [ ] Evaluate Enterprise-Managed Authorization if users hit repeated consent prompts
- [ ] Document agent audit trails for EU Article 50 chatbot disclosure requirements
Key Takeaways
- MCP 2026-07-28 publishes July 28, 2026 — RC locked May 21; largest protocol revision since launch with breaking changes from 2025-11-25.
- Stateless core: no
initializehandshake (SEP-2575), noMcp-Session-Id(SEP-2567); round-robin load balancing without sticky sessions. - New headers:
MCP-Protocol-Version,Mcp-Method,Mcp-Name; client capabilities in_metaon every request. - Extensions: MCP Apps (sandboxed server UI) and Tasks (new stateless lifecycle); Roots, Sampling, Logging deprecated.
- OAuth hardened:
issvalidation,application_typeon DCR, issuer-bound credentials; EMA extension stable for enterprise SSO. - For developers: Audit sessionful MCP servers this week — migrate to explicit-handle tools and header-based routing before Q4 client upgrades.
- What to watch: Tier 1 SDK releases through September 2026; host clients (Cursor, VS Code, Claude Desktop) announcing
2026-07-28default support.
Related Reading
- MCP 97M downloads developer guide (March 2026)
- Anthropic security guide: stop trusting AI agents
- EU AI Act August 2026 transparency checklist
- GPT-5.6 programmatic tool calling FinOps
- LLM API pricing tracker
Sources
FAQ
Frequently Asked Questions
What is the MCP 2026-07-28 specification?
MCP 2026-07-28 is the July 28, 2026 revision of the Model Context Protocol — the largest update since launch. It makes MCP stateless at the protocol layer by removing the initialize handshake and Mcp-Session-Id sessions, adds MCP Apps and a redesigned Tasks extension, hardens OAuth authorization, and adopts JSON Schema 2020-12 for tool definitions. It is a breaking change from the 2025-11-25 revision.
Does MCP 2026-07-28 remove all session state?
No. MCP removes protocol-level sessions, not application state. Servers that need state across tool calls should mint explicit handles (such as a basket_id or workflow_id) from a tool and have the model pass them back as ordinary arguments on later calls — the same pattern HTTP APIs use. SEP-2567 documents this explicit-handle pattern.
When do I need to migrate my MCP server to 2026-07-28?
The final spec publishes July 28, 2026. Deprecated features from 2025-11-25 continue working for at least twelve months under the new lifecycle policy. Migrate soon if you rely on sticky sessions, shared session stores, the experimental Tasks API, or client error code -32002 for missing resources. Tier 1 official SDKs are expected to ship 2026-07-28 support within the ten-week validation window that began when the RC locked on May 21, 2026.
How does MCP 2026-07-28 improve enterprise deployment?
Stateless requests can route through ordinary round-robin load balancers using Mcp-Method and Mcp-Name headers without sticky sessions. OAuth is hardened with iss validation, application_type on Dynamic Client Registration, and issuer-bound credentials. The Enterprise-Managed Authorization extension is stable for centralized SSO. OpenTelemetry trace context is standardized in _meta for audit trails.
What MCP features are deprecated in 2026-07-28?
Roots, Sampling, and Logging core features are deprecated under SEP-2577 with at least a twelve-month window before removal. Roots should be replaced by tool parameters or resource URIs. Sampling should be replaced by direct LLM API integration. Logging should use stderr on stdio transports or OpenTelemetry elsewhere. The methods still work in this release.
Free Weekly Briefing
The AI & Dev Briefing
One honest email a week — what actually matters in AI and software engineering. No noise, no sponsored content. Read by developers across 30+ countries.
No spam. Unsubscribe anytime.
More on AI
All posts →Connor Leahy: AI Will Destabilize Society Before Governments Respond
Connor Leahy of Conjecture warns AI could destabilize society. Five mechanisms already active in 2026, plus what developers building AI must know and do.
EU AI Act Aug 2, 2026: Article 50 Transparency Rules for Developers
Article 50 EU AI Act transparency obligations apply August 2, 2026 — chatbot disclosure, AI content marking, deepfake labels. High-risk rules delayed to 2027.
A BBC Reporter Hacked ChatGPT and Gemini With One Fake Blog Post
Thomas Germain published a fake article about a made-up hot dog contest and within 24 hours ChatGPT and Google Gemini were citing it as fact. Here is what this means for developers building AI products.
March 26 Claude Outage: API Errors Hit Global Developer Workflows
Claude outage on March 26, 2026 triggered global Anthropic API errors and app failures. Full timeline, impact, and failover playbook for developers.
Free Tool
Will AI replace your job?
4 questions. Get a personalised developer risk score based on your stack, role, and what you actually build day to day.
Check Your AI Risk Score →Written by
Software Engineer based in Delhi, India. Writes about AI models, semiconductor supply chains, and tech geopolitics — covering the intersection of infrastructure and global events. 1016+ posts cited by ChatGPT, Perplexity, and Gemini. Read in 167 countries.
