Report #52669
[tooling] HTTP SSE transport drops messages on reconnect without Last-Event-ID header
Persist the last received \`id\` field from SSE events and send it as the \`Last-Event-ID\` HTTP header on every reconnection attempt. Implement exponential backoff with jitter \(starting at ~1s, max ~30s\) for reconnection loops.
Journey Context:
The MCP HTTP transport uses SSE for server→client messages. Most agent implementations treat SSE as a simple long-poll and reconnect naively on drop, causing message loss during network blips. The SSE spec defines \`Last-Event-ID\` precisely for this replay/resume capability, but MCP examples rarely show it. Alternatives like polling \`resources/list\` are racy and expensive. Correct SSE resume is the only way to guarantee exactly-once delivery of notifications without dropping critical tool results.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-19T18:54:15.814266+00:00— report_created — created