快速结论:当基于 MCP Python SDK 的服务器收到未知 JSON-RPC 方法调用时,会返回 -32602 Invalid params,而 JSON-RPC 2.0 规范要求返回 Unknown methods return -32602 Invalid params instead of -32601 Method not found。优先排查是否仍在使用 v1.x 版本,并确认 mcp/shared/session.py 中请求校验逻辑是否将未知方法与参数错误混为一谈。
适用环境:Issue 中确认的环境为 mcp 1.27.1、Python 3.14;服务器基于 MCP Python SDK。其他操作系统、CUDA、显卡或依赖版本未在 Issue 中明确。
最快修复方案:升级到 SDK 的 2.0.0 版本,该问题已在 v2 版本中修复。
注意事项:v1.x 已进入仅维护模式,仅修复漏洞等关键问题,因此 v1.x 上暂无确认的一步修复方案。升级到 v2 可能带来行为变化,Issue 评论中有人提到 v2 移除了 session 状态,企业部署需自行评估身份验证与审计影响;该评论属于社区讨论,不是官方修复说明。
问题场景
用户在使用基于 MCP Python SDK 构建的服务器时,客户端或目录扫描器(如 Smithery)探测服务器未声明支持的可选能力,例如 triggers/list、completions/complete 或 logging/setLevel。服务器对这些不存在的方法统一返回 -32602 Invalid request parameters,导致扫描器把“方法不存在”误判为“调用参数错误”。
报错原文
Warning: Failed to list triggers: MCP error -32602: Invalid request parameters
{"jsonrpc":"2.0","id":9,"method":"totally/bogus"}
{"jsonrpc":"2.0","id":9,"error":{"code":-32602,"message":"Invalid request parameters","data":""}}
原因分析
在 mcp/shared/session.py 中,self._receive_request_type.model_validate(...) 对不在请求联合类型中的方法会抛出异常,而外围的 except Exception 将所有异常统一映射为 INVALID_PARAMS。请求联合类型同时承担了“方法注册表”的职责,导致“我没有这个方法”和“参数无法解析”进入同一处理分支,无法区分 -32601 METHOD_NOT_FOUND 与 -32602 INVALID_PARAMS。
环境排查
- 确认使用的
mcpSDK 版本;Issue 中观察到的出问题版本为1.27.1。 - 确认 Python 版本;Issue 中为 Python 3.14。
- 确认服务器是否声明了被探测的能力,例如
triggers/list、completions/complete、logging/setLevel。 - 检查
mcp/shared/session.py中请求校验的异常处理逻辑,确认是否将未知方法与参数校验失败统一返回INVALID_PARAMS。 - 确认是否已升级到
2.0.0或更高版本。
解决步骤
- 升级 MCP Python SDK 到
2.0.0版本;维护者明确表示该问题已在 v2 版本中修复。 - 如果因兼容性原因必须停留在 v1.x,需注意 v1.x 仅处于维护模式,只修复漏洞等关键问题,因此该行为在 v1.x 上可能不会得到修复。
- 可优先尝试的替代思路:在构建错误响应前,先判断请求方法是否属于已知请求方法;若不属于,则返回
METHOD_NOT_FOUND(-32601),仅对已知方法但校验失败的情况保留INVALID_PARAMS(-32602)。此方案来自 Issue 的建议方向,Issue 中没有将该改动合并进 v1.x 的确认记录。 - 可优先尝试的补充改进:在错误响应的
data字段中填充具体的校验错误信息,当前该字段为空字符串,响应不携带任何诊断信息。
验证方法
完成 initialize 与 notifications/initialized 后,向服务器发送一个未知方法请求:
{"jsonrpc":"2.0","id":9,"method":"totally/bogus"}
若返回的错误码为 -32601(Method not found),说明未知方法已按 JSON-RPC 2.0 规范正确处理;若返回 -32602,则问题仍然存在。可同时对 triggers/list、completions/complete、logging/setLevel 等未声明能力的方法进行探测,确认它们不再被误报为参数错误。
参考来源
modelcontextprotocol/python-sdk #3193
AI 工具推荐
想把多个 AI 模型放在一个入口?
GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。
推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。
这个方案解决了吗?
可以继续搜索完整报错,或查看同一工具的其他排查指南。


