
This page is part of our MCP specification reference, a plain-English guide to the Model Context Protocol spec (version 2026-07-28), within The MCP Guide. Building a server? See MCP development.
Status in the 2026-07-28 spec: core (reference: the official changelog pages)
The MCP specification has five released versions as of October 2026: 2024-11-05, 2025-03-26, 2025-06-18, 2025-11-25 and 2026-07-28. Each version name is a date. The current version, 2026-07-28, made MCP stateless; earlier versions added OAuth-based sign-in, Streamable HTTP, structured tool output, elicitation and experimental tasks.
This page lists the headline changes in each version, taken only from the official changelog pages. For full detail, follow the link under each version.
A draft version is also online. As of 28 October 2026, the draft changelog says only that "changes since the most recent release will accumulate here."
Key Takeaways
- There are five released MCP spec versions, named by date, plus a working draft.
- 2025-03-26 added OAuth 2.1 authorization and replaced HTTP+SSE with Streamable HTTP.
- 2025-06-18 added structured tool output, elicitation and resource links, and removed JSON-RPC batching.
- 2025-11-25 added Client ID Metadata Documents, URL-mode elicitation, icons and experimental tasks.
- 2026-07-28 removed sessions and the handshake, added
server/discoverand MRTR, and deprecated Roots, Sampling, Logging and DCR. - Version dates mark the last backward-incompatible change; only the 2026-07-28 release date is confirmed on a page we cite.
How MCP versions are named
The versioning guide says version identifiers use YYYY-MM-DD "to indicate the last date backwards incompatible changes were made." Compatible updates keep the same version. Each version is Draft, Current or Final. Our page on MCP versioning and deprecation explains the rules.
MCP was open-sourced by Anthropic on 25 November 2024, according to Anthropic's announcement. The first spec version on the site is 2024-11-05.
Version history at a glance
| Version | Headline changes | Status (Oct 2026) |
|---|---|---|
| 2024-11-05 | Earliest version on the site: JSON-RPC, hosts/clients/servers, resources, prompts, tools, sampling | Legacy |
| 2025-03-26 | OAuth 2.1 authorization, Streamable HTTP, JSON-RPC batching, tool annotations, audio content | Legacy |
| 2025-06-18 | Batching removed, structured tool output, elicitation, resource links, protected resource metadata | Legacy |
| 2025-11-25 | CIMD, URL-mode elicitation, icons, incremental consent, experimental tasks, SDK tiers | Legacy |
| 2026-07-28 | Stateless core, server/discover, MRTR, subscriptions/listen, extensions, deprecation policy | Current |
"Legacy" is the 2026-07-28 spec's own term for handshake-based versions, defined on the versioning page.
2024-11-05
The 2024-11-05 specification set out the basics that still hold: JSON-RPC 2.0 messages between hosts, clients and servers, and the server features resources, prompts and tools. It included sampling as a client feature and a stateful connection that began with an initialize handshake. Its transports were stdio and HTTP with Server-Sent Events (HTTP+SSE).
2025-03-26
The 2025-03-26 changelog lists four major changes:
- A "comprehensive authorization framework based on OAuth 2.1."
- Streamable HTTP replaced the earlier HTTP+SSE transport.
- Support for JSON-RPC batching.
- Tool annotations, to describe behavior "like whether it is read-only or destructive."
It also added audio content, a message field on progress notifications and the completions capability.
2025-06-18
The 2025-06-18 changelog lists nine major changes. The ones most people notice:
- JSON-RPC batching was removed.
- Structured tool output was added.
- MCP servers were classified as OAuth Resource Servers, with protected resource metadata for finding the authorization server.
- Clients must implement Resource Indicators (RFC 8707) "to prevent malicious servers from obtaining access tokens."
- A new security best practices page.
- Elicitation, so servers can ask users for information.
- Resource links in tool results.
- The
MCP-Protocol-Versionheader on later HTTP requests.
It also added the title field for human-friendly names and expanded _meta.
2025-11-25
The 2025-11-25 changelog lists nine major changes, including:
- OpenID Connect Discovery support for finding authorization servers.
- Icons for tools, resources, resource templates and prompts.
- Incremental scope consent through
WWW-Authenticate. - Guidance on tool names.
- URL-mode elicitation.
- Tool calling inside sampling.
- OAuth Client ID Metadata Documents as a recommended client registration method.
- Experimental tasks for durable, polled requests.
It set JSON Schema 2020-12 as the default dialect. It also formalized governance, working groups and the SDK tiering system. See the official MCP SDKs.
2026-07-28 (current)
The 2026-07-28 changelog is the largest so far. The release announcement, dated 28 July 2026, calls the highlight "a stateless protocol core." Major changes:
- Protocol-level sessions and the
Mcp-Session-Idheader removed. - The
initializehandshake removed; every request carries version and capabilities in_meta. server/discoveradded; servers must implement it.subscriptions/listenreplaced the HTTP GET stream and resource subscribe calls.ping,logging/setLevelandnotifications/roots/list_changedremoved.- Tasks moved to the official
io.modelcontextprotocol/tasksextension. - Multi round-trip requests replaced server-initiated requests.
- A required
resultTypeon all results. - Stream resumability removed.
It also added the extensions capability field, required Mcp-Method and Mcp-Name HTTP headers, cache hints on list results and authorization hardening. It deprecated Roots, Sampling, Logging and Dynamic Client Registration, and adopted the feature lifecycle policy. Our plain-English summary is what changed in the July 2026 MCP specification, and the deep dive is why MCP became stateless.
Here is how a version mismatch looks in 2026-07-28, from the versioning page:
{
"jsonrpc": "2.0",
"id": 1,
"error": {
"code": -32022,
"message": "Unsupported protocol version",
"data": { "supported": ["2026-07-28", "2025-11-25"], "requested": "1900-01-01" }
}
}
How to use this history
- Before upgrading, read the changelog for every version between yours and the target. Changes stack.
- Check what is deprecated before you build. Our MCP versioning and deprecation page lists every deprecated feature and its earliest removal.
- Ask vendors which version they support. A server on 2025-06-18 lacks CIMD, icons and the stateless core.
Common mistakes
- Mixing versions in one design. For example, using
initializetogether with 2026-07-28_metafields. - Assuming the version date is the release date. It marks the last breaking change.
- Relying on blog summaries for detail. Each changelog links to a full GitHub comparison of every change.
- Missing that batching came and went. It existed only in 2025-03-26.
Next step
The SDKs are where these versions reach your code. Read the official MCP SDKs: languages, tiers and versions, or return to the MCP specification hub.
Frequently asked questions
How many versions of the MCP specification are there?
Five released versions as of October 2026: 2024-11-05, 2025-03-26, 2025-06-18, 2025-11-25 and 2026-07-28. There is also a working draft.
What is the latest MCP spec version?
2026-07-28, announced on 28 July 2026. It is labeled Current on modelcontextprotocol.io as of October 2026.
When did MCP add OAuth?
The authorization framework based on OAuth 2.1 arrived in 2025-03-26. Later versions refined it, including protected resource metadata in 2025-06-18 and Client ID Metadata Documents in 2025-11-25.
When was Streamable HTTP introduced?
In 2025-03-26, replacing the earlier HTTP+SSE transport. HTTP+SSE is formally deprecated under the 2026 lifecycle policy.
Where is the official MCP changelog?
Each version has a "Key Changes" page at modelcontextprotocol.io/specification/VERSION/changelog. Each one links to a GitHub comparison listing every change since the previous version.











