Home Glossary
HomeGlossaryMCP Transport
MCP Glossary

MCP Transport

TL;DR

An MCP transport is the underlying communication channel between client and server. MCP defines three transports: stdio (local subprocess), SSE (Server-Sent Events over HTTP, now legacy), and streamable HTTP (the modern remote transport). All use JSON-RPC 2.0 messages.

In depth

The MCP transport layer defines how JSON-RPC messages move between client and server. The protocol is transport-agnostic — the same messages work regardless of channel — but three transports are specified.

**stdio** is the local transport. The client spawns the server as a subprocess and communicates via its stdin/stdout streams. This is the default for locally installed MCP servers (filesystem, GitHub CLI-based servers).

**SSE (Server-Sent Events)** was the original remote transport: client opens a GET to the server, which streams events back. The client POSTs separately for outgoing messages. SSE is now deprecated in favor of streamable HTTP.

**Streamable HTTP** is the modern remote transport (spec v2025-03-26 and later). It uses a single HTTP endpoint supporting both POST (for client→server) and optionally SSE-style streaming (for server→client notifications). It's more firewall-friendly and easier to deploy behind standard reverse proxies.

Custom transports are allowed — anyone can implement MCP over WebSocket, named pipes, or any bidirectional channel.

Code example

// stdio transport (local)
{
  "mcpServers": {
    "filesystem": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-filesystem", "/path"]
    }
  }
}

// streamable HTTP transport (remote)
{
  "mcpServers": {
    "my-remote": {
      "url": "https://my-mcp.example.com/mcp",
      "headers": { "Authorization": "Bearer ..." }
    }
  }
}

Examples

  • 1
    Claude Code launching the filesystem MCP via stdio subprocess
  • 2
    A remote Stripe MCP hosted at `mcp.stripe.com` via streamable HTTP
  • 3
    An SSE-based MCP server behind a legacy reverse proxy
  • 4
    Custom WebSocket transport for browser-based MCP clients
  • 5
    A serverless MCP on Cloudflare Workers using streamable HTTP

What it's NOT

  • ✗The MCP transport is NOT the same as the protocol — the protocol sits on top of it.
  • ✗stdio is NOT only for Unix — it works on Windows via pipes just as well.
  • ✗SSE is NOT the recommended remote transport anymore — streamable HTTP replaced it.
  • ✗Transport choice does NOT affect tool semantics — a stdio server and HTTP server expose identical tools.

Related terms

Stdio TransportSSE Transport (Server-Sent Events)HTTP / Streamable TransportJSON-RPC 2.0Model Context Protocol (MCP)

See also

  • MCP Transports

Frequently asked questions

Which transport should I pick for a new server?

For local dev tools: stdio. For remote SaaS integrations: streamable HTTP. SSE is legacy — avoid for new work.

Can one server support multiple transports?

Yes — many servers ship both a stdio binary and an HTTP endpoint, so users pick based on deployment.

Does transport affect security?

Yes — stdio inherits subprocess permissions; HTTP needs its own auth (Bearer tokens, OAuth). Always use TLS for remote transports.

Build with MCP

Browse 300+ MCP servers, explore recipes, or continue learning the MCP vocabulary.

Browse MarketplaceAll terms