跳转至

可流式 HTTP (Streamable HTTP) 连接规范

streamable_http 连接类型使 Griptape Nodes 能够通过标准 HTTP/HTTPS 协议与远程 MCP 服务器建立支持客户端与服务端双向流式传输 (Bidirectional Streaming) 的实时全双工通信。


适用场景 (When to Use Streamable HTTP)

  • 真正的双向数据流:客户端与服务端双方均需要在会话中持续流式收发数据;
  • 高交互性业务应用:实时智能体对话、协同图纸编辑、动态白板与跨团队画布协作;
  • 企业现有 HTTP 基础设施:利用现有的 API 网关、WAF 防火墙与负载均衡器开展流量路由;
  • 自定制流控机制:需要比传统 SSE 更加细粒度的连接生命周期与会话状态管控;
  • 持久化会话纳管 (Session Management):要求在跨请求网络抖动时维系长久 Session 状态。

典型 Streamable HTTP MCP 服务

  • Exa — 先进的高级语义网页检索与深度科研分析中枢。

典型配置范例 (Example Configurations)

实时对话类 MCP 服务配置

{
  "name": "chat_app",
  "transport": "streamable_http",
  "url": "https://api.chat-service.com/mcp/stream",
  "headers": {
    "Authorization": "Bearer chat-token"
  },
  "timeout": 60,
  "sse_read_timeout": 120,
  "terminate_on_close": false,
  "description": "面向实时通信与动态协作的双向流服务"
}

字段配置规范参考 (Configuration)

必填字段 (Required Fields)

字段名称 数据类型 物理含义与功能说明 典型配置范例
url 字符串 暴露 MCP 流式服务能力的 HTTP/HTTPS 终结点地址 "https://api.example.com/mcp/stream"

可选高级字段 (Optional Fields)

字段名称 数据类型 物理含义与功能说明 默认值
headers 键值字典 随请求携带的 HTTP 报头(如鉴权 Token、API Key 等) {}
timeout 浮点数 基础 HTTP 请求握手与传输超时时间(秒) 30
sse_read_timeout 浮点数 单次流式块读取的等待超时时间(秒) 60
terminate_on_close 布尔值 当连接断开时,是否在远端强制销毁当前会话上下文 true

更多生产级配置范本

基础通用流式服务

{
  "name": "streamable_api",
  "transport": "streamable_http",
  "url": "https://api.example.com/mcp/stream",
  "description": "基于双向流式传输的通用客户端-服务端通信接口"
}

带自定义 API Key 与客户端指纹的安全连接

{
  "name": "custom_streamable",
  "transport": "streamable_http",
  "url": "https://mcp.example.com/stream",
  "headers": {
    "X-API-Key": "your-api-key",
    "X-Client-Version": "1.0.0",
    "User-Agent": "GriptapeNodes/1.0"
  },
  "timeout": 90,
  "sse_read_timeout": 300,
  "terminate_on_close": false
}

Streamable HTTP 与传统 SSE 的技术架构对比

架构维度 可流式 HTTP (Streamable HTTP) 传统 SSE (Server-Sent Events)
传输流向 全双工双向流动 (客户端 $\leftrightarrow$ 服务端) 严格单向 (仅服务端 $\rightarrow$ 客户端推送)
底层协议 现代分块传输编码 (Chunked) / 双向 HTTP 流 标准化单向 MIME (text/event-stream)
核心场景 实时问答交互、协同白板、动态输入打断 单向股票行情看板、日志监控大屏、通知推送
断线重连 由应用层协议框架深度管控 原生依靠浏览器协议层自动重试
会话持久化 支持与 terminate_on_close 深度协同 通常依赖 Cookie 或重连 Header

身份认证配置范式 (Authentication)

1. Bearer Token 规范 (JWT 等)

{
  "headers": {
    "Authorization": "Bearer your-jwt-token"
  }
}

2. 独立 API Key 与客户端标识

{
  "headers": {
    "X-API-Key": "your-api-key",
    "X-Client-ID": "griptape-nodes"
  }
}

3. 多租户复杂鉴权

{
  "headers": {
    "X-Custom-Auth": "your-custom-token",
    "X-User-ID": "user123",
    "X-Session-ID": "session456"
  }
}

会话生命周期控制 (Session Management)

关闭即销毁 (terminate_on_close: true)

  • 默认行为。当节点执行完毕关闭连接时,主动通知远端服务端立即清理该会话占用的内存与状态;
  • 适用于幂等性工具调用与无状态交互场景。

跨调用持久化会话 (terminate_on_close: false)

  • 连接关闭后,远端服务端继续保活当前 Session 状态;
  • 极适合需要持续多轮追加上下文、长周期任务追踪或协同画布会话。

生产级部署与调优建议 (Best Practices)

  1. 全面启用 HTTPS/TLS 加密:生产环境中严禁在明文 HTTP 上暴露 MCP 工具链;
  2. 合理放宽超时配额:对于生成时间漫长的大模型推理或大数据分析任务,将 sse_read_timeout 适当调大(例如 180~300 秒);
  3. 连接池复用:系统会自动复用存活的 TCP/HTTP 连接,降低频繁建立握手的握手延迟;
  4. 日志排查:遇到流式中断时,检查是否被上游 Nginx 或云防火墙的 proxy_buffering 缓冲阻断,应配置 proxy_buffering off 确保流式数据即刻穿透。

推荐延伸阅读