Creativity · MCP — pattern

MCP Transports — stdio vs SSE vs Streamable HTTP

Model Context Protocol is transport-agnostic but ships with three official flavours: stdio for local child processes, legacy SSE for long-lived browser-style streams, and the current Streamable HTTP transport that replaces SSE for remote multi-tenant servers. Knowing which to pick drives your deployment, auth, and latency story.

MCP facts

Kind
pattern
Ecosystem
anthropic-mcp
Transports
stdio, sse, http

Capabilities

  • stdio: spawned as a child process by the client; ideal for local tools
  • SSE: legacy HTTP transport with separate POST + event-stream endpoints
  • Streamable HTTP: single endpoint, bidirectional, the current recommendation for remote
  • Choice driven by deployment model: local desktop vs hosted multi-tenant SaaS

Configuration

{
  "mcpServers": {
    "local-fs": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-filesystem", "/Users/you"]
    },
    "remote-notion": {
      "url": "https://mcp.notion.com/mcp"
    }
  }
}

Frequently asked questions

When should I use stdio vs HTTP?

Use stdio when the server is a local binary or npm package running on the same machine as the client — it is the fastest and easiest path. Use HTTP (Streamable HTTP) when the server is a hosted service like GitHub, Notion, or Stripe's official MCP endpoint.

Is SSE still supported?

Yes, but the 2025 spec revision made Streamable HTTP the primary remote transport. SSE remains for backwards compatibility; new remote servers should implement Streamable HTTP.

What about latency and scaling?

stdio has zero network overhead but is single-tenant per process. Streamable HTTP scales horizontally behind a load balancer and supports multi-tenant auth — it is what you want for SaaS-grade MCP servers.

Can the same server speak multiple transports?

Yes. Many official servers (Notion, Sentry, Cloudflare) run the same business logic over stdio for local dev and Streamable HTTP for the hosted endpoint. The MCP SDK makes it a one-line configuration.

Sources

  1. MCP spec — Transports — accessed 2026-04-20
  2. MCP spec — Streamable HTTP — accessed 2026-04-20