Why Streamable HTTP Beats HTTP+SSE for AI Model Communication
The article examines the new Streamable HTTP transport layer introduced in the Model Context Protocol (MCP), comparing it with the traditional HTTP+SSE approach and demonstrating its superior stability, performance, and client simplicity through architectural analysis, session management details, and extensive benchmark results.
MCP (Model Context Protocol) is a standard protocol for communication between AI models and tools. Recent updates (PR #206) replace the original HTTP+SSE transport with a new Streamable HTTP layer.
HTTP+SSE: Client sends HTTP POST, server pushes responses via a separate SSE endpoint, requiring two independent connections.
Streamable HTTP: A single HTTP endpoint handles both requests and responses, allowing the server to return either a standard HTTP response or an SSE stream as needed.
This article analyzes the technical details and practical benefits of Streamable HTTP.
Key Advantages
Better stability and performance in high‑concurrency scenarios.
Shorter, more stable response times.
Simpler client implementation with less code and lower maintenance cost.
Why Choose Streamable HTTP?
Problems with HTTP+SSE:
Server must maintain long connections: leads to significant resource consumption under high load.
Server messages can only be sent via SSE: adds unnecessary complexity and overhead.
Infrastructure compatibility: many networks cannot handle long‑lived SSE connections; firewalls may terminate them.
Improvements with Streamable HTTP
1. Unified Endpoint Design
Simplified architecture: reduces the number of connections between client and server, lowering system complexity.
Reduced resource consumption: single‑connection management is more efficient.
Improved compatibility: better fits existing network infrastructure, reducing firewall and proxy issues.
2. Flexible Transmission Modes
On‑demand streaming: simple requests can return a normal HTTP response without establishing a long connection.
Smart downgrade: automatically falls back to standard HTTP when network conditions are poor.
Resource optimization: dynamically allocates server resources based on request complexity.
3. Powerful Session Management
Session consistency: uses the Mcp-Session-Id header to maintain state across requests.
Reconnection support: leverages the Last-Event-ID mechanism to recover missed messages after a disconnect.
State recovery: allows clients to resume previous session state on reconnection, improving user experience.
Performance Comparison
In a test with 1,000 concurrent users, the Streamable HTTP implementation maintained far fewer TCP connections and achieved roughly one‑quarter the execution time of the SSE server.
Success‑rate tests show that as concurrency increases, HTTP+SSE success rates drop sharply, while Streamable HTTP maintains high success rates even under heavy load.
HTTP+SSE: success rate declines significantly with more concurrent users.
Streamable HTTP: retains high success rates in high‑concurrency scenarios.
Response‑time measurements reveal that Streamable HTTP consistently delivers shorter, more stable latency compared to HTTP+SSE, especially as the number of concurrent users grows.
Streamable HTTP: lower average response time, less variance.
HTTP+SSE: higher average response time, larger variance under load.
Client Complexity Comparison
Streamable HTTP supports both stateless and stateful services, but most use cases benefit from the stateless approach, resulting in much simpler client code.
HTTP+SSE client example:
class SSEClient:
def __init__(self, url: str, headers: dict = None):
self.url = url
self.headers = headers or {}
self.event_source = None
self.endpoint = None
async def connect(self):
# 1. 建立 SSE 连接
async with aiohttp.ClientSession(headers=self.headers) as session:
self.event_source = await session.get(self.url)
print('SSE connection established')
async for line in self.event_source.content:
if line:
message = json.loads(line)
await self.handle_message(message)
if self.event_source.status != 200:
print(f'SSE error: {self.event_source.status}')
await self.reconnect()
async def send(self, message: dict):
# 需要额外的 POST 请求发送消息
async with aiohttp.ClientSession(headers=self.headers) as session:
async with session.post(self.endpoint, json=message) as response:
return await response.json()
async def handle_message(self, message: dict):
print(f'Received message: {message}')
async def reconnect(self):
print('Attempting to reconnect...')
await self.connect()Streamable HTTP client example:
class StreamableHTTPClient:
def __init__(self, url: str, headers: dict = None):
self.url = url
self.headers = headers or {}
async def send(self, message: dict):
# 1. 发送 POST 请求
async with aiohttp.ClientSession(headers=self.headers) as session:
async with session.post(self.url, json=message, headers={'Content-Type': 'application/json'}) as response:
if response.status == 200:
return await response.json()
else:
raise Exception(f'HTTP error: {response.status}')From the code comparison:
Complexity: Streamable HTTP eliminates connection maintenance and reconnection logic.
Maintainability: clearer code structure, easier debugging.
Error handling: more straightforward without dealing with connection state.
Conclusion and Outlook
The introduction of Streamable HTTP marks a significant step toward a more efficient and stable MCP protocol, offering unified endpoint design, flexible transmission modes, and robust session management. It resolves many pain points of HTTP+SSE and provides a reliable communication foundation for AI applications.
Developers and enterprises seeking rapid deployment of high‑performance MCP services can leverage the Higress AI gateway marketplace ( https://mcp.higress.ai/ ), which offers dual‑protocol support, direct API conversion, near‑zero deployment cost, and practical value‑driven capabilities.
Reference links:
https://github.com/modelcontextprotocol/modelcontextprotocol/pull/206
https://mcp.higress.ai/
Signed-in readers can open the original source through BestHub's protected redirect.
This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactand we will review it promptly.
Alibaba Cloud Developer
Alibaba's official tech channel, featuring all of its technology innovations.
How this landed with the community
Was this worth your time?
0 Comments
Thoughtful readers leave field notes, pushback, and hard-won operational detail here.
