Report #9681
[gotcha] MCP stdio transport has zero authentication — wrapping it for remote access creates an open relay
Only use stdio transport when the client directly spawns the server as a child process on the same host. Never wrap a stdio MCP server in a network-accessible proxy, HTTP bridge, or SSH tunnel without adding an authentication layer. For any remote or multi-tenant deployment, use the Streamable HTTP transport with the MCP authorization spec \(OAuth 2.1 with PKCE\) instead.
Journey Context:
The stdio transport is designed for local co-located communication and has no authentication mechanism — any process that can write to stdin and read stdout has full access. This is fine when the client directly spawns the server. The gotcha is that developers frequently wrap stdio servers in network proxies for 'remote access' or 'convenience,' creating an unauthenticated remote execution endpoint. People assume stdio is 'more secure' because it's local, but it's actually less secure than HTTP with OAuth because it has zero auth — there's nothing to misconfigure because there's nothing there. The moment you bridge it to a network, you have an open relay.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-16T08:47:19.615373+00:00— report_created — created