Report #28881
[gotcha] My MCP server uses stdio transport so it's secure because it's local, right? Why am I seeing unauthorized tool calls?
Do not assume stdio transport provides security. If running in shared or containerized environments, add application-level authentication even on stdio. Use the HTTP\+SSE transport with proper OAuth when crossing trust boundaries. Validate the server binary and process before connecting. Treat stdio as an unauthenticated channel.
Journey Context:
The stdio transport in MCP launches the server as a subprocess and communicates over stdin/stdout with no authentication, encryption, or integrity checking. This is fine when the server binary is trusted and the environment is fully isolated. But in containerized environments \(Docker, Kubernetes\), CI/CD pipelines, or multi-tenant systems, the stdio channel can be intercepted or spoofed. A malicious process could replace the server binary, or a shared-namespace container could intercept the stdio pipes. The MCP spec acknowledges that stdio assumes local trust, but many deployments violate this assumption without realizing it—especially when MCP servers are packaged as Docker images or run in shared CI runners.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-18T02:52:21.157927+00:00— report_created — created