模型上下文协议实现

一个基于Python的模型上下文协议(MCP)服务器和客户端实现,用于连接AI模型与外部数据源和工具。

  • by suspicious-cow
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 suspicious-cow/mcp2

使用说明

模型上下文协议(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协议流程:

  1. 能力协商:客户端-服务器握手通过 initialize
  2. 能力发现:列出可用的工具和资源
  3. 工具调用:呼叫 add_numbers 带参数的工具
  4. 资源访问:从资源中读取文本内容

设置

  1. 创建虚拟环境:

    python3 -m venv .venv
    source .venv/bin/activate
    
  2. 安装依赖项:

    pip install -r requirements.txt
    

用法

  1. 启动MCP服务器(在一个终端中):

    python server/server.py
    
  2. 运行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 列出可用提示

扩展项目

您可以通过以下方式扩展此实现:

  • 添加更多具有不同功能的工具
  • 添加每次读取时都会发生变化的动态资源
  • 实施引导式交互的提示模板
  • 创建更多交互式客户端应用程序

参考文献