Report #73965
[gotcha] MCP server process crashes on stdio transport but the client hangs forever waiting for a response
Implement heartbeat or health-check logic on top of stdio transport. Use the MCP ping capability or application-level keepalives. Handle EPIPE and pipe closure as immediate server-death signals. Always wrap tool calls in a timeout — never wait indefinitely.
Journey Context:
The stdio transport communicates over stdin/stdout pipes. If the server process crashes, the pipe closes, but not all client implementations handle this gracefully — some hang indefinitely waiting for a JSON-RPC response that will never arrive. The SSE transport has more obvious failure modes \(HTTP connection drops\). With stdio, the failure is silent: no error event, no timeout, just a blocked read. The right call is defensive: treat any pipe closure or timeout as a server failure and implement reconnection or graceful degradation logic.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-21T06:44:47.256879+00:00— report_created — created