Home Glossary
HomeGlossaryHTTP / Streamable Transport
MCP Glossary

HTTP / Streamable Transport

TL;DR

Streamable HTTP is the modern MCP remote transport (introduced in spec `2025-03-26`). It uses a single HTTP endpoint: the client POSTs JSON-RPC messages and can optionally receive a streamed response for long-running tool calls. It replaces SSE transport as the recommended way to host MCP servers remotely.

In depth

Streamable HTTP is MCP's answer to the shortcomings of SSE: a single endpoint, symmetric traffic, session IDs for stateful workflows, and easy integration with standard HTTP infrastructure (load balancers, reverse proxies, CDNs).

The client sends each JSON-RPC request as an HTTP POST with `Content-Type: application/json`. The server responds in one of three ways: (1) a single JSON-RPC response for simple tool calls; (2) a chunked/streamed response containing multiple SSE-style events for long-running calls with progress; (3) an HTTP 202 Accepted for fully async workflows (where the actual result comes over a separate SSE channel).

Session management uses the `Mcp-Session-Id` HTTP header. The server issues a session ID during initialization; the client includes it on every subsequent request. This enables statefulness without breaking the HTTP model.

Streamable HTTP is the recommended transport for any new remote MCP server. All major MCP SDK versions from 2025 onward support it by default.

Code example

// Client initialize request
POST https://mcp.example.com/
Content-Type: application/json
Authorization: Bearer <token>

{
  "jsonrpc": "2.0",
  "method": "initialize",
  "params": {
    "protocolVersion": "2025-03-26",
    "capabilities": {},
    "clientInfo": { "name": "my-app", "version": "1.0.0" }
  },
  "id": 1
}

// Server response (with session id)
HTTP/1.1 200 OK
Content-Type: application/json
Mcp-Session-Id: 7f3a9...

{
  "jsonrpc": "2.0",
  "result": { "protocolVersion": "2025-03-26", ... },
  "id": 1
}

Examples

  • 1
    A Cloudflare Workers-hosted MCP at `https://mcp.example.com/`
  • 2
    Stripe's remote MCP at `https://mcp.stripe.com/`
  • 3
    A self-hosted company MCP behind nginx + OAuth
  • 4
    Claude Desktop connecting to a remote MCP with Bearer auth
  • 5
    A serverless MCP on Vercel with streamable HTTP

What it's NOT

  • ✗Streamable HTTP is NOT the same as SSE — it's a superset that encompasses SSE-style streaming plus plain JSON.
  • ✗Streamable HTTP is NOT HTTP/2-specific — it works over HTTP/1.1 and HTTP/3 too.
  • ✗Streamable HTTP does NOT require authentication — but always use OAuth or Bearer for public endpoints.
  • ✗Streamable HTTP is NOT slower than stdio — for local MCP, stdio is still faster because it avoids TCP.

Related terms

MCP TransportSSE Transport (Server-Sent Events)Stdio TransportJSON-RPC 2.0

See also

  • MCP Transports
  • MCP Spec 2025-03-26

Frequently asked questions

Should I choose streamable HTTP or stdio?

stdio for local servers (faster, no network), streamable HTTP for remote/hosted servers. Both support identical features.

How do I add auth to streamable HTTP?

Standard HTTP: `Authorization: Bearer <token>` or OAuth 2.1. The MCP spec defines an OAuth flow for user-delegated access.

Can I run streamable HTTP on serverless?

Yes — the stateless variant is serverless-friendly. For stateful sessions, use a persistent store keyed by `Mcp-Session-Id`.

Build with MCP

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

Browse MarketplaceAll terms