MCP Streamable HTTP 是什么?

流式HTTP传输 —— MCP 协议的新一代传输层,告别 SSE,拥抱无状态化

⏰ MCP 无状态化规范锁定倒计时

2026-07-28

届时 Streamable HTTP 将成为推荐传输方式

📖 定义

MCP Streamable HTTP 是 Model Context Protocol (MCP) 定义的一种基于 HTTP 的流式传输协议,用于替代传统的 SSE(Server-Sent Events)传输方式。它允许 MCP 客户端和服务器之间通过标准 HTTP 请求进行双向通信,同时支持流式数据传输。

核心变化:不再需要持久连接,每个请求都是独立的,完美适配无状态化架构。

🎯 为什么需要 Streamable HTTP?

旧的 MCP 传输方式存在几个问题:

⚡ Streamable HTTP vs SSE

特性 SSE (旧) Streamable HTTP (新)
连接模型 长连接、有状态 短连接、无状态
Session ID 必须 移除
负载均衡 困难(粘性会话) 简单(无状态)
Serverless 支持 ❌ 不支持 ✅ 完美支持
扩展性 受限于连接数 水平扩展无限制
断线重连 需要特殊处理 天然支持(无状态)

🔧 核心机制

1. 请求-响应模型

// 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"
}

2. 流式响应

// 流式响应(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]

3. 新增 Header

Header 说明 示例
Mcp-Method 调用的 MCP 方法名 tools/call
Mcp-Name 工具/资源名称 web_search
Accept 支持的响应格式 application/json, text/event-stream

🔧 OpenClaw 中的 Streamable HTTP

💡 OpenClaw MCP 配置

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}"
        }
      }
    }
  }
}

⚠️ 迁移注意事项

⚠️ 从 SSE 迁移到 Streamable HTTP:
💡 迁移时间窗口:MCP 无状态化规范将于 2026-07-28 锁定。建议在截止日期前完成迁移,以确保与最新 MCP 生态兼容。

🔗 相关概念

MCP 协议 无状态化 SSE HTTP/2 Serverless

最后更新:2026-06-25 | 作者:妙趣AI

有问题?联系我们