TokenMix Research Lab · 2026-06-04

MCP Protocol Updates 2026: 9 Spec Changes, RC Migration Map
Last Updated: 2026-06-04 Author: TokenMix Research Lab Data verified: 2026-06-04 - Model Context Protocol latest stable spec, 2025-11-25 / 2025-06-18 / 2025-03-26 changelogs, 2026 roadmap, 2026-07-28 release candidate blog, MCP Apps, Extensions, SEPs, and GitHub specification repository
The latest stable MCP spec is 2025-11-25. The 2026-07-28 release is only a release candidate today, but it is the migration event developers should plan for now.
MCP search results are noisy because "update" can mean three different things: the latest stable specification, a future release candidate, or an SDK/server package release. The official spec page redirects to version 2025-11-25 and labels it latest (MCP specification). The May 21, 2026 maintainer post says the 2026-07-28 release candidate is available and the final specification is scheduled for July 28, 2026, with breaking changes including a stateless protocol core, first-class extensions, Tasks as an extension, MCP Apps, authorization hardening, deprecations for Roots/Sampling/Logging, and full JSON Schema 2020-12 for tools (MCP RC post). The short answer: do not call 2026-07-28 stable yet. Do start migration testing if your MCP servers depend on sessions, initialize, Mcp-Session-Id, experimental Tasks, or literal resource error codes.
Table of Contents
- Quick Verdict
- Version Timeline
- Latest Stable vs Release Candidate
- What Changed in 2025-11-25
- What Changed in 2025-06-18 and 2025-03-26
- 2026-07-28 RC Migration Map
- Tools Resources Prompts and Apps
- Migration Cost Math
- Implementation Checklist
- Risks and Caveats
- Final Recommendation
- FAQ
- Sources
- Related Articles
Quick Verdict
| Claim | Status | Source |
|---|---|---|
Latest stable MCP specification is 2025-11-25 as of 2026-06-04 |
Confirmed | MCP specification |
2026-07-28 is already the stable MCP spec |
False | RC post says release candidate, final scheduled July 28 |
The 2026 RC removes initialize/initialized handshake and Mcp-Session-Id from the protocol layer |
Confirmed RC | RC post |
| The 2026 RC adds a stateless core for ordinary HTTP infrastructure | Confirmed RC | RC post |
| Extensions become first-class and use reverse-DNS identifiers | Confirmed RC | RC post, Extensions post |
| MCP Apps are the first official MCP extension and were live in January 2026 | Confirmed | MCP Apps post |
| Tasks shipped experimental in 2025-11-25 and moves to an extension in the 2026 RC | Confirmed RC | 2025-11-25 changelog, Tasks SEP |
| Roots, Sampling, and Logging are removed today | False | RC post says deprecated, not removed |
| Tool annotations are security contracts | False | Tool annotations post says they are hints and untrusted unless from trusted servers |
| Every SDK supports the RC today | Speculation | Official post says Tier 1 SDKs are expected to ship support during validation window, not that all have done so |
Version Timeline
| Date | Version or event | Main change | Status |
|---|---|---|---|
| 2024-11-05 | Initial stable spec | Tools, resources, prompts, sampling, JSON-RPC foundation | Confirmed |
| 2025-03-26 | Stable revision | OAuth 2.1 auth framework, Streamable HTTP, JSON-RPC batching, tool annotations | Confirmed |
| 2025-06-18 | Stable revision | Removed JSON-RPC batching, structured tool output, OAuth Resource Server classification, resource links, elicitation | Confirmed |
| 2025-11-25 | Latest stable | OIDC discovery, icons metadata, incremental consent, URL mode elicitation, sampling tool calling, OAuth Client ID metadata, experimental Tasks | Confirmed |
| 2026-01-26 | MCP Apps | First official MCP extension, interactive UI resources in sandboxed iframes | Confirmed |
| 2026-03-09 | 2026 roadmap | Transport scalability, agent communication, governance maturation, enterprise readiness | Confirmed |
| 2026-03-11 | Extensions explainer | Optional additive extensions, official/recommended/community patterns | Confirmed |
| 2026-03-16 | Tool annotations risk post | Tool annotations are hints, not guarantees | Confirmed |
| 2026-04-08 | Maintainer update | Clare Liguori joins Core Maintainers; Den Delimarsky becomes Lead Maintainer | Confirmed |
| 2026-05-21 | 2026-07-28 RC |
Stateless core, extensions, Tasks, Apps, auth hardening, deprecations, JSON Schema 2020-12 | Confirmed RC |
| 2026-07-28 | Planned final spec | Scheduled final date, not yet released on 2026-06-04 | Likely scheduled |
The main CTR problem in the old page was that it looked like a generic changelog. The search intent is sharper: developers want to know what is official, what changed, and what they must migrate.
Latest Stable vs Release Candidate
| Question | 2025-11-25 stable | 2026-07-28 RC | Migration read |
|---|---|---|---|
| Is it stable today? | Yes | No, release candidate | Ship stable; test RC |
| Protocol state | Stateful HTTP sessions still exist | Stateless protocol layer | Server fleet design changes |
| Handshake | initialize / initialized |
Removed in RC | Client initialization code changes |
| Session header | Mcp-Session-Id |
Removed in RC | Sticky routing should become unnecessary |
| Capabilities | Negotiated at initialization | Carried per request in _meta |
More request metadata |
| Discovery | Server capabilities via connection | server/discover in RC |
Easier preflight |
| Extensions | Present but less formal | First-class framework | Apps and Tasks can evolve separately |
| Tasks | Experimental core feature | Extension with new lifecycle | Breaking migration for early adopters |
| Roots/Sampling/Logging | Active | Deprecated, still works | Avoid new dependencies |
| Tool schema | Limited JSON Schema style | Full JSON Schema 2020-12 for tools | Validator upgrades needed |
The safe production position is boring: if you are shipping this week, target 2025-11-25. If you run remote MCP servers, start an RC branch for 2026-07-28 now.
What Changed in 2025-11-25
| Change | Why it matters | Status |
|---|---|---|
| OpenID Connect Discovery support | Makes authorization server discovery closer to common OAuth/OIDC deployments | Confirmed |
| Icons metadata for tools/resources/resource templates/prompts | Improves client display and discovery UX | Confirmed |
Incremental scope consent via WWW-Authenticate |
Allows step-up auth instead of asking for everything up front | Confirmed |
| Tool name guidance | Reduces naming ambiguity across servers | Confirmed |
Standards-based ElicitResult and enum support |
Better user-input flows and form-like choices | Confirmed |
| URL mode elicitation | Lets servers ask users for URL-shaped input | Confirmed |
| Tool calling support in sampling | Lets sampling include tools and toolChoice parameters |
Confirmed |
| OAuth Client ID Metadata Documents | Recommended client registration mechanism | Confirmed |
| Experimental Tasks | Durable requests with polling and deferred retrieval | Confirmed |
| JSON Schema 2020-12 default dialect | Aligns schema validation defaults | Confirmed |
| SDK tiering system | Creates clearer support expectations for SDKs | Confirmed |
The 2025-11-25 release is the real stable base. It is also where the future migration risk starts: Tasks are experimental there, and the 2026 RC changes their shape.
What Changed in 2025-06-18 and 2025-03-26
| Version | Change | Current interpretation |
|---|---|---|
| 2025-03-26 | Added OAuth 2.1 authorization framework | Foundation for later auth hardening |
| 2025-03-26 | Replaced HTTP+SSE with Streamable HTTP | Remote MCP becomes more practical |
| 2025-03-26 | Added JSON-RPC batching | Later removed, so do not rely on old batching behavior |
| 2025-03-26 | Added tool annotations | Useful risk hints, not security guarantees |
| 2025-03-26 | Added audio content type | Expanded content beyond text/image |
| 2025-06-18 | Removed JSON-RPC batching | Confirms batching was not stable long term |
| 2025-06-18 | Added structured tool output | Better machine-readable tool results |
| 2025-06-18 | Classified MCP servers as OAuth Resource Servers | Tightens auth model |
| 2025-06-18 | Required Resource Indicators per RFC 8707 | Reduces token misuse risk |
| 2025-06-18 | Added elicitation | Server can request more user info during interaction |
| 2025-06-18 | Added resource links in tool call results | Tool outputs can point at resources cleanly |
| 2025-06-18 | Required MCP-Protocol-Version header in subsequent HTTP requests |
Version negotiation becomes more explicit |
False read to avoid: "MCP just changed once in April 2026." No. The meaningful protocol sequence is 2024-11-05, 2025-03-26, 2025-06-18, 2025-11-25, then the 2026-07-28 RC track.
2026-07-28 RC Migration Map
| RC change | Who is affected | Migration action | Risk |
|---|---|---|---|
| Stateless protocol core | Remote MCP server operators | Remove dependence on sticky sessions and shared session stores | High |
initialize handshake removed |
Client SDK authors and custom clients | Move client info/capabilities into request _meta |
High |
Mcp-Session-Id removed |
Gateways/load balancers | Stop routing by session header | High |
server/discover added |
Clients and registries | Add capability discovery preflight | Medium |
Mcp-Method and Mcp-Name headers |
Gateways, rate limiters, observability | Route/rate-limit without body inspection | Medium |
ttlMs and cacheScope |
Clients listing tools/resources | Cache list/read results safely | Medium |
W3C Trace Context in _meta |
SDKs and observability teams | Propagate traceparent, tracestate, baggage |
Medium |
| Extensions framework | Client/server implementers | Negotiate reverse-DNS extension IDs | Medium |
| MCP Apps official extension | Tool developers building UI | Serve audited UI resources, sandboxed iframe rendering | Medium |
| Tasks extension | Early Tasks adopters | Replace experimental lifecycle with tasks/get, tasks/update, tasks/cancel |
High |
| Auth hardening | OAuth/OIDC integrations | Validate issuer, application type, token refresh and scope rules | High |
| Roots/Sampling/Logging deprecated | Existing feature users | Avoid new dependencies; plan alternatives | Medium |
| JSON Schema 2020-12 for tools | Tool schema validators | Support composition, conditionals, refs, bounded validation | Medium |
| Resource missing error code change | Clients matching literal errors | Update -32002 handling to -32602 |
Low |
The direct read: 2026-07-28 is a real breaking migration for infrastructure-heavy MCP deployments. Local toy servers may barely notice. Remote multi-tenant servers will.
Tools Resources Prompts and Apps
| Primitive | Stable meaning today | 2026 direction | Probe verdict |
|---|---|---|---|
| Tools | Functions the AI model can execute | Stronger schemas, risk annotations, richer outputs | Core |
| Resources | Context and data exposed by servers | Resource links, cache scopes, app UI templates | Core |
| Prompts | Templated messages/workflows | Icons metadata and better discovery UX | Core |
| Roots | Filesystem/URI boundary hints | Deprecated in RC | Avoid new use |
| Sampling | Server-initiated LLM interaction | Deprecated in RC | Prefer direct provider APIs |
| Logging | Protocol logging feature | Deprecated in RC | Use stderr or OpenTelemetry |
| MCP Apps | Interactive UI extension | First official extension, production-ready since Jan 2026 | Extension |
| Tasks | Long-running work | Moves from experimental core to extension | Extension |
| Auth extensions | Enterprise auth patterns | Expected to carry enterprise readiness work | Extension |
The key product shift is MCP Apps. The January 2026 post says tools can return interactive UI components rendered directly in the conversation, with sandboxed iframes and JSON-RPC over postMessage (MCP Apps). That makes MCP less like "function calling with a new name" and more like an agent application platform.
For production agent routing, MCP is one layer. It does not replace AI API Gateway, MCP Gateway, or TokenMix vs OpenRouter vs Portkey vs LiteLLM decisions. MCP standardizes tool/context interaction; gateways manage model access, fallback, cost, and policy.
Migration Cost Math
These are planning estimates, not official MCP benchmarks. Replace the assumptions with your repo numbers.
| Scenario | Assumption | Estimate | Status |
|---|---|---|---|
| Small local MCP server | 1 server, no HTTP, no Tasks, no custom client | 2-4 engineer-hours | Speculation |
| Remote server behind one gateway | 1 server + 1 client + 1 gateway; session header used | 12-24 engineer-hours | Speculation |
| Multi-server platform | 5 servers + custom SDK wrapper + Tasks + observability | 60-120 engineer-hours | Speculation |
| Enterprise fleet | 20 servers + OAuth/OIDC + audit + app UI review | 3-6 engineer-weeks | Speculation |
Cost calculation 1: if a team has 4 remote MCP servers and each server needs 6 hours to remove session assumptions, add 4 x 6 = 24 hours. Add one 8-hour gateway pass for Mcp-Method / Mcp-Name routing and one 8-hour test pass. That is 40 hours, or one focused engineering week.
Cost calculation 2: if an early Tasks implementation exists in 3 servers and each server needs 10 hours to migrate from experimental Tasks to the extension lifecycle, the Tasks line alone is 3 x 10 = 30 hours. The risk is not the method names; it is retry, polling, cancellation, and retained-result semantics.
Cost calculation 3: if your client literally matches the missing-resource code -32002 in 12 tests and 4 code paths, fixing the RC error-code change may be a half-day. If that error is baked into SDK public behavior, it becomes a release-management problem, not a patch.
Implementation Checklist
| Check | Stable 2025-11-25 |
RC branch 2026-07-28 |
|---|---|---|
| Version handling | Negotiate stable version | Send protocol version per request |
| Session dependency | Accept existing sessions | Remove protocol-level session assumption |
| HTTP headers | Use stable required headers | Add Mcp-Method, Mcp-Name |
| Capability discovery | Initialization path | Add server/discover path |
| Tool schemas | Validate current schema | Upgrade to JSON Schema 2020-12 handling |
| Tasks | Experimental if used | Migrate to extension ID |
| Apps | Optional extension | Confirm host support matrix |
| Auth | OAuth/OIDC support | Validate issuer and registration details |
| Observability | Logs and app traces | Add W3C Trace Context propagation |
| Deprecations | Existing features still work | Avoid new Roots/Sampling/Logging reliance |
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":"mcp protocol update"}}}
def should_start_mcp_rc_migration(server):
if server.get("uses_remote_http") and server.get("uses_session_header"):
return "Start now: stateless RC changes affect routing and scaling."
if server.get("uses_experimental_tasks"):
return "Start now: Tasks moves to an extension and is not wire-compatible."
if server.get("custom_oauth"):
return "Start auth validation: issuer and registration behavior changes."
if server.get("local_stdio_only"):
return "Track RC, but stable 2025-11-25 is probably enough this week."
return "Audit first: list protocol version, transport, auth, Tasks, Apps, schemas."
Risks and Caveats
| Risk | Status | What to do |
|---|---|---|
| Treating RC as stable | Confirmed risk | Do not publish compatibility promises until final |
| Assuming all SDKs support RC | Speculation | Check each SDK release notes |
| Migrating Tasks too early without compatibility shim | Confirmed RC risk | Bridge experimental and extension surfaces if needed |
| Ignoring deprecated Roots/Sampling/Logging | Confirmed RC risk | Stop adding new dependency on deprecated features |
| Trusting tool annotations as security guarantees | False assumption | Treat annotations as hints |
| Skipping OAuth issuer validation | Confirmed RC risk | Validate auth response issuer |
| Relying on sticky sessions forever | Confirmed RC risk | Plan explicit handles and stateless routing |
| Overbuilding enterprise features into core | Likely risk | Use extensions where possible |
Security note: MCP's own specification says tools can create arbitrary data access and code execution paths, and users must consent to data access and actions. The protocol cannot enforce all trust rules alone (MCP specification). That is why Flowise MCP RCE belongs in the same cluster as protocol updates.
Final Recommendation
Target 2025-11-25 for production today. Start a 2026-07-28 RC migration branch if you operate remote MCP servers, use experimental Tasks, own a custom client, or run OAuth/OIDC auth. The main change is not a new tool field. It is the move to stateless HTTP plus extensions.
FAQ
What is the latest MCP specification version?
The latest stable MCP specification is 2025-11-25 as of June 4, 2026. The official specification page redirects to that version and labels it latest.
Is the 2026-07-28 MCP spec released?
No. The 2026-07-28 MCP specification is a release candidate today. The official maintainer post says the final specification is scheduled for July 28, 2026.
What is the biggest MCP protocol update in 2026?
The biggest update is the stateless protocol core in the 2026-07-28 RC. It removes the initialization handshake and protocol-level session header, making remote MCP servers easier to run behind normal HTTP infrastructure.
Do I need to migrate from MCP 2025-11-25 now?
Not for ordinary stable production. You should start testing if you run remote HTTP MCP servers, rely on Mcp-Session-Id, built custom clients, or shipped against experimental Tasks.
Are MCP Apps part of the core protocol?
No. MCP Apps are an official extension. They let tools return interactive UI resources that hosts render in sandboxed iframes.
Are Roots, Sampling, and Logging removed?
No. In the 2026 RC they are deprecated, not removed. The methods and capability flags still work in the release candidate, but new implementations should avoid depending on them.
What changed for MCP Tasks?
Tasks were experimental in the 2025-11-25 core spec. The 2026 RC moves Tasks into an official extension with a different lifecycle using tasks/get, tasks/update, and tasks/cancel.
Do tool annotations make MCP tools safe?
No. Tool annotations are hints, not security guarantees. Clients should treat them as untrusted unless they come from a trusted server.
Sources
- MCP Specification Latest - official latest stable spec page
- MCP 2025-11-25 Changelog - official stable changelog
- MCP 2025-06-18 Changelog - official stable changelog
- MCP 2025-03-26 Changelog - official stable changelog
- MCP 2024-11-05 Specification - initial stable spec baseline
- The 2026-07-28 MCP Specification Release Candidate - official RC announcement
- The 2026 MCP Roadmap - official roadmap
- MCP Apps - Bringing UI Capabilities To MCP Clients - official first extension announcement
- Understanding MCP Extensions - official extension explainer
- Tool Annotations as Risk Vocabulary - official risk guidance
- Specification Enhancement Proposals - official SEP index
- SEP-2663: Tasks Extension - official Tasks extension SEP
- SEP-2567: Sessionless MCP via Explicit State Handles - official sessionless proposal
- MCP GitHub Specification Repository - official source repository
Related Articles
- MCP Gateway 2026: Tool Access, Governance, Agent Routing
- Flowise MCP RCE: 10 Fixes for CVE-2026-40933 and Upsonic
- AI API Gateway 2026: Routing, Fallbacks, Observability, and Cost Control
- WorldClaw vs B.AI vs TokenMix: AI Agent Gateway Verdict (2026)
- TokenMix vs OpenRouter vs Portkey vs LiteLLM: 2026 Cost Guide