Menu

AI

MCP Versioning and Deprecation Policy

How MCP versions work (date-based IDs, per-request negotiation) and how its 2026 deprecation policy retires features, with the 12-month window and current list.

By: Irina ShvayaOctober 28, 2026

MCP Versioning and Deprecation Policy

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 (version negotiation is required; the deprecation policy governs the spec itself)

MCP versions are dates, such as 2026-07-28, that mark the last time a backward-incompatible change was made. In the current spec, every request states the version it uses, and the server accepts or rejects each request on its own. Features are retired through a formal deprecation policy with a minimum twelve-month window.

Together, these rules tell you two things. Which version a client and server are speaking right now. And how much warning you get before a feature disappears.

This page covers both, using the versioning and compatibility page and the feature lifecycle and deprecation policy, as of October 2026.

Key Takeaways

  • MCP version IDs use the format YYYY-MM-DD and change only when backward-incompatible changes are made.
  • Revisions are Draft, Current or Final; as of October 2026, 2026-07-28 is Current.
  • Every request carries its version in _meta; unsupported versions get error -32022 with a list of supported ones.
  • Features move through three states: Active, Deprecated and Removed.
  • A deprecated feature stays for at least twelve months, or at least ninety days for an active security risk.
  • Roots, Sampling, Logging and Dynamic Client Registration are deprecated, with earliest removal on or after 2027-07-28.

What MCP versioning is

The versioning guide says MCP uses "string-based version identifiers following the format YYYY-MM-DD, to indicate the last date backwards incompatible changes were made." Backward-compatible updates do not bump the version.

Each revision has a label:

LabelMeaning
DraftIn progress, not ready for use
CurrentThe version to use; may still get backward-compatible changes
FinalPast and complete; will not change

Why MCP needs both rules

MCP has thousands of independent clients and servers. They upgrade at different times. Versioning lets two programs agree on rules for each request. The deprecation policy gives builders a predictable runway before something is taken away.

The policy came with the 2026-07-28 release. The changelog lists it under governance updates, adopted through SEP-2596.

How version negotiation works

"There is no negotiation handshake," the versioning page says. "Every request carries its protocol version, and the server accepts or rejects each request independently."

The client sets io.modelcontextprotocol/protocolVersion in _meta. On HTTP the same value also goes in the MCP-Protocol-Version header. If the server does not support it, it "MUST respond with an UnsupportedProtocolVersionError listing the versions it does support." Here is the spec's example:

{
  "jsonrpc": "2.0",
  "id": 1,
  "error": {
    "code": -32022,
    "message": "Unsupported protocol version",
    "data": {
      "supported": ["2026-07-28", "2025-11-25"],
      "requested": "1900-01-01"
    }
  }
}

The client SHOULD pick a version from supported and retry, or show an error if none match. Clients that want to choose up front can call server/discover first.

Old and new versions side by side

The spec calls 2026-07-28 and later "modern," and 2025-11-25 and earlier "legacy," because those used an initialize handshake. An implementation that supports both is "dual-era." A server MAY serve both eras on the same endpoint. The versioning page includes a full compatibility matrix, and our specification changelog lists what each version changed.

How the deprecation policy works

The feature lifecycle policy defines three states:

StateWhat it meansWhat you should do
ActivePart of the Current revisionImplement as specified
DeprecatedStill in the spec, scheduled for removal, with a migration pathDo not adopt it; migrate before earliest removal
RemovedDeleted from the draft; absent from the next Current revisionDo not depend on it in that revision

A feature may be deprecated when something newer covers the same need, when it carries a risk that cannot be fixed in place, or when adoption is negligible compared with its upkeep. Each deprecation needs a SEP with a migration path and a window "at least twelve" months long. The window starts when the revision marking it deprecated is released.

Removal is not automatic. Core Maintainers decide during release preparation, and "features may remain Deprecated, without removal, for much longer than the minimum deprecation window."

The twelve-month floor can be shortened only for an "active security risk," such as a vulnerability with a published advisory and no in-place fix. Even then, the window must be "at least ninety days."

Tier 1 SDKs must mark deprecated features with their language's native deprecation tag in their next release, and should warn at runtime. See the official MCP SDKs for which SDKs are Tier 1.

What is deprecated as of October 2026

The deprecated features registry is the single list to check:

FeatureDeprecated inMigration pathEarliest removal
Roots2026-07-28Tool parameters, resource URIs or server configurationFirst revision on or after 2027-07-28
Sampling2026-07-28Call AI model provider APIs directlyFirst revision on or after 2027-07-28
Logging2026-07-28stderr for stdio; OpenTelemetryFirst revision on or after 2027-07-28
Dynamic Client Registration2026-07-28Client ID Metadata DocumentsFirst revision on or after 2027-07-28
includeContext "thisServer"/"allServers"2025-11-25Omit the field or use "none"Follows Sampling
HTTP+SSE transport2025-03-26Streamable HTTPThree months after SEP-2596 reaches Final

The registry also says: "No features have been removed under this policy yet."

What changed across spec versions

  • 2025-06-18 and earlier: versions were agreed once in initialize. The 2025-06-18 release added the MCP-Protocol-Version HTTP header for later requests, per its changelog.
  • 2025-11-25: the 2025-11-25 lifecycle page still required the client to send a version in initialize, with the server answering with the same or another version it supports.
  • 2026-07-28: per-request versions, server/discover, the UnsupportedProtocolVersionError, the formal lifecycle policy and the deprecated registry.

Common mistakes

  • Treating "deprecated" as "removed." Deprecated features still work. Plan the migration; do not panic.
  • Treating "deprecated" as "fine forever." New implementations should not adopt them.
  • Falling back to initialize on a modern error. If a server returns -32022, it is modern. Retry with a supported version instead.
  • Reading a release date as the version. The version date marks the last breaking change, not necessarily the publish date.
  • Expecting SDKs to drop features on the spec's schedule. The policy says SDK removal follows each SDK's own support policy.

Next step

See every version and its headline changes in MCP specification version history and changelog. For a governance view of upgrades, read MCP governance for IT leaders, or browse the MCP specification hub.

Frequently asked questions

How are MCP versions numbered?

They are dates in YYYY-MM-DD format. The date marks the last time backward-incompatible changes were made. Backward-compatible updates keep the same version.

What is the current MCP version?

As of October 2026, it is 2026-07-28. Earlier versions are 2025-11-25, 2025-06-18, 2025-03-26 and 2024-11-05, and a draft is in progress.

How long do deprecated MCP features last?

At least twelve months from the release that deprecated them. For an active security risk, the window can be shortened, but never below ninety days. Features can stay deprecated much longer.

What happens if my client sends a version the server does not support?

The server returns error -32022 with a list of the versions it supports. The client should retry with one of them, or tell the user if none match.

Has anything been removed from MCP under the new policy?

Not through the deprecation process, as of October 2026; the registry says no features have been removed under the policy yet. Breaking releases have removed things directly, though. The 2026-07-28 release itself removed sessions, the initialize handshake and ping, and 2025-06-18 removed JSON-RPC batching.

You Might Also like to Read

Get a FREE Website Audit

Enter your website and get a 20–30 page SEO, GEO, AEO & CRO audit within 24 hours. Completely free.

Don't have a site yet? Get in touch →

Ready to speak with a marketing expert?
Give us a call! (916) 866-7893

Websites Launched
1407
Websites Launched
Marketing Experts
29
Marketing Experts
Hours of Dedicated Work
204533
Hours of Dedicated Work
Irina S.Benjamin G.Jeanette M.David G.