快速结论:当客户端通过 LiteLLM MCP 网关调用工具时,如果请求 _meta 中的 progressToken 是整数类型,就会触发 TypeError: 'int' object is not subscriptable 并显示为 “Could not capture host progress context” 警告。优先确认 LiteLLM 版本,并升级到包含修复的 v1.93.0 或更高版本。
适用环境:LiteLLM MCP 网关(litellm/proxy/_experimental/mcp_server/server.py);影响范围从 v1.86.2 到当前 main(v1.90.0-rc.1),修复首发于 v1.93.0(2026/07/18 发布)。未确认其他操作系统、CUDA、显卡等环境信息。
最快修复方案:升级 LiteLLM 到 v1.93.0 或更高版本,该版本已通过 PR #32402 修复此问题。
注意事项:该问题仅产生日志警告噪音,不影响实际功能,因为 host_progress_callback 在报错之前已赋值,进度转发仍能正常工作。升级前请确认你的 LiteLLM 配置和依赖与新版兼容。
问题场景
在 LiteLLM 代理中注册 MCP 服务器,并通过 MCP 网关调用工具时,若客户端在请求 _meta 中传入整数的 progressToken,代理日志会在每次工具调用时输出重复警告。许多 MCP 客户端 SDK 使用递增整数计数器作为 progressToken,因此该场景很常见。
报错原文
WARNING:LiteLLM:Could not capture host progress context: 'int' object is not subscriptable
原因分析
可能原因:在 litellm/proxy/_experimental/mcp_server/server.py 的主机进度捕获逻辑中,代码对 host_token 执行了 host_token[:8] 切片操作,该操作假定 host_token 是字符串。但根据 MCP 规范,progressToken 类型为 string | integer(Python SDK 中表示为 str | int),因此整数 token 会触发 TypeError: 'int' object is not subscriptable。外层 try/except 捕获后重新包装成误导性的 “Could not capture host progress context” 警告。
另外,代码中的 f-string 即使调试日志关闭也会被立即求值,所以该警告不受日志级别影响,每次调用都会触发。
环境排查
- LiteLLM 版本:确认是否低于 v1.93.0(v1.86.2 至 v1.90.0-rc.1 均受影响)。
- MCP 客户端行为:检查调用工具时请求
_meta中的progressToken是否为整数类型。 - MCP 协议版本:确认客户端遵循 MCP 规范中
progressToken允许字符串或整数的定义。
解决步骤
- 首选方案:升级 LiteLLM 到 v1.93.0 或更高版本,该版本合并了修复 PR #32402。
- 升级后重启 LiteLLM 代理服务,使新代码生效。
- 如果暂时无法升级,可以忽略该警告,因为已确认它不影响进度转发功能;但需注意日志噪音会持续存在。
验证方法
升级并重启后,用携带整数 progressToken 的客户端再次通过 MCP 网关调用工具,观察代理日志中不再出现 Could not capture host progress context 警告,即说明问题已解决。
参考来源
AI 工具推荐
想把多个 AI 模型放在一个入口?
GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。
推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。
这个方案解决了吗?
可以继续搜索完整报错,或查看同一工具的其他排查指南。


