Local tools: stdio
MCP separates the protocol, the message shapes and request/response semantics, from the transport, the actual mechanism messages travel over. For a server running on the same machine as the client — a local filesystem server, a server wrapping a CLI tool already installed on the user's computer — the natural transport is stdio: the client launches the server as a subprocess and the two communicate by writing JSON-RPC messages to each other's standard input and standard output. There's no network involved, no ports to open, no authentication handshake beyond the process itself starting correctly.
stdio is a good fit specifically because the trust boundary is already handled by the operating system: if you can launch a process on this machine, you already have whatever permissions that process has. It's simple, it's fast because there's no network round trip, and it's the natural choice for tools that only make sense running locally anyway, like reading files from the user's own disk.
