Server-Sent Events (SSE) in MCP: Definition | MCP Hunter
MCP Hunter

Server-Sent Events (SSE)

Also written SSE

Server-Sent Events is a one-way streaming format where a server pushes text events over a held-open HTTP response. MCP uses it inside the Streamable HTTP transport when a server needs to send several messages for one request. The older standalone HTTP+SSE transport it also named has been deprecated.

What is SSE?

Server-Sent Events is a standard web format for streaming. The server holds an HTTP response open and writes discrete text events down it, and the client reads them as they arrive. It is one-directional: the server pushes, the client listens.

It predates MCP and is used far beyond it.

What does SSE do in MCP today?

It is the streaming half of Streamable HTTP. When a server has more than one message to send in response to a single POST, it answers with Content-Type: text/event-stream and writes the messages as events instead of returning one JSON body.

A client therefore has to handle both response shapes from the same endpoint. Reading only JSON and treating an event stream as a parse failure is a common implementation mistake.

Why is the acronym confusing?

Because it named an entire transport that no longer exists. The earlier HTTP+SSE transport used two endpoints, a held-open SSE connection plus a separate POST URL, and it has been deprecated in favour of the single-endpoint design.

So "SSE" in an older tutorial usually means that two-endpoint transport, while "SSE" in a current one usually means the streaming response mode inside Streamable HTTP. The words are identical and the architectures are not.

Example

A server answering a tools/list POST can reply two ways: Content-Type: application/json with one body, or Content-Type: text/event-stream with the same JSON-RPC response delivered as an event. Both are correct under the current transport, and a client that only anticipated the first will report a working server as broken.

Go deeper

Related terms