Home Glossary
HomeGlossarySSE Transport (Server-Sent Events)
MCP Glossary

SSE Transport (Server-Sent Events)

TL;DR

SSE transport was MCP's original remote transport. It uses Server-Sent Events (HTTP streaming) for server-to-client messages and separate HTTP POST endpoints for client-to-server messages. As of 2025, it's deprecated in favor of streamable HTTP, which is simpler and more deployable.

In depth

SSE transport was introduced in the first public MCP spec as the way to run MCP servers remotely. The client opens a long-lived GET request to the server's `/sse` endpoint. The server responds with an `event-stream` MIME type and pushes JSON-RPC messages as they occur. For requests in the opposite direction, the client POSTs to a separate `/messages` endpoint.

This dual-endpoint design worked but had quirks: it required sticky sessions, two routes per server, and didn't play well with some reverse proxies or load balancers. Browser-based clients could use EventSource but had limited control over headers.

The MCP spec revision `2025-03-26` introduced **streamable HTTP** as a simpler alternative: one endpoint, optional server-side streaming, full header control, idempotent by session ID. New servers should use streamable HTTP. SSE remains supported for backwards compatibility but is no longer recommended.

If you maintain an older remote MCP server, consider migrating — the streamable HTTP implementation is often simpler and handles more edge cases cleanly.

Code example

// Client → Server (HTTP POST to /messages)
// Request:
POST /messages?sessionId=abc123
{
  "jsonrpc": "2.0",
  "method": "tools/list",
  "id": 1
}

// Server → Client (SSE stream at /sse)
// Response (never closes; server pushes events):
event: message
data: {"jsonrpc":"2.0","result":{...},"id":1}

event: message
data: {"jsonrpc":"2.0","method":"notifications/tools/list_changed"}

Examples

  • 1
    A legacy remote MCP server using `GET /sse` + `POST /messages`
  • 2
    Claude Desktop's early remote server support (SSE-first)
  • 3
    An older community server from 2024 before streamable HTTP existed
  • 4
    A demo MCP on a serverless platform using SSE (with sticky sessions)

What it's NOT

  • ✗SSE is NOT WebSocket — it's one-way (server→client) HTTP streaming.
  • ✗SSE is NOT required for remote MCP — streamable HTTP is now the recommended transport.
  • ✗SSE is NOT deprecated at the HTTP level — it's deprecated as an MCP transport specifically.
  • ✗SSE does NOT have built-in auth — you add it via standard HTTP headers (Authorization).

Related terms

MCP TransportHTTP / Streamable TransportStdio TransportModel Context Protocol (MCP)

See also

  • MCP Transports
  • SSE MDN

Frequently asked questions

Should I use SSE for a new MCP server?

No. Use streamable HTTP. SSE is maintained for backwards compatibility but not recommended for new builds.

Can I migrate from SSE to streamable HTTP?

Yes — most server SDKs support both, often with a single flag. Update your client config to point to the new endpoint.

Does SSE work through corporate proxies?

Mostly yes, but some proxies buffer the stream. Streamable HTTP has fewer such issues.

Build with MCP

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

Browse MarketplaceAll terms