ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

安装 MCP Python SDK:从 `mcp[cli]` 到依赖解析的完整指南

2026/9/20 13:21:26 拓冰建站 浏览量
安装 MCP Python SDK:从 `mcp[cli]` 到依赖解析的完整指南 人工智能MCP 服务MCP Clients【免费下载链接】python-sdkThe official Python SDK for Model Context Protocol servers and clients项目地址https://gitcode.com/gh_mirrors/pythonsd/python-sdk点击查看免费下载本指南以官方文档 docs/get-started/installation.md 为骨架结合本仓库源码系统讲解 Model Context ProtocolMCP官方 Python SDK发行名mcp的安装方式、Python 版本要求、核心依赖的职责划分以及可选扩展的取舍并给出安装后的验证手段。读完本文你将能独立完成 SDK 的安装、理解每个依赖在运行时扮演的角色并基于仓库源码验证安装结果的正确性。安装前提Python 3.10 与稳定版本线MCP Python SDK 以mcp为名发布在 PyPI 上。官方安装文档明确声明它要求Python 3.10这一要求与仓库 pyproject.toml 中的requires-python 3.10完全一致同文件的分类器classifiers进一步列出了 SDK 支持并做过 CI 验证的 Python 版本3.10、3.11、3.12、3.13 与 3.14见 pyproject.toml。官方文档指出这些文档所描述的是v2 稳定版本线。v2 是一次包含破坏性变更的主版本升级因此如果你已经使用 v1如FastMCP时代的代码安装后应参照仓库中的 迁移指南 逐项处理变更如果你的软件包以mcp为依赖但尚未准备好迁移应在依赖声明中加上2的上限例如mcp1.28,2避免无约束的解析把环境带到 2.x 主线。安装命令uv 与 pip 两种方式官方文档提供了两条等价的安装命令。二者安装的是完全相同的发行包区别只在于你使用的包管理器# 使用 uv推荐解析更快、锁文件体验更一致 uv add mcp[cli] # 使用 pip pip install mcp[cli]两条命令都带上了[cli]可选依赖标记。如文档所述mcp[cli]会额外引入typer中看到[project.optional-dependencies] rich [rich13.9.4] cli [typer0.16.0, python-dotenv1.0.0]mcp命令本身由[project.scripts]一节注册见 pyproject.toml[project.scripts] mcp mcp.cli:app [cli]也就是说mcp可执行文件指向 src/mcp/cli/cli.py 中定义的 Typer 应用app并且只在安装cliextra 时才可用——这解释了为什么开发期强烈建议安装mcp[cli]而生产部署的服务器进程如果不需要这些工具可以不装。为什么不建议装裸mcp文档特别强调cliextra 面向开发期mcp dev、mcp run、mcp install三个子命令部署中的服务器可能并不需要。装裸mcp并不会少什么核心能力——SDK 本身不依赖 typer/dotenv只是少了命令行辅助工具。实际取舍建议本地开发、调试、接入 Inspector 时安装mcp[cli]仅作为库被其他程序 import、或打包进容器镜像运行服务器时安装裸mcp可选加mcp[rich]改善日志观感。安装后会得到什么核心依赖逐项解析官方文档用一个独立的 What gets installed 小节专门解释了每个依赖的用途。以下是完整梳理并补充了仓库 pyproject.toml 与 uv.lock 中可验证的版本约束信息。mcp-types协议类型独立发行包角色所有协议类型请求、结果、内容块被独立成一个名为mcp-types的发行包与 SDK 版本锁步发布lockstep。它只有pydantic和typing-extensions两个运行时依赖因此纯做协议反序列化的轻量客户端可以只装它而不引入整套服务器/传输栈。对使用者的影响绝大多数代码通过mcp.types别名访问这些类型——本仓库 src/mcp/init.py 正是从mcp_types导入全部类型后重新导出并绑定mcp.types子模块以兼容 v1 的from .types import ...用法。仓库中from mcp.types import ...的写法随处可见。只有当你所在的项目单独依赖mcp-types而不安装 SDK时才需要直接import mcp_types。版本约束方面SDK 将mcp-types精确固定为{{ version }}即与 SDK 自身版本号完全一致见 pyproject.toml。从迁移指南可知这是 v2 新增的硬依赖且不要把mcp-types与mcp分开独立固定版本否则会破坏锁步关系。类型包源码位于 src/mcp-types/mcp_types。anyio异步运行时抽象层角色整个 SDK 都基于 anyio 编写因此同一份代码既可以在asyncio上运行也可以在trio上运行。这意味着你不需要关心底层事件循环的选择——anyio 会处理差异。版本约束anyio4.9Python 3.14/anyio4.10Python 3.14见 pyproject.toml。仓库测试配置pyproject.toml 的-p anyio也表明测试套件本身就运行在 anyio 的 pytest 插件之上开发依赖中还包含triopyproject.toml用于验证 Trio 后端。pydantic类型模型与校验引擎角色mcp.types中每个模型都建立在 pydantic 之上同时承担所有 schema 生成与校验。从 v2 开始协议字段统一为 snake_case 的 Python 属性线上 JSON 通过 alias 仍为 camelCase这一点在 迁移指南 中有详细说明。版本约束pydantic2.12.0见 pyproject.toml。httpx2客户端 HTTP 传输角色Streamable HTTP 与 SSE客户端传输背后的 HTTP 客户端内置 Server-Sent Events 支持因此不再需要单独的httpx-sse。v2 用httpx2替换了 v1 的httpxhttpx-sse组合httpx2是httpx的下一代分支API 兼容、Client/AsyncClient可作替换式升级。版本约束httpx22.5.0见 pyproject.toml。迁移指南还提醒except httpx.ConnectError之类的旧异常处理块会静默失效因为 SDK 现在抛的是httpx2异常需要一并审计。starlette、uvicorn、sse-starlette、python-multipartHTTP 服务器传输栈角色这四者共同支撑 HTTP服务器端传输starletteASGI 应用框架承载路由、ASGI 生命周期uvicornASGI 服务器负责真正绑定端口、接收连接sse-starletteSSE 响应的服务端实现python-multipartmultipart 表单解析用于 OAuth 等场景。版本约束starlette0.27Python 3.14/0.48.0Python 3.14python-multipart0.0.9sse-starlette3.0.0uvicorn0.31.1且sys_platform ! emscripten见 pyproject.toml。迁移指南特别指出 sse-starlette 在 v2 跨了两个大版本1.6 → 3.0如果你的代码直接 importsse_starlette需要同时消化它自身的破坏性变更。jsonschema结构化输出校验角色对工具tool声明的结构化输出structured output按其输出 schema 做校验。仓库中structured_output相关的文档示例与测试如 docs_src/structured_output就是这一能力的直接使用者。版本约束jsonschema4.20.0见 pyproject.toml。pyjwt[crypto]OAuth 令牌处理角色授权authorization流程中的 OAuth token 处理。SDK 的 OAuth 相关实现位于 src/mcp/shared/oauth含OAuthClientProvider、ClientCredentialsOAuthProvider等提供者仓库内还有完整的 OAuth 文档与示例可参考docs/client/oauth-clients.md、docs/run/authorization.md。版本约束pyjwt[crypto]2.10.1见 pyproject.toml。opentelemetry-api零成本的链路追踪基础角色只引入轻量级 API不携带 SDK 与导出器。也就是说只要你自己不安装 OpenTelemetry SDK/exporterSDK 内置的追踪中间件几乎零开销一旦你补装实现就能获得开箱即用的追踪能力。相关的 OpenTelemetry 集成文档见 docs/run/opentelemetry.md。版本约束opentelemetry-api1.28.0见 pyproject.toml。这是 v2 新增的硬依赖——迁移指南解释其原因是每个出站请求现在都携带用于 trace 传播的_meta信封。typing-extensions与typing-inspectionPython 3.10 上的现代类型特性角色为 Python 3.10 补齐较新版本才有的类型系统能力保证 SDK 的高级类型标注在 3.10 上可用。二者分别要求4.13.0与0.4.1见 pyproject.toml。仓库在 pyproject.toml 中以typeCheckingMode strict启用 pyright 严格模式说明 SDK 对类型正确性要求很高这两个依赖正是类型层的基础。pywin32仅 Windows 的 stdio 子进程管理角色仅在 Windows 平台生效用于stdio传输的子进程管理。SDK 中平台相关逻辑可以在 src/mcp/os含posix与win32两个子目录看到。版本约束pywin32311; sys_platform win32见 pyproject.toml条件标记保证非 Windows 平台根本不会拉取它。可选扩展cli与rich官方文档给出两个可选扩展仓库 pyproject.toml 提供了精确版本Extra额外依赖用途mcp[cli]typer0.16.0、python-dotenv1.0.0提供mcp命令行工具mcp dev、mcp run、mcp install开发期建议安装部署服务器可省略mcp[rich]rich13.9.4更美观的服务器日志输出两个 extra 可以叠加使用例如开发环境pip install mcp[cli,rich]。安装后的验证mcp命令与开发工作流安装mcp[cli]后验证是否成功的最直接方式是查看版本对应 src/mcp/cli/cli.py 中的version子命令mcp version # 输出形如MCP version 2.x.y三个核心开发子命令的行为可以从 src/mcp/cli/cli.py 源码中得到印证mcp dev server.py见 cli.py导入你的服务器文件通过npx modelcontextprotocol/inspector拉起 MCP Inspector 图形化调试界面。源码会先尝试用mcp、server、app三个约定变量名在模块里寻找服务器对象找不到则要求你用文件:对象语法显式指定。它还会合并服务器对象声明的dependencies通过--with传给 uv。mcp run server.py见 cli.py直接运行服务器支持--transport指定stdio、sse或streamable-http命令要求依赖已经就绪依赖管理交给mcp dev或mcp install。mcp install server.py见 cli.py把服务器注册进 Claude 桌面应用--name自定义名称、--env-var传KEYVALUE环境变量、--env-file从.env文件加载变量。配置路径按平台解析的逻辑在 src/mcp/cli/claude.pyWindowsAppData\Roaming\Claude、macOSLibrary/Application Support/Claude、Linux$XDG_CONFIG_HOME或~/.config下的Claude。值得一提的实现细节mcp dev与mcp install会用uv run --with mcp已安装版本把服务器跑在一个全新的临时环境里——这个 pin 行为在 src/mcp/cli/claude.py 的mcp_requirement()中实现保证临时环境解析到与你本机完全一致的 SDK 版本预发布版本与源码构建则回退到不 pin 的形式。这正是为什么官方文档推荐用mcp dev/mcp install而不是mcp run来处理依赖问题。从 v1 迁移到 v2 的注意事项官方文档在安装页用显著提示标注了 v1 → v2 的迁移风险。安装到 v2 后你最可能遇到的几个变化详见 迁移指南FastMCP更名为MCPServer导入路径mcp.server.fastmcp→mcp.server.mcpserver协议字段从 camelCase 改为 snake_case如inputSchema→input_schema线上 JSON 不变httpx/httpx-sse被httpx2取代涉及异常处理与类型对象时需要同步替换mcp.types迁移到独立的mcp-types发行包mcp.types仍是永久别名客户端Client默认modeauto同步 handler 在 worker 线程执行等行为变化。如果你的软件包依赖mcp但未完成迁移保持mcp1.28,2的上限约束即可留在 1.x 主线v1.x 维护线仍接收关键缺陷修复与安全补丁。下一步安装只是开始。官方快速上手路径建议按顺序阅读构建你的第一个服务器docs/get-started/first-steps.md连接到真实宿主hostdocs/get-started/real-host.md用内存客户端测试服务器docs/get-started/testing.md。这些页面的每个代码块都是仓库 docs_src 中完整可运行的文件并被 SDK 测试套件通过内存客户端Client(mcp)无需子进程与端口持续验证因此文档中的代码与真实运行结果始终一致。若你在开发期需要验证依赖解析结果可以直接查阅仓库根目录的 uv.lock 查看 SDK 各依赖的实际锁定版本。赞分享人工智能MCP 服务MCP Clients【免费下载链接】python-sdkThe official Python SDK for Model Context Protocol servers and clients项目地址https://gitcode.com/gh_mirrors/pythonsd/python-sdk点击查看免费下载相关推荐MCP Python SDK 安装指南v2 稳定版的完整安装、依赖解析与 CLI 工具链MCP Python SDK 安装指南v2 稳定版的完整安装、依赖解析与 CLI 工具链 导读 本文围绕 Model Context ProtocolMCP人工智能MCP 服务MCP ClientsMCP Python SDK 快速上手指南从安装到测试的完整入门路径MCP Python SDK 快速上手指南从安装到测试的完整入门路径 本指南对应官方 Python SDK mcp 包文档的 Get started 入门人工智能MCP 服务MCP ClientsESLint no-labels 规则完全指南彻底禁用 JavaScript 标签语句ESLint no labels 规则完全指南彻底禁用 JavaScript 标签语句 本文是 ESLint 内置规则 no labels 的深度技术指南。该人工智能MCP 服务MCP Clients上一篇TRT_Pose基于NVIDIA AI IoT的实时姿态估计开源项目下一篇nfstream流数据分析框架实战指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考