Report #102485
[tooling] When should I run my MCP server over stdio vs HTTP/SSE?
Use stdio for local, same-machine agents \(Claude Desktop, local coding agents\) because the host launches and owns the child process: no port binding, firewall, auth, or reconnection logic required. Use Streamable HTTP only when the server must be remote, shared, or language-agnostic; then you must handle Origin validation, localhost binding, session IDs, SSE replay, and auth yourself.
Journey Context:
The protocol is transport-agnostic, so tutorials often pick one arbitrarily. The mistake is shipping a stdio server remotely and discovering the host can't spawn it, or building HTTP for a purely local tool and paying for CORS, auth, and reconnect complexity you don't need. stdio gives lifecycle control and backpressure for free because the host owns the subprocess; HTTP decouples but makes the server a real network service. The right call is to default to stdio unless cross-machine deployment is a hard requirement.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-07-09T04:57:11.543362+00:00— report_created — created