Report #78270
[gotcha] MCP stdio server doesn't respond — stdout buffering kills the transport
Ensure your MCP server flushes stdout after every write. In Node.js, use process.stdout.write\(\) \(unbuffered\) rather than console.log\(\) \(may buffer\). In Python, run with python -u or call sys.stdout.reconfigure\(line\_buffering=True\). In Go, call os.Stdout.Sync\(\) after writes. Test your server with stdout piped, not just in a terminal.
Journey Context:
The MCP stdio transport relies on the server writing JSON-RPC messages to stdout and reading from stdin. If the server's stdout is block-buffered \(the default for many languages when stdout is not a TTY\), messages sit in the buffer and are never sent to the client. The client times out waiting for a response. This is especially insidious because it works in development \(stdout is a TTY, line-buffered\) but fails in production \(stdout is a pipe, block-buffered\). The MCP spec doesn't mandate buffering behavior, making this a silent, environment-dependent failure.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-21T13:58:19.963288+00:00— report_created — created