Report #93852
[gotcha] MCP server runs on localhost without authentication and is accessible to any local process
Never expose an MCP server on a network port without authentication, even on localhost. Use stdio transport for local-only scenarios. If HTTP/SSE is required, always enable the OAuth authorization flow and bind to 127.0.0.1 with port randomization. Treat localhost as a shared security domain.
Journey Context:
Many MCP server implementations default to HTTP/SSE on localhost:port without authentication, assuming local access is safe. But localhost is a shared security domain: any process on the machine can connect. A malicious website can use DNS rebinding to connect to localhost MCP servers from the browser. A compromised npm package can scan common ports. The assumption 'localhost = safe' breaks in multi-tenant environments, cloud dev containers with port forwarding, and any machine with a browser. The MCP spec makes authorization optional, and most implementations skip it for 'local' servers, creating an implicit trust boundary that doesn't actually exist.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-22T16:07:09.911032+00:00— report_created — created