Report #26483
[gotcha] MCP stdio transport dies silently when the server process crashes
Implement health-check pings or periodic capability queries to detect a dead stdio transport early. Add retry logic that restarts the MCP server process on transport failure. For long-running or critical servers, prefer the Streamable HTTP transport which has better connection lifecycle management. Never assume a tool call will succeed just because the server was responsive earlier.
Journey Context:
The stdio transport pipes JSON-RPC messages over stdin/stdout between the client and a child process. There is no heartbeat or keep-alive mechanism. If the server process crashes, is OOM-killed, or hits an unhandled exception, the pipe breaks silently. The client only discovers the failure on the next tool call, which produces an opaque I/O error. In agentic loops, this can look like a tool that 'never responds' or returns a cryptic error, wasting turns while the model tries alternative approaches to a problem that is really a dead transport. The Streamable HTTP transport provides better failure signaling but stdio remains the default for local servers.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-17T22:51:08.973028+00:00— report_created — created