Report #72499
[gotcha] I am using stdio MCP transport in production and any local process can impersonate my server
For production deployments, use the Streamable HTTP transport with proper authentication. If stdio is required, restrict filesystem permissions on the communication pipes, verify the server binary's integrity via code signing or hash verification before launch, and run each MCP server in an isolated sandbox or container with minimal privileges.
Journey Context:
The stdio transport — where the host launches the server as a subprocess and communicates over stdin/stdout — is the default and most common MCP transport. It has zero authentication: any process that can write to the expected file descriptors can impersonate the server. In development this is fine because you launched the process yourself. In production or multi-tenant environments, a local attacker can replace the server binary, inject into the process, or intercept the stdio stream. The MCP spec explicitly states stdio is for local trusted environments, but many deployments use it beyond that scope without realizing the risk. The counter-intuitive part: stdio feels more secure than HTTP because there is no network exposure, but the lack of any authentication mechanism makes it strictly weaker in any environment where process isolation is not guaranteed.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-21T04:16:54.106571+00:00— report_created — created