用途:该技能面向需要在 Python 中构建 MCP(Model Context Protocol)服务器或客户端、把 LLM 连接到外部数据与工具的开发者,基于官方 Python SDK(PyPI 包名 mcp)给出最佳实践。
安装与要求:推荐使用 uv,命令为 uv add "mcp[cli]",也可 pip install "mcp[cli]"。需要 Python ≥ 3.10;[cli] 额外依赖提供开发用 mcp 命令行工具。
三种原语:Resources 类似 GET 端点,用于把数据加载进 LLM 上下文,只读且应幂等;Tools 类似 POST 端点,执行有副作用的操作或调用外部 API;Prompts 为可复用交互模板,客户端可按名称调用。选择原则是无副作用的数据读取用 Resources,计算、写入或外部调用用 Tools,结构化指令模板用 Prompts。
主要能力:FastMCP 是高层 API,自动处理连接管理、消息路由与序列化,从类型注解生成 JSON Schema。工具可用 Pydantic BaseModel 返回结构化输出,也可用 TypedDict 或 dataclass;I/O 密集型工具建议用 async def。可为函数注入 ctx: Context 以记录日志、报告进度(ctx.report_progress)、读取其他资源(ctx.read_resource)、请求用户输入(ctx.elicit)。lifespan 模式用于初始化并共享数据库连接、HTTP 客户端等资源。工具中可直接抛出 Python 异常,MCP 会转为结构化错误;也可返回 CallToolResult 并用 isError=True 表示工具级失败而不中断模型推理。
使用方式:开发可用 uv run mcp dev server.py 启动并配合 MCP Inspector,还可用 --with 追加依赖;安装到 Claude Desktop 用 uv run mcp install server.py --name "My Server"。生产环境推荐 Streamable HTTP 且设置 stateless_http=True、json_response=True,可用 uvicorn server:mcp.streamable_http_app --host 0.0.0.0 --port 8000;本地可用 stdio。密钥/配置应通过环境变量传入而非硬编码。
限制:资料未提供性能基准、兼容客户端清单、完整认证与安全细节;更多高级模式与传输对比需参考仓库内的 references/server-patterns.md 与 references/transports-and-deployment.md。