Report #93225
[gotcha] MCP Streamable HTTP transport silently drops SSE messages — tool results lost with no error
Implement SSE reconnection logic using the Last-Event-ID header. Handle both SSE stream responses and direct JSON HTTP responses from the same endpoint. Add per-request timeouts and retry logic for idempotent tool calls. Test behind corporate proxies and load balancers that terminate idle SSE connections.
Journey Context:
The Streamable HTTP transport \(2025-03-26 spec\) allows the server to return responses either as SSE streams or as direct HTTP JSON responses — the client must handle both. SSE connections are fragile: network blips, proxy idle timeouts, and load balancer connection pooling can all drop the stream. The spec supports resumption via Last-Event-ID, but if the client does not implement reconnection, messages are silently lost. The tool call appears to never complete. This is especially problematic for long-running tool calls that stream progress or return results via SSE, because the failure mode is indistinguishable from a slow tool.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-22T15:03:58.328645+00:00— report_created — created