The newest MCP specification removes protocol-level sessions and the initialize handshake. Switch between revisions to compare how a single tool call travels through each, then review what was removed, added, and deprecated.
initialize → notifications/initializedA handshake establishes the connection and negotiates protocol version and capabilities once, up front.
Mcp-Session-IdEvery subsequent request carries the session header. The connection itself holds meaning, so infrastructure must preserve it.
tools/list may vary per connectionList results are session-scoped, so a response cannot safely be cached and reused for another client.
Needing roots, sampling, or elicitation, the server sends its own request over the open connection and waits.
Last-Event-IDSSE event IDs allow redelivery, so an interrupted response can pick up where it stopped.
Requests must route back to the replica holding the session.
Per-connection variation makes intermediary caching unsafe.
Session state lives in the server process.
server/discover (optional, up front)Servers MUST implement it to advertise supported versions, capabilities, and identity. Clients MAY call it first, or skip it entirely.
_metaprotocolVersion, clientCapabilities, and clientInfo travel with every call. Servers identify themselves in each result via serverInfo.
tools/list is connection-independentResults carry ttlMs and cacheScope. Tools SHOULD be returned in deterministic order to improve prompt cache hit rates.
The server returns resultType: "input_required" with inputRequests. The client retries the original request, supplying inputResponses.
No Last-Event-ID, no redelivery. Clients MUST re-issue as a new request with a new request ID.
No affinity, no shared session store, restarts are survivable.
ttlMs and cacheScope tell a gateway exactly what is safe.
Mcp-Method and Mcp-Name are required on POST — no body parsing.
Version, capabilities, and identity re-sent on every call.
Idempotency and checkpointing become application concerns.
OpenTelemetry traceparent conventions documented for _meta.
Mcp-Session-Idinitialize / notifications/initializedpinglogging/setLevelnotifications/roots/list_changedresources/subscribe and unsubscribeLast-Event-IDnotifications/elicitation/completeserver/discover — servers MUST implementsubscriptions/listen — one opt-in streamInputRequiredResultresultType on all resultsextensions on client and server capabilitiesCacheableResult: ttlMs, cacheScopeMcp-Method and Mcp-Name headersstderr or OpenTelemetryincludeContext: thisServer / allServers