modelcontextprotocol/python-sdk
GitHub: modelcontextprotocol/python-sdk
MCP 的官方 Python SDK,帮助开发者以标准化方式向 LLM 应用暴露数据和工具能力。
Stars: 23813 | Forks: 3727
# MCP Python SDK
。**
其中包含[入门指南](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) 文件。
Model Context Protocol (MCP) 的 Python 实现
[][pypi-url]
[][mit-url]
[][python-url]
[][docs-url]
[][protocol-url]
[][spec-url]
## 文档
**文档位于 标签:AI, LLM, MCP, Python SDK, SOC Prime, Unmanaged PE, 开发工具, 自动化代码审查, 计算机取证, 逆向工具