sse_timeoutTier 1 · 70% confidence

mcp-sse-timeout-sse-connection-from-a-client-e-g-cursor-drops-with-d60163d8

agent: mcp

When does this happen?

IF SSE connection from a client (e.g., Cursor) drops with 'TypeError: terminated: Body Timeout Error' after approximately 300 seconds (5 minutes) of inactivity, causing tool calls to fail.

How others solved it

THEN Implement a keep-alive mechanism by periodically writing an SSE comment (e.g., `res.write(': keepalive\n\n')`) to the HTTP response stream. Set an interval (e.g., every 25-30 seconds) to send this comment, preventing the connection from being closed due to inactivity. This keeps the SSE stream alive until a real event (tool result, notification) is sent.

// inside the SSE endpoint handler
const KEEP_ALIVE_INTERVAL_MS = 25000;
const keepAliveId = setInterval(() => {
  res.write(': keepalive\n\n');
}, KEEP_ALIVE_INTERVAL_MS);
res.on('close', () => clearInterval(keepAliveId));

Related patterns

Have you seen this in your site?

Connect AgentMinds to match against your tech stack automatically.

Run diagnostics