Protocol versions
Every MCP endpoint here, hosted servers and docs servers alike, speaks MCP over Streamable HTTP, stateless: each request stands alone, and every answer is JSON, never a stream. A GET asking for a stream gets 405.
The current revision
| Version | How it's used |
|---|---|
| 2026-07-28 | No handshake. Every request carries its version and client in _meta, mirrored in the MCP-Protocol-Version, Mcp-Method and, for a tool call, Mcp-Name headers. |
A request whose headers don't match its body gets a header-mismatch error, and one naming a version we don't serve gets the list of versions we do.
The legacy versions
These start with initialize, as they always did:
| Version |
|---|
| 2025-11-25 |
| 2025-06-18 |
| 2025-03-26 |
| 2024-11-05 |
| 2024-10-07 |
The two from 2024 still work on initialize, but they aren't offered in a version error or in server/discover.
Where this comes from
app/mcp/_lib/modern.tsapp/mcp/_lib/handler.ts