suspicious-cow
服务介绍
Model Context Protocol (MCP) Python 实现
该项目根据 Anthropic MCP 规范实现了 Model Context Protocol (MCP) 的服务器和客户端的 Python 版本。它通过一个简单且交互式的示例展示了 MCP 协议的关键模式。
什么是 MCP?
Model Context Protocol (MCP) 是基于 JSON-RPC 2.0 构建的一个开放标准,用于将 AI 模型连接到外部数据源和工具。它定义了一个客户端-服务器架构,在该架构中,AI 应用程序与一个或多个 MCP 服务器通信,每个服务器都暴露了如下功能:
- 工具:执行操作的可执行函数
- 资源:提供信息的数据源
- 提示:预定义的模板或工作流
MCP 标准化了这些功能的发现和调用方式,充当“AI 的 USB-C”,允许模型以结构化的方式与外部系统交互。
项目结构
server/:MCP 服务器实现server.py:处理 MCP 请求并提供示例工具/资源的 WebSocket 服务器
client/:MCP 客户端实现client.py:演示客户端,连接到服务器并展示所有 MCP 功能
展示的功能
此实现展示了核心的 MCP 协议流程:
- 能力协商:通过
initialize进行客户端-服务器握手 - 能力发现:列出可用的工具和资源
- 工具调用:使用参数调用
add_numbers工具 - 资源访问:从资源中读取文本内容
设置
-
创建虚拟环境:
bash
python3 -m venv .venv
source .venv/bin/activate -
安装依赖项:
bash
pip install -r requirements.txt
使用方法
-
启动 MCP 服务器(在一个终端中):
bash
python server/server.py -
运行 MCP 客户端(在另一个终端中):
bash
python client/client.py
客户端将连接到服务器,执行 MCP 握手,发现功能,并演示调用工具和访问资源,同时以格式化的输出显示结果。
工作原理
MCP 服务器
服务器:
- 接受 WebSocket 连接
- 响应遵循 MCP 规范的 JSON-RPC 请求
- 提供一个示例工具 (
add_numbers) - 提供一个示例资源 (
example.txt) - 支持 MCP 握手和功能发现
MCP 客户端
客户端:
- 通过 WebSocket 连接到服务器
- 执行 MCP 握手
- 发现可用的工具和资源
- 演示调用工具和读取资源
- 以格式化的方式呈现结果
协议细节
MCP 实现了以下关键方法:
| 方法 | 描述 |
|---|---|
initialize |
用于建立功能的手势 |
tools/list |
列出可用工具 |
tools/call |
使用参数调用工具 |
resources/list |
列出可用资源 |
resources/read |
读取资源内容 |
prompts/list |
列出可用提示 |
扩展项目
你可以通过以下方式扩展此实现:
- 添加更多具有不同功能的工具
- 添加每次读取时都会变化的动态资源
- 实现用于引导交互的提示模板
- 创建更多交互式的客户端应用程序