modelcontextprotocol/python-sdk

GitHub: modelcontextprotocol/python-sdk

MCP 的官方 Python SDK,帮助开发者以标准化方式向 LLM 应用暴露数据和工具能力。

Stars: 23813 | Forks: 3727

# MCP Python SDK
Model Context Protocol (MCP) 的 Python 实现 [![PyPI](https://img.shields.io/pypi/v/mcp.svg)][pypi-url] [![MIT licensed](https://img.shields.io/pypi/l/mcp.svg)][mit-url] [![Python Version](https://img.shields.io/pypi/pyversions/mcp.svg)][python-url] [![Documentation](https://img.shields.io/badge/docs-python--sdk-blue.svg)][docs-url] [![Protocol](https://img.shields.io/badge/protocol-modelcontextprotocol.io-blue.svg)][protocol-url] [![Specification](https://img.shields.io/badge/spec-spec.modelcontextprotocol.io-blue.svg)][spec-url]
## 文档 **文档位于 。** 其中包含[入门指南](https://py.sdk.modelcontextprotocol.io/get-started/)、[v2 的新特性](https://py.sdk.modelcontextprotocol.io/whats-new/)、[API 参考手册](https://py.sdk.modelcontextprotocol.io/api/mcp/)以及[迁移指南](https://py.sdk.modelcontextprotocol.io/migration/)。 ## 什么是 MCP? [Model Context Protocol](https://modelcontextprotocol.io) 允许你构建服务器,以安全、标准化的方式向 LLM 应用暴露数据和功能。可以将其想象为 Web API,但它是专为 LLM 交互而设计的。使用此 SDK,你可以: - **构建 MCP 服务器**,向任何 MCP host 暴露 tools、resources 和 prompts - **构建 MCP 客户端**,连接到任何 MCP 服务器 - 支持所有的标准 transport:stdio、Streamable HTTP 和 SSE ## 环境要求 Python 3.10+。 ## 安装说明 ``` uv add "mcp[cli]" # or: pip install "mcp[cli]" ``` `cli` 扩展在 SDK 之上添加了 `mcp` 命令行工具(`mcp dev`、`mcp run`、`mcp install`);如果你不需要它,请安装普通的 `mcp`。对于一次性的命令,`uv run --with "mcp[cli]" mcp ...` 可以在没有项目的情况下直接运行。 ## 15 行代码实现一个服务器 创建一个 `server.py`: ``` from mcp.server import MCPServer mcp = MCPServer("Demo") @mcp.tool() def add(a: int, b: int) -> int: """Add two numbers.""" return a + b @mcp.resource("greeting://{name}") def greeting(name: str) -> str: """Greet someone by name.""" return f"Hello, {name}!" ``` _完整示例:[docs_src/index/tutorial001.py](https://github.com/modelcontextprotocol/python-sdk/blob/main/docs_src/index/tutorial001.py)_ 这是一个完整的 MCP 服务器:包含一个 tool 和一个模板化 resource。在 [MCP Inspector](https://github.com/modelcontextprotocol/inspector) 中打开它: ``` uv run mcp dev server.py ``` 调用 `add` 并传入 `a=1`、`b=2`,你就会得到 `3`。 注意你**没有**写的东西:没有 JSON Schema(`a: int, b: int` _就是_ schema),没有请求解析,没有验证代码,没有协议处理。只有两个带类型提示的 Python 函数和一个 docstring。 [从这里开始入门](https://py.sdk.modelcontextprotocol.io/get-started/)。 ## 10 行代码实现一个客户端 同一个包就是一个完整的 MCP **客户端**。`Client` 可以连接到一个 URL、一个 stdio 子进程、一个自定义的 transport,或者(用于测试时)直接连接到内存中的 server 对象,而完全不需要 transport: ``` import asyncio from mcp import Client from server import mcp async def main() -> None: async with Client(mcp) as client: result = await client.call_tool("add", {"a": 1, "b": 2}) print(result.structured_content) # {'result': 3} asyncio.run(main()) ``` 将 `mcp` 换成 `"http://localhost:8000/mcp"`,完全相同的代码就可以与远程服务器进行通信。 ## 贡献指南 我们非常乐意支持各种经验水平的贡献者,也非常欢迎你参与这个项目。请查看[贡献指南](https://github.com/modelcontextprotocol/python-sdk/blob/main/CONTRIBUTING.md)开始参与。 ## License 该项目基于 MIT License 授权。详情请参阅 [LICENSE](https://github.com/modelcontextprotocol/python-sdk/blob/main/LICENSE) 文件。
标签:AI, LLM, MCP, Python SDK, SOC Prime, Unmanaged PE, 开发工具, 自动化代码审查, 计算机取证, 逆向工具