MCP 工具失败返回 HTTP 200,Agent 重试 6 次全付费且无告警
Thirumalaiboobathi · reddit · 2026-09-09
作者在生产环境 MCP 部署中反复发现一个隐蔽故障模式:MCP 工具失败时服务端不返回错误,而是在 HTTP 200 的合法 JSON-RPC 响应里携带 isError: true。通用 OTel 埋点按传输状态判断 span,看到 200 就标记成功——仪表盘一片健康,实际上每次工具调用都在失败。
二阶后果才是烧钱点:
- 模型收到的是『看起来像抱怨输入的普通工具结果』,于是换措辞重试
- 每次重试都把上一次的失败结果带进上下文,token 越滚越多
- 6 次计费调用颗粒无收,唯一暴露途径是月底账单
作者的解法(已开源 opentel-mcp):
- 检查 result payload,isError 置位时将 span 标为 ERROR
- 对失败消息做归一化+哈希指纹,不同 IP 的同一根因归为一组
- 检测重试循环:同一指纹出现 N 次合并为一个事件,记录循环长度与烧掉的 token
- 按工具调用归属成本,可按花费排序 trace
- 识别 inputSchema 静默漂移——agent 凌晨崩溃无信号的常见原因
- 兼容两代 MCP SDK,包括无状态 spec
「编程与Agent」频道最新
- KVMem 把上下文溢出存为分页 KV 状态,Agent 成功率反超压缩方案 — omarsar0 · 2026-09-09
- 编程智能体是首个「自相竞争」的产品品类 — samgoodwin89 · 2026-09-09
- 单提示词跑通:本地 Qwen 27B 在 RTX 3090 上复刻马里奥 — ChopSticksPlease · 2026-09-09
- vibe coder 进阶指南:让模型画架构图、写 spec 并循环打磨 — Daniel_Farinax · 2026-09-09
- RSM 记忆方法:4k 预算达全上下文 83% 质量,token 成本仅 32% — dair_ai · 2026-09-09
- 腾讯混元发布 Gander:全双工多模态交互智能体技术报告 — Tencent-Hunyuan · 2026-09-09