Menu

AI

The 2025-11-25 MCP Spec: What It Changed

The 2025-11-25 MCP spec added Client ID Metadata Documents, experimental tasks, URL elicitation, icons and sampling with tools. Here is what still holds.

By: Irina ShvayaOctober 28, 2026

The 2025-11-25 MCP Spec: What It Changed

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.

The 2025-11-25 version of the Model Context Protocol specification was released on 25 November 2025, MCP's first anniversary. It added Client ID Metadata Documents for sign-in, experimental tasks for long-running work, URL mode elicitation, icons, tool calling inside sampling, and OpenID Connect Discovery support. Maintainers described it as backward compatible.

Status in the 2026-07-28 spec: superseded (2025-11-25 is a Final revision; the current version is 2026-07-28)

It was the last MCP version built around the initialize handshake and sessions. This page lists the changes in the official 2025-11-25 changelog, drawing on the anniversary release post, and says what survived into 2026-07-28. Checked on 28 October 2026.

Key Takeaways

  • 2025-11-25 followed 2025-06-18 and was the current spec until 2026-07-28 replaced it.
  • It introduced Client ID Metadata Documents as a recommended way for AI apps to register with authorization servers.
  • It added experimental tasks, URL mode elicitation, icons, and tool calling in sampling.
  • It formalized governance, working groups and an SDK tier system.
  • In 2026-07-28, tasks moved to an extension, URL elicitation's completion notification was removed, and Sampling was deprecated.

Why this release mattered

The release post says plainly: "This release is backward compatible. Your existing implementations keep working." That set it apart from 2026-07-28, which removed the handshake.

Much of the release was about sign-in. It made Client ID Metadata Documents the recommended registration path. The release post also announced the first two authorization extensions: OAuth client credentials (SEP-1046) and enterprise IdP policy controls (SEP-990).

The nine major changes

  1. OpenID Connect Discovery. Authorization server discovery now supports OpenID Connect Discovery 1.0 as well as OAuth metadata.
  2. Icons. Servers can attach icons to tools, resources, resource templates and prompts.
  3. Incremental scope consent. Servers can ask for more scopes through WWW-Authenticate, so users approve permissions step by step.
  4. Tool name guidance. SEP-986 set rules for tool names. See MCP tool names and descriptions.
  5. Better elicitation schemas. ElicitResult and EnumSchema gained titled, untitled, single-select and multi-select enums.
  6. URL mode elicitation. A server can send the user to a web page. The release post says it "lets you send users to a proper OAuth flow" so the client never sees their credentials.
  7. Tool calling in sampling. Sampling requests could include tools and toolChoice.
  8. Client ID Metadata Documents. Added "as a recommended client registration mechanism." See Client ID Metadata Documents in MCP.
  9. Experimental tasks. Tasks let clients track "durable requests with polling and deferred result retrieval."

Minor changes worth knowing

ChangeWhat it means
stderr for all logging on stdioServers may log any level to stderr, not just errors
description on ImplementationAligns with the MCP Registry's server.json format
403 for invalid OriginStreamable HTTP servers must reject bad origins with 403
Input validation errors as tool errorsLets the model see and fix its mistake
SSE pollingServers may disconnect streams at will; clients poll and resume
RFC 9728 alignmentWWW-Authenticate header optional, with .well-known fallback
Defaults in elicitation schemasPrimitive fields can carry default values
JSON Schema 2020-12 defaultSet as the default dialect for MCP schemas

How it looked: a tool in 2025-11-25

This tool definition is from the 2025-11-25 tools page. It shows two new fields: icons and the task-related execution setting.

{
  "name": "get_weather",
  "title": "Weather Information Provider",
  "description": "Get current weather information for a location",
  "inputSchema": {
    "type": "object",
    "properties": {
      "location": { "type": "string", "description": "City name or zip code" }
    },
    "required": ["location"]
  },
  "icons": [
    { "src": "https://example.com/weather-icon.png", "mimeType": "image/png", "sizes": ["48x48"] }
  ],
  "execution": { "taskSupport": "optional" }
}

Governance and process

The changelog lists four governance updates: a formal governance structure (SEP-932), community communication guidelines (SEP-994), working groups and interest groups (SEP-1302), and an SDK tiering system (SEP-1730). For the SDK tiers, see the official MCP SDKs. For who runs MCP today, see who owns MCP.

What still holds in 2026-07-28

2025-11-25 changeStatus in 2026-07-28
Client ID Metadata DocumentsKept, now preferred; Dynamic Client Registration deprecated
OpenID Connect DiscoveryKept; clients must support both discovery methods
Icons, tool name guidanceKept
Experimental tasksMoved out of core into the io.modelcontextprotocol/tasks extension
URL mode elicitationKept, but notifications/elicitation/complete and elicitationId removed
Tool calling in samplingSampling deprecated as a whole
includeContext soft-deprecationReclassified as Deprecated
SSE polling and resumptionRemoved; broken streams mean re-issuing the request
Sessions and initializeRemoved

These come from the 2026-07-28 changelog. The tasks extension page covers how tasks work now.

Migrating from 2025-11-25

Under the 2026-07-28 versioning page, 2025-11-25 is the newest "Legacy" version. Servers can support it and 2026-07-28 at the same time, as "dual-era" implementations. The 2026-07-28 release post warns of "some migration cost, especially for developers that did depend on session identifiers."

Start with what changed in the July 2026 spec for the full list.

Common mistakes

  • Building on experimental tasks from 2025-11-25. The design changed when tasks became an extension.
  • Relying on elicitationId to match URL elicitations. It was removed; servers encode their own identifier in requestState.
  • Adding new Sampling features. Sampling is deprecated in 2026-07-28.
  • Assuming 2026-07-28 is also backward compatible. It is not; plan the handshake and session changes.

Next step

See how the protocol changed next in what changed in the July 2026 MCP specification, or browse the MCP specification reference.

Frequently asked questions

When was the 2025-11-25 MCP spec released?

On 25 November 2025, MCP's first anniversary. The release post and the GitHub release tag are both dated that day.

Was 2025-11-25 backward compatible?

Yes, according to the maintainers. The release post says "Your existing implementations keep working." The next version, 2026-07-28, was not fully backward compatible.

Did 2025-11-25 deprecate Dynamic Client Registration?

No. It changed DCR from "SHOULD" to "MAY" and added Client ID Metadata Documents as recommended. The formal deprecation came in 2026-07-28.

Are 2025-11-25 tasks the same as today's Tasks extension?

No. Tasks were experimental and in core in 2025-11-25. In 2026-07-28 they moved to an extension that uses tasks/get polling, adds tasks/update, and removes tasks/list and the blocking tasks/result.

Can a server support 2025-11-25 and 2026-07-28 together?

Yes. The 2026-07-28 spec calls these "dual-era" implementations and documents how clients and servers detect which version the other side speaks.

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.