DevelopmentNew Release14 min readPublished July 21, 2026

Release candidate since May 21 · set to finalize July 28 · one-week decision window

MCP Goes Stateless July 28: What Breaks, What Gets Cheaper

The Model Context Protocol’s next specification is scheduled to finalize on July 28, 2026 — with a stateless core that would eliminate the session handshake entirely. The release candidate has been public since May 21. Here is what the announced change breaks, where hosting genuinely gets simpler, and what the new 12-month deprecation policy lets you safely defer.

DA
Digital Applied Team
Senior strategists · Published July 21, 2026
PublishedJuly 21, 2026
Read time14 min
Sources8
Spec finalization
Jul 28
announced — not yet ratified
Validation window
10wks
May 21 → Jul 28
Deprecation grace
12mo
Active → Deprecated → Removed
Auth-hardening SEPs
6
OAuth 2.1 resource servers

The MCP 2026-07-28 specification — the next major revision of the Model Context Protocol — is scheduled to finalize on July 28, 2026, and its headline change is architectural: the protocol core is set to become stateless. The release candidate, published May 21, eliminates the initialize handshake and the Mcp-Session-Id header entirely, which would let any request land on any server instance.

That single change reshapes how remote MCP servers are hosted. It also breaks things. Sessions disappear, the Tasks feature is rebuilt around handles instead of session-bound objects, tasks/list is removed outright, three core features are marked deprecated, and six Specification Enhancement Proposals formally position MCP servers as OAuth 2.1 resource servers. If you operate a stateful MCP server today, you have roughly one week to decide what to migrate now and what to defer.

This post is the operator’s cut: what the announced spec breaks, what genuinely gets cheaper, and what the new 12-month deprecation policy lets you safely postpone. It stays deliberately in the news lane — for the wider protocol landscape, see how MCP compares to A2A, ACP, and UCP.

Key takeaways
  1. 01
    July 28 is announced, not shipped.The MCP maintainers published the release candidate on May 21, 2026 with a 10-week validation window. The spec is scheduled to finalize July 28 — nothing here is ratified yet, and the final text could still shift.
  2. 02
    The protocol core is set to go stateless.The initialize/initialized handshake and the Mcp-Session-Id header would be eliminated. New per-request Mcp-Method and Mcp-Name headers let any request hit any server instance — no sticky routing required.
  3. 03
    The hosting win is real but qualitative.No shared session store, no sticky sessions, no deep-packet inspection at the gateway — a remote MCP server could run behind a plain round-robin load balancer. No source publishes a dollar or percentage savings figure, and neither do we.
  4. 04
    Extensions become first-class: MCP Apps and Tasks.MCP Apps (SEP-1865) would let servers declare sandboxed-iframe UIs; Tasks is redesigned around server-issued handles, and tasks/list is removed because there is no session left to scope it to.
  5. 05
    A 12-month deprecation policy tells you what can wait.Roots, Sampling, and Logging are marked deprecated with documented replacements and at least 12 months of continued function — while session-state removal and the OAuth 2.1 alignment need attention before the cutover.

01The AnnouncementA release candidate with a hard date attached.

On May 21, 2026, the MCP maintainers published the release candidate for the “2026-07-28” specification on the official MCP blog — the version string is the finalization date. The candidate carries a deliberate 10-week validation window, from May 21 to July 28, so SDK maintainers and client implementers can test against real workloads before the spec locks.

The revision it replaces is the still-in-force 2025-11-25 specification, whose transports are stdio and Streamable HTTP (the older HTTP+SSE transport was deprecated back in March 2025). The release candidate bundles five threads into one revision: the stateless core, MCP Apps as the first official Extension, a redesigned Tasks extension, an auth-hardening package of six SEPs, and — for the first time — a formal deprecation policy.

Mainstream coverage followed this week: TechCrunch ran an explainer on July 20 framing MCP as “one of the basic building blocks of AI interoperability,” noting that as of April 2026 every major AI assistant platform — Claude, ChatGPT, Perplexity, Grok, and Mistral — supports MCP as a client protocol. The scale is why a wire-format change matters this much.

Framing check
Everything in this post describes an announced future change. The release-candidate blog post — published May 21, 2026 — describes a specification scheduled to finalize on July 28. Until ratification, treat every detail below as “the release candidate specifies,” not “MCP now does.”

02What BreaksThe handshake and the session ID go away.

Today’s protocol is stateful by design. A client opens with an initialize request declaring its version and capabilities, the server answers and hands back a session ID, and every subsequent request on that conversation must carry the same Mcp-Session-Id header. That design is fine for one process talking to one local server over stdio. It falls apart behind a load balancer.

Picture a real deployment. You're running a server for millions of users, behind a load balancer... Now every one of those machines has to know about a session ID that some other machine handed out.— Nate Barbettini, founding engineer at Arcade, quoted in TechCrunch (July 20, 2026)

The release candidate deletes the problem instead of patching it. The initialize/initialized handshake and the Mcp-Session-Id header are eliminated entirely. Routing information moves into per-request headers — new Mcp-Method and Mcp-Name headers describe what each request is, so any request can land on any server instance with no requirement that repeat requests hit the same machine. David Soria Parra of the MCP core team summarized the candidate the same way: no handshake, no session ID, any request can hit any instance — plus first-class extensions, auth hardening, and a proper deprecation policy.

The breakage follows directly. Any server code that scopes state to a session ID — caches, workflow progress, per-conversation configuration — has no session to scope to. The migration pattern WorkOS describes in its June 18 explainer is to replace session-scoped state with explicit handles passed as tool arguments: the state moves into the request itself, not a server-side lookup keyed by connection. If you built your server from a stateful template — including patterns from our own guides to building an MCP server from scratch — this is the part of the codebase to re-examine first.

03What Gets CheaperPlain load balancers, no session store.

The infrastructure payoff is the industry framing around the change, and it is worth stating precisely. A remote MCP server that previously needed sticky sessions, a shared session store, and deep-packet inspection at the gateway could — under the announced design — run behind a plain round-robin load balancer. Scaling horizontally becomes adding instances, not synchronizing session state across them.

Be careful with the numbers here, because there aren’t any. No source — not the MCP blog, not TechCrunch, not WorkOS — publishes a quantified dollar or percentage infrastructure saving from dropping sticky sessions, and any figure you see attached to this change is invented. The win is structural: fewer moving parts, cheaper-to- operate topology, and compatibility with the boring, well-understood load-balancing infrastructure teams already run. TechCrunch adds commercial color: Arcade, the AI-agent-infrastructure startup where Barbettini works, raised $60M in June 2026 by TechCrunch’s own account — session scaling is a problem companies are funded to solve right now.

Our read on the trend: MCP is retracing the web’s own architectural history at speed. HTTP won partly because statelessness made it trivially load-balanceable, and every serious protocol that reaches production scale eventually sheds connection-bound state for request-bound context. That MCP is making this move roughly a year and a half after its late-2024 debut — while the ecosystem is still growing — suggests the maintainers are optimizing for the enterprise deployments ahead of it, not the desktop integrations behind it.

Official registry
Latest server records
9,652

A May 24, 2026 pull of the official registry.modelcontextprotocol.io API showed roughly 9,652 latest server records — up from about 6,800 tracked at the end of 2025.

Registry API · May 24 pull
All versions
Every published version
28,959

The same registry pull counts roughly 28,959 records when every published version of every server is included — a different cut of the same API, not a second ecosystem estimate.

Same pull, different cut
Broader estimate
Anthropic's wider count
10,000+

Anthropic's December 2025 ecosystem update separately cited 10,000+ active public MCP servers — a broader, differently scoped estimate that includes servers the official registry doesn't list. The two methodologies don't merge.

Different methodology

Whichever count you prefer, the population of servers that will need to absorb this change is five figures. If your team runs production tool servers as part of a wider platform — the kind of work covered in a full TypeScript MCP server development guide — the simplification lands directly on your hosting architecture.

04ExtensionsMCP Apps and a rebuilt Tasks model.

The release candidate makes extensions first-class, and two ship with it. MCP Apps, tracked as SEP-1865, would become the spec’s first official Extension: servers can declare an HTML interface that clients render inside a sandboxed iframe. UI actions route back through the same JSON-RPC channel the underlying tool call uses — no separate wire format and no separate authorization path for the rendered UI. Templates are declared up front so clients can prefetch and security-review them before the tool ever executes, with a cacheable ttlMs window controlling how long a fetched tools/list response can be reused.

One disambiguation worth making: this spec-level MCP Apps is not the same thing as the client-side feature Cursor also calls “MCP Apps” for structured tool output. The extension described here is server-declared, sandboxed-iframe UI defined in the protocol itself. Anthropic has been shipping in this direction already — see Anthropic’s existing MCP Apps implementation inside Claude for the implementation-level view; this post is the spec layer.

Tasks graduates from an experimental core-spec feature to a standalone, formally versioned Extension — rebuilt for the stateless world. Under the redesigned model, a server answers a tools/call with a task handle rather than a session-bound task object, and the client drives execution forward via tasks/get, tasks/update, and tasks/cancel. Task creation is server-directed: the server, not the client, decides which calls become an async task handle and which execute inline. And tasks/list is removed outright — listing “all tasks for this session” is undefined once there is no session to scope the list to. If your client UI enumerates running tasks today, that surface needs a new data source.

05Auth HardeningSix SEPs make servers OAuth 2.1 resource servers.

The second-largest block of the release candidate is authorization. Six Specification Enhancement Proposals formally position MCP servers as OAuth 2.1 resource servers — an explicit, mandatory alignment, which retires any lingering notion that the spec leaves remote-server auth out of scope. Only one of the six carries a number we can verify (SEP-1865 is MCP Apps, not auth); the auth changes are best understood by the RFCs they lean on, which WorkOS’s June 18 explainer lays out in detail. The table below compresses them into one pass.

The auth-hardening changes in the MCP 2026-07-28 release candidate: each change’s pre-change behavior, the new requirement, and the risk it addresses. Compiled from the MCP release-candidate blog post (May 21, 2026) and WorkOS’s authentication explainer (June 18, 2026).
Auth changePre-change behaviorRelease-candidate requirementRisk addressed
Protected Resource Metadata (RFC 9728)Clients relied on hardcoded configuration to find the right authorization serverServers must expose a .well-known/oauth-protected-resource endpoint (or equivalent header) so clients auto-discover the correct authorization serverMisdirected auth flows from stale or wrong hardcoded config
Resource Indicators (RFC 8707)Tokens were not explicitly bound to the server they were requested forA client must explicitly declare which MCP server a requested token is meant forToken reuse (“confused deputy”): a token issued for one server replayed against another
Issuer verification (RFC 9207)Clients did not have to validate which authorization server issued a responseValidating the iss parameter becomes mandatory; credentials bind to the specific issuer“Mix-up” attacks in deployments running multiple authorization servers
Client registration (CIMD vs. DCR)Dynamic Client Registration (RFC 7591) was the registration pathClient ID Metadata Documents become the preferred mechanism; DCR is deprecated but kept for older authorization serversLegacy registration reduced to a backward-compatibility path rather than the default
MCP Apps consent pathNew surface — interactive UIs had no spec-level authorization storyUI actions route through the same JSON-RPC channel and authorization path as the underlying tool callA second, separately-authorized wire format for rendered UIs
Don't conflate: EMA is not the July 28 spec
Enterprise-Managed Authorization — the extension that lets a client exchange an SSO identity assertion for an access token via an Identity Assertion JWT Authorization Grant — is a separate extension that reached stable status on July 6, 2026, per InfoQ. It shipped with named adopters: Okta as identity provider; Anthropic’s Claude, Claude Code, and Cowork plus VS Code as clients; Asana, Atlassian, Canva, Figma, Granola, Linear, and Supabase as servers, with Slack reported in progress. The MCP team’s framing, as quoted by InfoQ: “Users inherit access to the servers their organisation has approved” with “a single log in.” It is part of the same 2026 auth-hardening arc — but it is already stable, while the July 28 items are announced and not yet finalized. And per its own documentation, EMA governs connection eligibility only, not per-action runtime authorization.

06DeprecationsA 12-month lifecycle tells you what can wait.

Quietly, the most consequential governance change in the release candidate is procedural: a formal deprecation policy. Features must move through an Active → Deprecated → Removed lifecycle with a minimum 12-month window between each phase — ending the ad hoc removals of earlier spec revisions. For anyone planning migration work, that policy is the difference between a fire drill and a roadmap item.

Three current core-spec features are marked Deprecated under the new policy, each with a documented replacement. All three remain functional for at least 12 months after deprecation:

Deprecated
Roots
Replacement: tool parameters + Resource URIs

Filesystem-style roots give way to passing locations explicitly — as tool parameters or Resource URIs — consistent with the stateless move toward request-carried context.

12-month minimum grace
Deprecated
Sampling
Replacement: direct LLM API calls

Servers that asked the client to run model completions on their behalf are pointed at calling LLM APIs directly from the server instead.

12-month minimum grace
Deprecated
Logging
Replacement: stderr / OpenTelemetry

Protocol-level logging gives way to the observability stack you already run — stderr for local servers, OpenTelemetry for remote deployments.

12-month minimum grace

Alongside the removals, one capability quietly expands: tool schemas gain full JSON Schema 2020-12 support — composition, conditionals, and $ref references — versus the constrained subset current implementations rely on. Nothing forces you to adopt richer schemas, which puts this on the “free upgrade, your own pace” side of the ledger.

07SecurityThe stateless design moves the attack surface.

Most coverage frames the stateless move as a pure win. The security-research view is more balanced — and if you have to sign off on this migration, it belongs in the same brief. Akamai’s threat-research team, reported by SecurityWeek on June 26, identified specific new attack surfaces created by the redesign. With no protocol-enforced session boundaries, predictable state or task-handle IDs could enable workflow hijacking or unauthorized cross-tenant and cross-agent data access if implementers don’t randomize identifiers carefully. The redesigned Tasks model adds a denial-of-service vector: a client can send a single request that spawns an expensive long-running operation, then disconnect — leaving the server burning resources on a task nobody is waiting on.

The new headers carry their own risk. If a server implementation maps API keys, tokens, or PII into Mcp-Method or Mcp-Name, that data becomes visible to load balancers, reverse proxies, and logging systems that were never designed to redact MCP-specific header fields. And MCP Apps’ sandboxed-iframe surface introduces a stored cross-site-scripting risk class that security teams need to explicitly threat-model before shipping interactive tool UIs.

Akamai's core framing
Maxim Zavodchik, Akamai’s Senior Director of Threat Research, put the trade-off plainly in SecurityWeek’s June 26 coverage: “critical security boundaries now depend entirely on implementation quality.” The stateless spec removes some attack classes — session hijacking chief among them — but shifts responsibility for others, from ID predictability to header hygiene to task-abandonment DoS, onto individual server developers. Protocol-level enforcement is out; implementation discipline is in.

The practical response is to treat the migration as a security review trigger, not just a refactor. Randomize every handle and identifier, budget and expire abandoned tasks, audit what your gateway logs, and threat-model any UI surface before enabling it. For a structured pass, work through a full MCP server security audit checklist alongside the spec migration itself.

08The One-Week PlanWhat to migrate now, what to defer.

Nobody else is framing this as a decision window, but that is what the calendar says: from today, July 21, you have one week until the announced finalization. Not everything needs to move at once — the deprecation policy exists precisely so it doesn’t. The matrix below maps each announced change to whether it breaks something, saves something, or can wait.

The July 28 MCP migration matrix: each announced spec change grouped by whether it is breaking, cost-saving, or safe to defer, with the action needed before July 28 and who is affected. Compiled from the MCP release-candidate blog post (May 21, 2026), WorkOS’s migration checklist (June 18, 2026), and SecurityWeek’s report on Akamai’s analysis (June 26, 2026).
Spec changeWhat changesAction before July 28Who's affected
Breaking — act before the cutover
Stateless coreinitialize/initialized handshake and Mcp-Session-Id header eliminatedRemove all session-ID-scoped state; replace it with explicit handles passed as tool argumentsServers and clients
Per-request routing headersNew Mcp-Method and Mcp-Name headers describe each requestUpdate every client integration to send the new headers on every request; never map secrets or PII into themClient and integrator builders
Tasks redesigntools/call answers with a task handle; tasks/list removed; task creation is server-directedRework async flows around tasks/get, tasks/update, tasks/cancel; drop any tasks/list dependencyServers and clients
OAuth 2.1 alignmentServers formally positioned as OAuth 2.1 resource servers; RFC 9728 Protected Resource Metadata requiredAdd OAuth 2.1 authorization if currently unauthenticated; expose the .well-known metadata endpoint or headerServer operators
Cost-saving — falls out of the migration for free
Plain load-balancer routingAny request can land on any instance — no sticky sessions, no shared session store, no gateway packet inspectionNone beyond the core migration; retire session infrastructure once stateless, and load-test behind a genuine round-robin balancerServer operators
Prefetchable UI templatesMCP Apps templates declared up front with a cacheable ttlMs window on tools/listNone — clients gain prefetch plus security review before a tool executesClient builders
Full JSON Schema 2020-12Tool schemas gain composition, conditionals, and $ref referencesNone required — adopt richer schemas at your own paceServers and clients
Safe to defer — minimum 12-month deprecation grace
Roots deprecationDeprecated; replaced by tool parameters and Resource URIsNone — remains functional at least 12 months; schedule the swap as roadmap workServers and clients
Sampling deprecationDeprecated; replaced by direct LLM API calls from the serverNone — same 12-month grace; plan the server-side API pathServer operators
Logging deprecationDeprecated; replaced by stderr and OpenTelemetryNone — same 12-month grace; fold into existing observability workServer operators
DCR → CIMDDynamic Client Registration deprecated in favor of Client ID Metadata DocumentsNone immediately — DCR is kept for backward compatibility with older authorization serversClient builders

WorkOS’s pre-cutover checklist compresses the breaking rows into five actions: remove session-scoped state in favor of explicit handles, add OAuth 2.1 if the server is unauthenticated, add the Protected Resource Metadata endpoint or header, update every client integration to send the new required headers, and load-test multi-instance deployments behind a genuine round-robin load balancer before July 28. How that lands on your team depends on your seat:

Stateful server operator
Session-scoped state in production

You own the hard path: strip Mcp-Session-Id dependencies, move state into request-carried handles, and load-test behind a real round-robin balancer this week. The payoff is retiring sticky sessions and the shared session store.

Migrate now
Client / integrator builder
Apps and agents that call MCP servers

Plan for the new per-request Mcp-Method and Mcp-Name headers on every call, and audit any UI that lists running tasks — tasks/list goes away. Watch your SDK's changelog through the finalization.

Update integrations
Unauthenticated server
No OAuth story today

The release candidate makes OAuth 2.1 resource-server alignment explicit — auth is no longer optional posture for remote servers. Stand up authorization plus RFC 9728 metadata as part of the same migration.

Add auth with the migration
Roots / Sampling / Logging user
Deprecated-feature dependencies

Nothing breaks on July 28 — the 12-month lifecycle guarantees runway. Put the documented replacements (tool parameters, direct LLM calls, OpenTelemetry) on the roadmap and spend this week on the breaking rows instead.

Defer deliberately

One strategic note: a spec transition is a natural moment to revisit whether to build or buy your MCP infrastructure — the stateless design lowers the operational bar for self-hosting, while the auth requirements raise the engineering bar for doing it properly. If you want a senior pass on that decision, or on the migration itself, our AI transformation engagements start with exactly this kind of architecture review.

09ConclusionA protocol growing up in public.

The week ahead

One week to sort what breaks from what can wait.

The MCP 2026-07-28 release candidate is set to deliver the most structural revision in the protocol’s history: a stateless core that would let remote servers scale behind ordinary load balancers, first-class extensions in MCP Apps and Tasks, an explicit OAuth 2.1 alignment, and a deprecation policy that finally makes migration planning a calendar exercise instead of a scramble. None of it is ratified yet — and the honest framing matters, because the final text is due in a week.

The work splits cleanly. Breaking: session-scoped state, the new per-request headers, the Tasks rework, and the auth alignment — those deserve attention before the cutover. Free: simpler hosting topology and richer schemas. Deferrable: Roots, Sampling, Logging, and DCR, all cushioned by at least 12 months of guaranteed function. And the Akamai caveat belongs in every migration brief: statelessness moves security enforcement from the protocol to your implementation.

Looking forward, the 12-month lifecycle is the real signal. Ad hoc protocols don’t publish deprecation policies; platforms that expect enterprise dependence do. With five-figure server counts on every methodology and every major assistant platform speaking MCP as a client, the sensible projection is that the July 28 revision — if it finalizes as announced — becomes the baseline enterprises standardize on, and that stateful MCP servers age into legacy infrastructure well before the deprecation clocks force the issue. Migrate on your own schedule — but pick the schedule this week.

Ship the migration with senior review

The spec change is announced — the migration plan is yours to own.

Our team designs, builds, and migrates MCP servers and agentic integrations — stateless architecture, OAuth 2.1 alignment, and security review included, delivered in days not quarters.

Free consultationExpert guidanceTailored solutions
What we work on

MCP & agent infrastructure engagements

  • Stateless migration audits for existing MCP servers
  • OAuth 2.1 + Protected Resource Metadata implementation
  • Task-model redesign for async tool workflows
  • Security threat-modeling for MCP Apps UI surfaces
  • Build-vs-buy reviews for MCP hosting architecture
FAQ · MCP July 28 spec

The questions we get every week.

No. The MCP maintainers published a release candidate on May 21, 2026, and the final specification is scheduled to finalize on July 28, 2026. The candidate carries a deliberate 10-week validation window so SDK maintainers and client implementers can test against real workloads before the spec locks. As of July 21, nothing in the candidate is ratified — the stateless core, MCP Apps, the Tasks redesign, the auth hardening, and the deprecation policy are all announced-future changes, and details could still shift before or at finalization. Treat this post, and any coverage you read, as describing the release candidate rather than a shipped standard, and verify the final text on modelcontextprotocol.io once it lands.
Related dispatches

Continue exploring developer platform shifts.