← 返回目录
M

MCP Python SDK

官方
官方 Model Context Protocol Python SDK,用于构建 MCP 服务器与客户端
GitHub 源仓库 ↗
★ 23.9k Stars 分类 · 开发工具 非常热门
68FMRS · C
可靠性
9/20
安全与权限
12/20
维护活跃度
18/20
文档质量
16/20
安装易用性
13/20

官方维护的 MCP Python SDK,用于构建服务器和客户端而非本身作为固定功能服务器;文档、迁移指南和社区支持渠道完整,v2 为当前稳定线,v1.x 仍维护安全补丁。

查看 FMRS 评分方法 →

这是 Model Context Protocol(MCP)的官方 Python 实现,由 modelcontextprotocol 组织维护。它不是一个提供固定工具集的独立 MCP 服务器,而是一个开发库:开发者用它来编写暴露工具(tools)、资源(resources)和提示(prompts)的 MCP 服务器,或编写连接任意 MCP 服务器的客户端。SDK 支持 stdio、Streamable HTTP 和 SSE 三种标准传输方式,并通过 Python 类型注解自动生成 JSON Schema,免去手写协议解析代码。当前为 v2 主线(配合 2026-07-28 版协议规范及更早版本),v1.x 仍在独立分支上接收安全补丁。要求 Python 3.10 及以上版本。

工具能力

暂未整理工具清单。

安装接入

使用 uv add "mcp[cli]"pip install "mcp[cli]" 安装(cli extra 附带 mcp dev/mcp run/mcp install 命令行工具;若不需要 CLI,可只安装 mcp)。由于 pip install mcp 现在默认安装 2.x,若项目仍依赖 v1 行为,需在依赖声明中锁定版本上限,例如 mcp>=1.28,<2,直至完成迁移。安装后可编写包含 @mcp.tool()@mcp.resource() 装饰器的服务器脚本,并用 uv run mcp dev server.py 在 MCP Inspector 中调试。

选型与风险

适合谁

  • 熟悉 Python 类型注解、希望快速搭建 MCP 服务器或客户端的开发者
  • 需要在项目中集成 MCP 协议能力(工具调用、资源访问)的团队
  • 正在评估或迁移到 MCP v2 规范的现有 v1 用户

不适合谁

  • 寻找可直接安装使用、开箱即用的最终用户级 MCP 服务器(本仓库是 SDK 而非某个具体服务)的用户
  • 仍停留在 Python 3.9 及更早版本、无法升级运行环境的项目
  • 尚未准备好处理 v1 到 v2 破坏性变更、需要长期锁定旧行为的项目

所需权限

  • SDK 本身不请求特定系统权限;实际权限需求取决于开发者用它构建的具体服务器逻辑
  • 若服务器通过 stdio 运行,宿主进程可执行任意本地代码逻辑(由开发者编写的工具函数决定)
  • 若使用 SSE 或 Streamable HTTP 传输,需要网络监听/访问权限

风险与副作用

  • 作为开发库,最终服务器的安全性完全取决于使用者如何实现工具与资源逻辑,SDK 无法保证下游代码安全
  • v1 到 v2 存在架构性破坏变更,未固定版本上限的项目在依赖升级时可能意外收到不兼容的 2.x 版本
  • 工具函数的参数与返回值处理若未做额外校验,仍可能被恶意或异常输入触发非预期行为

常见排障

  1. 确认 Python 版本为 3.10 及以上,否则安装或运行会失败
  2. 若需要 `mcp` 命令行工具(`mcp dev`/`mcp run`/`mcp install`),确认安装时带上了 `[cli]` extra
  3. 若项目依赖 v1.x 行为,检查依赖声明是否已锁定 `<2` 版本上限,避免被自动升级到 v2
  4. 使用 `uv run mcp dev server.py` 结合 MCP Inspector 排查工具调用或资源解析问题
  5. 参考官方文档站 py.sdk.modelcontextprotocol.io 的迁移指南解决 v1→v2 升级问题

使用场景

从零编写一个暴露工具、资源、提示的自定义 MCP 服务器
编写连接远程或本地 MCP 服务器的 Python 客户端
在测试中直接以内存方式连接服务器对象,无需启动实际传输层
在 stdio、SSE、Streamable HTTP 之间为已有服务器切换传输方式

支持客户端

暂未确认支持的客户端。