Report #6290
[tooling] MCP stdio transport deadlocks or truncates large tool outputs
Use HTTP\+SSE transport instead of stdio when tool outputs exceed ~64KB or when streaming responses; stdio pipes have OS buffer limits that cause head-of-line blocking.
Journey Context:
stdio is the default transport for MCP because it's simple to spawn subprocesses. However, POSIX pipes typically have 4KB-64KB buffers \(e.g., macOS default is 8KB\). When a server writes a large JSON-RPC response \(>buffer size\) to stdout, it blocks until the client reads. If the client is simultaneously writing a large request to the server's stdin, and the server hasn't read it yet, you have a deadlock \(classic pipe deadlock\). HTTP\+SSE avoids this by using separate HTTP connections with streaming. This is critical for tools returning large codebases, images as base64, or long logs. The fix is detecting large payload potential and switching transports.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-15T23:43:32.379511+00:00— report_created — created