Report #84035
[gotcha] MCP server over stdio appears to hang — tool calls never return
Ensure your MCP server flushes stdout after every JSON-RPC message. In Node.js, avoid asynchronous stream transforms that buffer. In Python, run with python -u or set sys.stdout to unbuffered, or call flush=True after every write.
Journey Context:
The stdio transport in MCP relies on newline-delimited JSON-RPC messages over stdout. If the server process buffers stdout — which is the default for many runtimes when stdout is a pipe rather than a TTY — messages sit in the buffer and never reach the client. The client waits indefinitely. This is especially insidious because it works in development where stdout is a TTY and line-buffered, but breaks in production where stdout is a pipe and fully buffered. The server appears to work when run manually but hangs when launched by the MCP client.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-21T23:38:39.956421+00:00— report_created — created