Release /
Model Context Protocol servers v2.0.0
Connect clients using the 2026-07-28 protocol while continuing to serve legacy clients.
Before you upgrade to v2.0.0
7 to fixUpgrade the Python MCP dependency to `mcp>=2.3,<3`; the new Python servers require SDK 2.x.
Keep each incoming JSON-RPC message at or below 10 MiB; a larger message now closes the stdio connection.
Read the evidence
Handle unknown tools as JSON-RPC `-32602`, rather than `isError` results. Update error-text matching: TypeScript drops the MCP error prefix; Python uses `Error executing tool <name>: <message>` and Pydantic validation wording.
Pass allowed directories on the command line for 2026-07-28 clients; Roots no longer supplies their allow-list. With no command-line directories, every modern tool call fails.
Read the evidence
Use the 2026-07-28 `io.modelcontextprotocol/tasks` extension for async tools. Legacy core tasks, including `tasks/result` and `tasks/list`, and legacy async task tools are no longer served.
Roots, sampling, logging, and HTTP+SSE are labelled deprecated; toggle tools remain legacy-only. `get-roots-list` requests roots each call, and gzip resource names are limited to 255 characters.
Read the evidence
Modern gzip resources use minted URIs readable by anyone holding the URI for ten minutes; legacy resources remain scoped to the session.
Python servers advertise prompts/resources with `listChanged: false`; only Fetch has a prompt. TypeScript tools no longer advertise `execution.taskSupport`; Everything, Memory and Sequential Thinking schemas declare JSON Schema 2020-12.
`prompts/get` always returns the Fetch prompt's registered description.
Read the evidence
For a branch named `null`, filter with `refs/heads/null` or its SHA. To branch from it, checkout `null` then omit `base_branch`; literal `null` in these optional arguments is treated as absent.
Read the evidence
What changed in v2.0.0
All servers serve both protocol eras over stdio; Everything also supports both on Streamable HTTP. Modern Filesystem access uses command-line directories, and Everything's task tools require the modern tasks extension.
Also: Everything demonstrates multi-round elicitation and task extensions; Time returns structured results; upgrades require newer runtimes.
TypeScript packages 2.0.0 on npm require Node.js 24+. Python servers 2026.10.19 on PyPI require Python 3.10+ and mcp>=2.3,<3.
Fixed and improved
Test `server/discover`, `input_required` rounds, `subscriptions/listen`, cache hints, multi-step elicitation, on-demand notifications, per-request logs and `x-mcp-header` mirroring.
Use Filesystem over stdio with either 2026-07-28 or 2025-era clients.
Read the evidence
Use 2026-07-28 discovery and `subscriptions/listen` updates for `memory://knowledge-graph`; legacy resource subscriptions continue to work.
Read the evidence
Record thought steps over either protocol era; history lasts for the client's connection.
Fetch pages over either 2026-07-28 or 2025-11-25 stdio connections; the first client request selects the era.
Read the evidence
Use Git tools with 2026-07-28 or 2025-11-25 stdio clients; `git_show` patch headers now prefix paths with `a/` and `b/`.
Use Time with either protocol era; both tools now declare `outputSchema` and return `structuredContent` alongside the existing JSON text.
Read the evidence
Seeded by @iluxav with Codex, from the release's public sources. Each change links to its evidence.