快速结论:MCP Python SDK 对未知 JSON-RPC 方法错误地返回 -32602 Invalid params 而非正确的 -32601 Method not found,导致客户端(如 Smithery)误判并反复重试。优先排查是否正在使用 v1.x 版 SDK,并升级到 v2.0.0。
适用环境:MCP Python SDK 1.27.1 及之前版本;Python 3.14;已知在 initialize + notifications/initialized 后发送不存在的 JSON-RPC 方法时触发。
最快修复方案:升级到 MCP Python SDK v2.0.0 版本(官方确认此错误已在 v2 中修复)。
注意事项:v2 是主版本升级,移除了 session 状态,可能影响需要状态追踪的现有业务逻辑。企业部署需评估变更带来的威胁模型影响。
问题场景
使用 MCP Python SDK 构建 MCP 服务器时,客户端发送一个服务器未实现的 JSON-RPC 方法(例如 triggers/list、completions/complete、logging/setLevel 或完全随机的 totally/bogus)。SDK 应当返回 -32601 Method not found,但实际上返回了 -32602 Invalid request parameters。这导致客户端(如 Smithery)认为请求参数有误而不断重试,最终造成日志污染及无效扫描。
报错原文
{"jsonrpc":"2.0","id":9,"error":{"code":-32602,"message":"Invalid request parameters","data":""}}
客户端收到的警告示例:
Warning: Failed to list triggers: MCP error -32602: Invalid request parameters
原因分析
mcp/shared/session.py 中,_receive_request_type.model_validate(...) 在遇到未知方法时会抛出异常,然后被 except Exception 统一捕获,所有异常都被映射为 INVALID_PARAMS。代码未区分“方法不存在”与“参数验证失败”两种场景。此外,data 字段被设为空字符串,没有任何诊断信息。
环境排查
- 确认 MCP Python SDK 版本:
1.27.1及之前 v1.x 版本均存在此问题。 - Python 版本:已验证 3.14。
- 其他依赖:无需额外确认。
解决步骤
- 将 MCP Python SDK 升级至 v2.0.0 或更高版本(v2 版本已修复该错误)。
- 如果因业务限制无法升级,可参考 Issue 中提及的未合并 PR #2372,在
mcp/shared/session.py中增加方法名预检逻辑:在解析请求之前检查message.message.root.method是否在已知方法列表中,若不存在则直接返回METHOD_NOT_FOUND(代码 -32601)。 - 注意:v1.x 已进入维护模式,仅修复关键安全漏洞,官方不计划为此问题单独发布补丁。
验证方法
向服务器发送一个不存在的 JSON-RPC 方法(例如 {"jsonrpc":"2.0","id":9,"method":"totally/bogus"}),确认返回的错误码为 -32601 且消息为 Method not found。同时检查客户端日志中不再出现 -32602 Invalid request parameters 警告。
参考来源
modelcontextprotocol/python-sdk #3193
AI 工具推荐
想把多个 AI 模型放在一个入口?
GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。
推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。
这个方案解决了吗?
可以继续搜索完整报错,或查看同一工具的其他排查指南。


