You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于MCP会话中工具大响应分块返回的技术问询

MCP SSE流式处理工具大响应分块实现方案

核心思路

在单个tools/call请求的会话生命周期内,多次发送独立的Outbound Event传输分块数据,直到所有分块发送完毕,最后发送明确的结束标记。

具体实现步骤

  1. 客户端发起带分块标识的工具调用请求
    客户端建立SSE连接启动会话后,发送tools/call的Inbound Event时,需在请求参数中明确声明允许分块响应,让服务端知晓需要拆分大结果返回。
    示例请求:

    /mcp
    request: tools/call {"tool_id": "large-data-generator", "params": {"source": "big-dataset"}, "chunked": true} ### Inbound Event ###
    
  2. 服务端分块发送响应事件
    工具处理请求时,将大响应拆分为多个数据块,每生成一个块就发送一个独立的Outbound Event。每个事件需携带块顺序标识、总块数和当前块数据,确保客户端能正确拼接。
    示例分块响应:

    /mcp
    response: {"chunk_index": 1, "total_chunks": 4, "data": "大响应第一部分内容"} ### Outbound Event ###
    
    /mcp
    response: {"chunk_index": 2, "total_chunks": 4, "data": "大响应第二部分内容"} ### Outbound Event ###
    
  3. 发送分块结束标记
    所有分块发送完成后,发送一个携带completed: true的结束事件,告知客户端该工具调用的响应已全部传输完毕,无需继续等待。
    示例结束事件:

    /mcp
    response: {"chunk_index": 4, "total_chunks": 4, "data": "大响应最后一部分内容", "completed": true} ### Outbound Event ###
    
  4. 客户端拼接分块数据
    客户端监听SSE事件流,根据chunk_index和total_chunks按顺序拼接数据块,直到收到completed: true的标记后,结束对该工具调用的处理流程。

注意事项

  • 保持MCP会话在分块传输全程活跃,避免提前断开连接导致数据丢失。
  • 统一分块事件的格式规范,减少客户端解析时的异常风险。
  • 可额外添加错误处理事件,若分块传输失败,及时向客户端发送错误标识,支持重试或终止操作。

内容的提问来源于stack exchange,提问作者Venkatesh Laguduva

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 22:05:57