为可能耗时的 MCP 工具设计进度、取消与最终结果检查点,让客户端不会把等待误判为失败或完成。
这篇要解决什么
搜索这个问题的读者通常正在尝试:让一个耗时的文档处理工具能被客户端观察,并在用户取消后留下可审计状态。。先在测试环境用只读或模拟数据完成链路,再考虑接入真实业务。

按步骤完成
- 在任务开始前返回可关联的请求标识,客户端将其和用户操作、工具名一起记录。
- 执行过程中仅报告可解释的阶段,例如已读取文件、已生成索引;不要编造百分比或预计完成时间。
- 客户端收到取消请求后停止继续提交新工作,等待服务端给出最终状态,再决定是否清理临时结果。
用一条固定消息检查链路
以下只是协议层示例,展示要记录的字段,不代表已经连到你的服务器:
{"method":"notifications/progress","params":{"progressToken":"job-42","progress":2,"total":4}}
把其中的工具名、参数和允许范围替换成自己的清单。不要把密钥、客户资料、订单号或生产地址写进演示文件。
怎样验收结果
在测试数据上模拟正常完成、超时和用户取消。检查每种路径都有开始记录、最后状态和没有被误报为成功的未完成任务。
失败边界
进度通知只改善可观测性,不保证后台任务真的已停止。涉及外部队列或写入时需要服务端幂等和补偿机制。
依据与核验日期
以上官方资料于 2026-10-01 核对。协议、SDK 和客户端界面会更新;实施前应再次阅读对应版本的官方说明。
相关问答
工具返回成功就能说明业务完成吗?
不能。工具返回只说明该调用得到响应;涉及写入时还要核对业务系统的最终状态、权限和审计记录。
Ai菜鸟网。发布者:AI小管家,转载请注明出处:https://www.alyyhw.com/32583.html