流式HTTP传输 —— MCP 协议的新一代传输层,告别 SSE,拥抱无状态化
⏰ MCP 无状态化规范锁定倒计时
届时 Streamable HTTP 将成为推荐传输方式
MCP Streamable HTTP 是 Model Context Protocol (MCP) 定义的一种基于 HTTP 的流式传输协议,用于替代传统的 SSE(Server-Sent Events)传输方式。它允许 MCP 客户端和服务器之间通过标准 HTTP 请求进行双向通信,同时支持流式数据传输。
核心变化:不再需要持久连接,每个请求都是独立的,完美适配无状态化架构。
旧的 MCP 传输方式存在几个问题:
| 特性 | SSE (旧) | Streamable HTTP (新) |
|---|---|---|
| 连接模型 | 长连接、有状态 | 短连接、无状态 |
| Session ID | 必须 | 移除 |
| 负载均衡 | 困难(粘性会话) | 简单(无状态) |
| Serverless 支持 | ❌ 不支持 | ✅ 完美支持 |
| 扩展性 | 受限于连接数 | 水平扩展无限制 |
| 断线重连 | 需要特殊处理 | 天然支持(无状态) |
// Streamable HTTP 请求示例
POST /mcp HTTP/1.1
Content-Type: application/json
Accept: application/json, text/event-stream
Mcp-Method: tools/call
Mcp-Name: web_search
{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "web_search",
"arguments": { "query": "OpenClaw latest" }
},
"id": "req_123"
}
// 流式响应(text/event-stream)
HTTP/1.1 200 OK
Content-Type: text/event-stream
data: {"jsonrpc":"2.0","result":{"type":"progress","message":"Searching..."},"id":"req_123"}
data: {"jsonrpc":"2.0","result":{"type":"result","content":[...]},"id":"req_123"}
data: [DONE]
| Header | 说明 | 示例 |
|---|---|---|
| Mcp-Method | 调用的 MCP 方法名 | tools/call |
| Mcp-Name | 工具/资源名称 | web_search |
| Accept | 支持的响应格式 | application/json, text/event-stream |
OpenClaw 已经支持 Streamable HTTP 传输方式,配置如下:
// openclaw.config.ts - MCP 服务器配置
{
"mcp": {
"servers": {
"my-server": {
"url": "https://mcp.example.com/mcp",
"transport": "streamable-http",
"headers": {
"Authorization": "Bearer ${MCP_TOKEN}"
}
}
}
}
}
initialize 握手调用Mcp-Method 和 Mcp-Name Header最后更新:2026-06-25 | 作者:妙趣AI
有问题?联系我们