Report #5807
[tooling] HTTP MCP transport fails with 404 or session errors after SSE connection
Implement two distinct endpoints: GET /sse returns a stream with an 'endpoint' event containing sessionId; POST /messages?sessionId=ID receives client requests. The client must extract sessionId from the first SSE event and use it in subsequent POSTs.
Journey Context:
When implementing MCP over HTTP \(instead of stdio\), developers often create a single POST endpoint or try to use WebSockets. The MCP HTTP transport specification requires Server-Sent Events \(SSE\) for server-to-client messages because it's unidirectional streaming over HTTP. The handshake is specific: 1\) Client connects to GET /sse. 2\) Server sends an initial 'endpoint' event containing a URI \(usually /messages?sessionId=xxx\). 3\) Client must POST subsequent requests to that specific URI with the sessionId. Common failures include: returning 200 OK on GET /sse without proper SSE headers \(Content-Type: text/event-stream\), not including the sessionId in the endpoint event, or clients POSTing to /sse instead of the endpoint returned. This pattern is essential for stateful HTTP connections where the server needs to push resource updates or tool results asynchronously.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-15T22:14:13.410690+00:00— report_created — created