使用说明
模型上下文协议(MCP)Python实现
该项目在Python中实现了一个功能正常的模型上下文协议(MCP)服务器和客户端,遵循Anthropic MCP规范。它通过一个简单的交互式示例演示了MCP协议的关键模式。
什么是MCP?
模型上下文协议(MCP)是一个基于JSON-RPC 2.0的开放标准,用于将AI模型连接到外部数据源和工具。它定义了一个客户端-服务器架构,其中AI应用程序与一个或多个MCP服务器通信,每个服务器都公开了以下功能:
- 工具:执行操作的可执行函数
- 资源:提供信息的数据来源
- 鼓励:预定义模板或工作流
MCP规范了这些功能的发现和调用方式,充当“人工智能USB-C”,允许模型以结构化的方式与外部系统交互。
项目结构
server/:MCP服务器实现server.py:处理MCP请求并提供示例工具/资源的WebSocket服务器
client/:MCP客户端实现client.py:连接到服务器并练习所有MCP功能的演示客户端
演示的功能
此实现展示了核心MCP协议流程:
- 能力协商:客户端-服务器握手通过
initialize - 能力发现:列出可用的工具和资源
- 工具调用:呼叫
add_numbers带参数的工具 - 资源访问:从资源中读取文本内容
设置
-
创建虚拟环境:
python3 -m venv .venv source .venv/bin/activate -
安装依赖项:
pip install -r requirements.txt
用法
-
启动MCP服务器(在一个终端中):
python server/server.py -
运行MCP客户端(在另一个终端中):
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 |
列出可用提示 |
扩展项目
您可以通过以下方式扩展此实现:
- 添加更多具有不同功能的工具
- 添加每次读取时都会发生变化的动态资源
- 实施引导式交互的提示模板
- 创建更多交互式客户端应用程序