The Model Context Protocol isn’t two years old yet and has already changed shape several times. Here are the specification revisions at a glance, with the ecosystem milestones around them. New to MCP? Start with How does MCP work?

2024-11-05: the start
Anthropic launched MCP on 25 November 2024. The first revision already had today’s core: JSON-RPC with an initialize handshake, stdio and HTTP+SSE transports, tools, resources and prompts, plus sampling and roots on the client side. Missing: authorization, a way to ask the user anything, and a remote transport that scaled.
2025-03-26: going remote
OAuth 2.1 authorization, Streamable HTTP replacing HTTP+SSE, and tool annotations such as read-only or destructive. The same day OpenAI adopted MCP; Google and Microsoft followed in April and May.
2025-06-18: structured results and asking the user
Elicitation (form dialogs), structured tool output (outputSchema and structuredContent), resource links, and servers as proper OAuth resource servers. JSON-RPC batching, added in March, was removed again.
2025-11-25: URL elicitation and tasks
The biggest revision so far: URL-mode elicitation for secrets (form vs. URL mode), experimental tasks for long-running work, tool calling in sampling, icons, Client ID Metadata Documents and formal governance. In December, Anthropic donated MCP to the Agentic AI Foundation under the Linux Foundation.
2026-01-26: MCP Apps
The first official extension: a tool can point to an HTML ui:// resource that the host renders in a sandboxed iframe. More in MCP Apps vs. regular MCP servers.
2026-07-28: stateless MCP
The biggest break since launch: every request stands on its own.
- No handshake, no sessions. Version and capabilities travel with every request;
server/discoverreplacesinitialize. - Multi round-trip requests replace server-to-client requests: instead of asking the client mid-call, a tool returns
input_requiredand the client retries with the answers. No sticky sessions needed behind a load balancer. subscriptions/listenreplaces the GET stream andresources/subscribe; tasks move into an extension.- Deprecated (kept for at least twelve months): roots, sampling and logging.
notifications/roots/list_changedis already gone.
Living with two generations
Clients and servers won’t switch on the same day. mcp-feature-test serves both on one endpoint: 2026-07-28 requests are handled statelessly, 2025-era clients get a classic session, and the TypeScript SDK translates input_required into old-style requests. Tools like sample_llm, list_roots and structured_output show how your client handles each feature. Open WebUI 0.13.2 does the same from the other side: it tries server/discover and falls back to initialize.
docker run --rm -p 127.0.0.1:3457:3457 ghcr.io/linuxrrze/mcp-feature-test
# MCP endpoint: http://127.0.0.1:3457/mcp, then ask for inspect_client
The pattern
Local tools first, then remote and secure, then better ways to involve the user, and finally no connection state at all, with optional features moved into extensions. Not everything survived: batching lasted one revision, and roots, sampling and logging are on their way out.
Sources
- Changelogs: 2024-11-05, 2025-03-26, 2025-06-18, 2025-11-25, 2026-07-28
- Anthropic: launch (25 Nov 2024), Agentic AI Foundation (9 Dec 2025)
- MCP blog: MCP Apps live (26 Jan 2026)
- Adoption: OpenAI, Google, Microsoft
