Skip to main content

Confirm

Are you sure?

Glossary

Streamable HTTP

How an agent talks to an MCP server that lives at a URL instead of on your laptop.

By · Last updated: September 2026

TL;DR

Streamable HTTP is the transport the Model Context Protocol uses for remote servers. The client sends each JSON-RPC message as an HTTP POST to one endpoint; the server answers with a single JSON response or, when it has several messages to send, a Server-Sent Events stream. It replaced MCP's earlier HTTP+SSE transport in 2025.

Free plan, no credit card. 1,000 credits a month.

How it works

How it works

MCP's first remote transport, HTTP+SSE, needed two endpoints and a long-lived Server-Sent Events connection for every client — awkward behind load balancers and for serverless hosting. The 2025-03-26 revision of the spec replaced it with streamable HTTP:

  1. 1
    The server has one endpoint, such as https://example.com/mcp.
  2. 2
    The client POSTs each JSON-RPC message to it, accepting both application/json and text/event-stream.
  3. 3
    The server answers with one JSON response — or, if it wants to send progress or several messages, opens an SSE stream on that response.
  4. 4
    Optionally, the server issues an Mcp-Session-Id header for stateful sessions, and the client may GET the endpoint for server-initiated messages.
Listing a server's tools
POST /mcp HTTP/1.1
Host: urlpipe.dev
Authorization: Bearer YOUR_TOKEN
Content-Type: application/json
Accept: application/json, text/event-stream

{"jsonrpc": "2.0", "id": 1, "method": "tools/list"}

In practice

Why it matters

A server that answers every message with plain JSON and keeps no session is an ordinary HTTP API: it scales horizontally, sits behind any proxy and authenticates with a normal Authorization header. Streaming is there for the servers that need it — long-running tools reporting progress — without forcing it on the rest. Clients that only speak the older transport, or only stdio, can reach a streamable HTTP server through a small local bridge.

URLpipe

URLpipe's transport

URLpipe's MCP server at https://urlpipe.dev/mcp speaks streamable HTTP in its simplest form: every message gets a single JSON response, it opens no SSE stream and keeps no session. Authentication is a bearer token in the header, with no OAuth flow to complete. Long jobs don't need a stream: tools are async by default and return a token that get_result redeems, or pass sync: true to wait. See the MCP docs.

FAQ

Frequently asked questions

What is the difference between SSE and streamable HTTP in MCP?
The older HTTP+SSE transport needed a separate SSE connection held open for every client. Streamable HTTP uses one endpoint and plain POSTs, and only streams when a response needs it.
Does streamable HTTP require sessions?
No. Sessions are optional; a server can be stateless and answer every message on its own.
Can a client that only speaks stdio use a streamable HTTP server?
Yes, through a small local bridge: the client starts the bridge as if it were a local server, and the bridge forwards each message to the remote endpoint.

See it on your own pages.

Free plan, no card. Confirm your email and your API key is live — you'll be making real requests in minutes.