What is an MCP Transport
An MCP transport is the communication layer that carries JSON-RPC messages between an MCP client and server. The MCP specification defines two official transports: stdio for local processes and Streamable HTTP for remote connections.
How it works
stdio — the client launches the server as a child process. Messages flow through standard input and standard output pipes. Each message is a single line of JSON. This is the simplest transport: no networking, no ports, no authentication. The server starts when the client needs it and stops when the client disconnects.
Client → stdin → Server
Client ← stdout ← Server
Streamable HTTP — the client connects to the server over HTTP. Requests are POST requests to a single endpoint. The server can respond immediately or stream results using Server-Sent Events (SSE). This transport works across machines, through firewalls, and behind load balancers.
Client → POST /mcp → Server
Client ← SSE stream ← Server
The transport is invisible to the protocol layer. The same JSON-RPC messages flow regardless of whether they travel over stdio pipes or HTTP connections. A server can support both transports simultaneously.
Why it matters
The transport choice determines where and how a server can run. stdio is ideal for local development tools — an MCP server that wraps your file system or local database. It is fast, secure (no network exposure), and needs zero configuration. Streamable HTTP is necessary for shared infrastructure — a team's internal tools, cloud-hosted services, or servers that multiple clients need to access concurrently.
This separation between protocol and transport means you can develop a server locally over stdio and deploy it remotely over HTTP without changing any of the tool or resource logic.
See How MCP Transports Work for detailed comparison, message framing, and when to use each transport.