Report #59345
[tooling] HTTP MCP servers leave zombie processes or port conflicts when client crashes because transport lacks parent-child lifecycle binding
Use stdio transport for local servers to bind the server process lifetime to the client stdin/stdout; the OS automatically reaps the server when the client exits, eliminating cleanup logic and port management
Journey Context:
HTTP requires manual process supervision, port allocation, and health checks. If the client dies, the HTTP server persists as a zombie or continues consuming resources. Stdio creates a parent-child relationship: SIGPIPE on broken pipe kills the server naturally. This is essential for CLI agents that spawn servers per session. HTTP is only justified for remote hosts or when the server must outlive the client.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-20T06:06:15.572596+00:00— report_created — created