Transports: stdio and Streamable HTTP

Model Context Protocol (MCP) · Essentials · 9 min

The transport decides how you install, run and secure a server.

A transport is the pipe that carries MCP messages between client and server. The messages are the same on every transport; only the delivery changes. The current spec defines two.

stdio (standard input/output). Every program has an input stream it reads from and an output stream it writes to; that is what a terminal uses. With stdio, the host starts the server program itself as a child process and talks to it by writing messages to its input and reading replies from its output, one JSON message per line.

  • Used for local servers on your own machine.
  • No network, no port, no URL. Installing it means telling the host the command to run.
  • The server runs with your user's permissions, so only install servers you trust.
  • Rule for server authors: never print() to standard output, because that is the wire. Log to standard error instead.

Streamable HTTP. The server is a normal web service with one endpoint, for example https://example.com/mcp. The client sends each message as an HTTP POST. The server answers with plain JSON, or with an SSE stream (Server-Sent Events: a way to send several messages back over one HTTP response, useful for progress updates before the final answer).

  • Used for remote, shared servers.
  • Supports many users, needs authentication.

You may still see an older "HTTP+SSE" transport in old guides. It was replaced by Streamable HTTP in 2025 and is formally deprecated; don't build new servers on it.

Remember

  • stdio: host launches the server locally and talks through its input/output
  • Streamable HTTP: remote server, one /mcp endpoint, POST per message
  • Never print to stdout in a stdio server
  • The old HTTP+SSE transport is deprecated

Check yourself

  1. Your stdio server prints debug text with print(). What goes wrong?
  2. Which transport would you pick for a server shared by everyone in your company?

Sign in to answer, see the explanations, and get this lesson back as a quick review later.

Official docs: modelcontextprotocol.io/specification/2026-07-28/basic/transports/index