快速结论:该报错 `TypeError: mcp.types.JSONRPCRequest() got multiple values for keyword argument ‘jsonrpc’` 通常出现在构建 MCP 网关/代理时,`ServerSession` 收到的 `ClientRequest` 被转发到 `ClientSession.send_request()`,因请求数据中残留 `jsonrpc` 和 `id` 字段导致冲突。优先检查 MCP Python SDK 版本,若为 1.x(如 1.27.0),可尝试手动剥离 envelope 字段或升级至 v2。
适用环境:MCP Python SDK 1.27.0(可能影响后续 1.x 版本);操作系统、Python 版本未在 Issue 中明确。
最快修复方案:
– 对于 v1.x 用户:在转发前从 `request.model_dump()` 中删除 `”jsonrpc”` 和 `”id”` 字段(详见解决步骤方案一)。
– 升级至 MCP Python SDK v2(#2838,已合并并发布)可根本解决,因为 v2 重写了 session 逻辑,不再存在该冲突。
注意事项:v2 对内部 API 有重大变更(`BaseSession.send_request` 已被移除),升级需适配新架构。手动剥离字段的方案已在 MCP-IDS 项目中验证,但非官方修复。
问题场景
用户在使用 MCP Python SDK 构建网关/代理时,典型模式为:通过 `ServerSession` 接收外来请求,再通过 `ClientSession.send_request()` 转发给下游服务。在转发过程中报错。
报错原文
TypeError: mcp.types.JSONRPCRequest() got multiple values for keyword argument 'jsonrpc'
原因分析
根本原因在于 `ServerSession._receive_loop` 中解析请求时,使用了 `model_validate` 且 `ClientRequest` 的子类型(如 `CallToolRequest`)配置了 `model_config = {‘extra’: ‘allow’}`,导致信封字段 `jsonrpc` 和 `id` 被保留在验证后的请求对象中。当该请求通过 `BaseSession.send_request` 转发时,内部代码先将请求 `model_dump` 为字典,再以 `JSONRPCRequest(jsonrpc=”2.0″, id=request_id, **request_data)` 构造新请求,此时 `request_data` 中已包含 `jsonrpc` 和 `id`,与显式关键字参数冲突,触发 `TypeError`。
环境排查
- MCP Python SDK 版本:确认是否 ≤1.27.0(v1.x 系列)。Issue 中观察到的版本为 1.27.0。
- 使用场景:是否使用了 `ServerSession` → `ClientSession.send_request` 的转发模式。
- Python 版本、CUDA、显卡等在该问题中不是关键因素,无需特别排查。
解决步骤
方案一(适用于 v1.x,已验证):
- 在转发请求之前,定义一个辅助函数剥离信封字段:
def _strip_envelope_fields(request: ClientRequest) -> ClientRequest: raw = request.model_dump(by_alias=True, mode="json", exclude_none=True) raw.pop("jsonrpc", None) raw.pop("id", None) return ClientRequest.model_validate(raw) - 使用剥离后的请求调用 `client_session.send_request(…)`。
方案二(推荐,从根本上修复):
- 升级 MCP Python SDK 至 v2(如通过 `pip install mcp>=2.0.0`,具体版本号请参考发布说明)。
- 适配 v2 的 API 变动,例如 `send_request` 方法位置已变更。
验证方法
运行原有的网关/代理逻辑,确认不再抛出 `TypeError: got multiple values for keyword argument ‘jsonr
参考来源
modelcontextprotocol/python-sdk #2548
AI 工具推荐
想把多个 AI 模型放在一个入口?
GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。
推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。
这个方案解决了吗?
可以继续搜索完整报错,或查看同一工具的其他排查指南。


