Menu

AI

The 2025-06-18 MCP Spec: What It Changed

The 2025-06-18 MCP spec added elicitation, structured tool output and resource links, made servers OAuth resource servers and removed JSON-RPC batching.

By: Irina ShvayaOctober 28, 2026

The 2025-06-18 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-06-18 version of the Model Context Protocol specification was released on 18 June 2025. Its biggest changes were elicitation (servers asking the user for input), structured tool output, resource links in tool results, and a reworked authorization model that treats MCP servers as OAuth resource servers. It also removed JSON-RPC batching, which had been added only three months earlier.

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

This page lists the changes in the official 2025-06-18 changelog and says which ones still hold in the current spec. The release date comes from the GitHub release tag. Checked on 28 October 2026.

Key Takeaways

  • 2025-06-18 followed 2025-03-26 and was followed by 2025-11-25.
  • It added elicitation, structured tool output, resource links and a title field for display names.
  • It made MCP servers OAuth resource servers with Protected Resource Metadata, and required clients to use RFC 8707 resource indicators.
  • It removed JSON-RPC batching and required the MCP-Protocol-Version header on HTTP requests.
  • Several of its features were later reshaped: elicitation now uses multi-round-trip requests, and its handshake and sessions are gone in 2026-07-28.

Where it sits in MCP history

MCP versions are named by date. The versioning docs say the date marks "the last date backwards incompatible changes were made." Past versions are marked "Final," meaning "past, complete specifications that will not be changed."

VersionHeadline changes
2024-11-05stdio and HTTP+SSE transports
2025-03-26OAuth 2.1 authorization, Streamable HTTP, batching
2025-06-18This release
2025-11-25CIMD, experimental tasks, URL elicitation
2026-07-28Stateless protocol, current as of October 2026

Under the 2026-07-28 versioning rules, 2025-06-18 is a "Legacy" version because it uses an initialize handshake.

The nine major changes

The changelog lists nine. Here they are in plain English.

  1. JSON-RPC batching removed. Sending several requests in one array, added in 2025-03-26, was taken out again.
  2. Structured tool output. Tools can return a JSON object in a structuredContent field and declare an outputSchema. See structured tool output in MCP.
  3. MCP servers as OAuth resource servers. Servers publish Protected Resource Metadata so clients can find the authorization server. See protected resource metadata.
  4. Resource indicators required. Clients must implement RFC 8707 "to prevent malicious servers from obtaining access tokens."
  5. Security guidance. Clarified authorization security and added a new security best practices page.
  6. Elicitation. Servers can "request additional information from users during interactions."
  7. Resource links. Tool results can point to resources instead of embedding them.
  8. Protocol version header. HTTP clients must send MCP-Protocol-Version on requests after negotiation.
  9. Lifecycle tightened. A SHOULD became a MUST in the lifecycle operation rules.

Three schema changes rounded it out: _meta on more types, a context field on completion requests, and a title field "for human-friendly display names, so that name can be used as a programmatic identifier."

How it worked: the handshake in 2025-06-18

Every 2025-06-18 connection started with initialize. This example is copied from the 2025-06-18 lifecycle page and shows the new elicitation capability and title field:

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "initialize",
  "params": {
    "protocolVersion": "2025-06-18",
    "capabilities": {
      "roots": { "listChanged": true },
      "sampling": {},
      "elicitation": {}
    },
    "clientInfo": {
      "name": "ExampleClient",
      "title": "Example Client Display Name",
      "version": "1.0.0"
    }
  }
}

Elicitation then worked as a server-to-client request, elicitation/create, with a message and a simple JSON schema for the answer.

What still holds in 2026-07-28

2025-06-18 changeStatus in 2026-07-28
Structured tool outputKept; 2026-07-28 loosened outputSchema to any JSON Schema 2020-12 keyword
Protected Resource MetadataKept and still a MUST
RFC 8707 resource indicatorsKept and still a MUST
ElicitationKept, but now delivered through multi-round-trip requests instead of a server-sent request
Batching removedStill absent
MCP-Protocol-Version headerKept, now on every POST and matched against _meta
initialize handshakeRemoved in 2026-07-28
Sampling and Roots capabilitiesDeprecated in 2026-07-28

These statuses come from the 2026-07-28 changelog. For elicitation today, see MCP elicitation.

Who still cares about 2025-06-18

Some clients and servers may still speak it. A 2026-07-28 server can choose to support legacy versions, and the 2026-07-28 Streamable HTTP page covers mixed-era detection. It also notes that 2025-06-18 introduced the protocol version header, so a server "MAY treat a request that omits the header as protocol version 2025-03-26."

If you maintain a server still on 2025-06-18, the jump to 2026-07-28 is a larger change than the jump to 2025-11-25. The 2025-11-25 release was described by maintainers as "backward compatible," while 2026-07-28 removed the handshake. See the 2025-11-25 MCP spec and what changed in the July 2026 spec.

Common mistakes

  • Reading 2025-06-18 docs for new work. The current spec is 2026-07-28. Old pages still exist under dated URLs.
  • Using batching. It was removed in 2025-06-18 and has not returned.
  • Assuming elicitation still uses elicitation/create as a server request. In 2026-07-28 it travels inside an InputRequiredResult.
  • Skipping the header on HTTP. Missing MCP-Protocol-Version can get a request rejected.

Next step

Read the 2025-11-25 MCP spec to see the next step in the protocol's history, or browse the full MCP specification reference.

Frequently asked questions

When was the 2025-06-18 MCP spec released?

On 18 June 2025, matching its version name. The GitHub release tag for 2025-06-18 is dated the same day.

Is 2025-06-18 still supported?

It is a Final revision that will not change. Whether a given client or server still accepts it depends on that product. The current spec is 2026-07-28 as of October 2026.

Did 2025-06-18 add OAuth to MCP?

No. OAuth 2.1 authorization arrived in 2025-03-26. The 2025-06-18 release reworked it, making MCP servers OAuth resource servers with Protected Resource Metadata and requiring resource indicators.

Why was JSON-RPC batching removed?

The changelog lists the removal but does not give a reason. It links pull request #416 in the specification repository for the discussion.

Where can I read the full 2025-06-18 spec?

At modelcontextprotocol.io under /specification/2025-06-18. The changelog links a full GitHub comparison against 2025-03-26.

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.