Glossary
Streamable HTTP
How an agent talks to an MCP server that lives at a URL instead of on your laptop.
By Roger Campos · 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:
- 1The server has one endpoint, such as
https://example.com/mcp. - 2The client POSTs each JSON-RPC message to it, accepting both
application/jsonandtext/event-stream. - 3The server answers with one JSON response — or, if it wants to send progress or several messages, opens an SSE stream on that response.
- 4Optionally, the server issues an
Mcp-Session-Idheader for stateful sessions, and the client may GET the endpoint for server-initiated messages.
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.
Try it
Streamable HTTP, on a page you choose
Related terms
FAQ
Frequently asked questions
What is the difference between SSE and streamable HTTP in MCP?
Does streamable HTTP require sessions?
Can a client that only speaks stdio use a streamable HTTP server?
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.