MCP 2026-07-28 transports and the legacy boundary stdio: local binding client-launched child process one JSON-RPC object per line stdout protocol, stderr logs modern metadata version + capabilities per request clientInfo SHOULD repeat lifetime EOF closes transport process process is not protocol session recovery restart, rediscover, relist retry safe work with new id Streamable HTTP: modern single endpoint /mcp POST each JSON-RPC message response: JSON or scoped SSE required mirrors MCP-Protocol-Version Mcp-Method + conditional Mcp-Name validate every value vs body long-lived changes POST subscriptions/listen ack + tagged notifications + result removed modern behavior GET / DELETE return 405 ignore session + replay headers no server JSON-RPC requests legacy compatibility only 2025 Streamable HTTP Mcp-Session-Id standalone GET + DELETE Last-Event-ID resumption 2024 HTTP+SSE separate SSE and POST endpoints safe dual-era probe modern POST first recognized modern error: stay modern unrecognized miss: try legacy migration rule keep legacy routes separate never label them 2026 behavior Protocol semantics stay the same across bindings: every modern request is self-describing.