Streamable_ ttp. py shows warning

用户使用 MCP Python SDK (1.13.1 版本) 运行 Streamable HTTP 服务器(基于 examples/servers/simple-streamablehttp-stateless/server.py 示例)时,遇到警告。错误发生在服务器已正常运行后,客户端出现连接断

Streamable_ ttp. py shows warning

Streamable_ ttp. py shows warning

快速结论:该报错发生在 MCP Python SDK 的 Streamable HTTP 服务器中,当客户端连接在服务正常运行时断开,并且服务器日志级别为 ERROR 时触发。优先排查是否使用了 json_response=False 作为临时规避方案,或升级到包含修复的 SDK 版本。

问题场景

用户使用 MCP Python SDK (1.13.1 版本) 运行 Streamable HTTP 服务器(基于 examples/servers/simple-streamablehttp-stateless/server.py 示例)时,遇到警告。错误发生在服务器已正常运行后,客户端出现连接断开的情况下。

报错原文

2025-08-22 20:39:59,254 - mcp.server.streamable_http - ERROR - Error in message router
Traceback (most recent call last):
File "xx\.venv\Lib\site-packages\mcp\server\streamable_http.py", line 831, in message_router
async for session_message in write_stream_reader:
File xx\.venv\Lib\site-packages\anyio\abc\_streams.py", line 41, in __anext__
return await self.receive()
^^^^^^^^^^^^^^^^^^^^
File "xx\.venv\Lib\site-packages\anyio\streams\memory.py", line 111, in receive
return self.receive_nowait()
^^^^^^^^^^^^^^^^^^^^^
File "xx\.venv\Lib\site-packages\anyio\streams\memory.py", line 93, in receive_nowait
raise ClosedResourceError
anyio.ClosedResourceError

原因分析

可能是版本 1.12.0 的 mcp/server/streamable_http_manager.py 文件引入了 await http_transport.terminate() 代码(位于行 194),导致在会话已经终止后,消息路由器仍然尝试从已关闭的流中读取数据,从而抛出 ClosedResourceError。该错误在日志中被记录为 ERROR 级别。

环境排查

  • 确认 MCP Python SDK 版本(已知受影响的版本包括 1.12.0、1.13.1)。
  • 检查 json_response 参数的设置值。
  • 确认日志级别是否被设置为 ERROR 或更低(如 INFO、DEBUG),影响报错可见性。

解决步骤

  1. 临时规避方案:如果无法立即升级 SDK,可尝试将服务器的 json_response 参数设置为 Falsejson_response=False),这是社区确认可用的workaround。
  2. 升级修复版本:该问题已在后续版本由 PR #1384 修复。修复方式是将消息路由器对 ClosedResourceError 的处理从 ERROR 级别降级为 DEBUG 级别日志。建议升级到包含该修复的最新版本。
  3. 确认重复 Issue:此问题与 #1363 重复,可参考该 Issue 了解更详细的排查过程。

注意:不要在未确认修复版本内容的情况下,自行删除或注释 await http_transport.terminate() 代码,这可能导致其他副作用。

验证方法

修复后,当客户端正常断开连接时,日志中不再出现 ERROR 级别的 ClosedResourceError 堆栈跟踪信息。可以使用 DEBUG 级别日志来确认相关事件是否被正确记录。

参考来源

modelcontextprotocol/python-sdk #1294

GamsGo AI

AI 工具推荐

想把多个 AI 模型放在一个入口?

GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。

了解 GamsGo AI

推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。

celebrityanime
celebrityanime
文章: 9040

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注