使用说明

项目简介

gomcptest 是一个 Model Context Protocol (MCP) 的概念验证项目,旨在演示如何使用自定义主机实现 MCP 协议。该项目主要包含一个模拟 OpenAI API 的主机 ('openaiserver') 和一组 MCP 兼容的工具 ('tools'),用于展示如何构建一个能够与 MCP 服务器交互并提供上下文信息的 LLM 应用后端。

主要功能点

  • OpenAI 兼容性: API 设计兼容 OpenAI v1 chat completion 格式,方便现有 LLM 应用迁移。
  • Google Gemini 集成: 使用 VertexAI API 集成 Google Gemini 模型,支持强大的语言模型能力。
  • 流式响应: 支持服务器端流式响应,提升用户体验。
  • 函数调用 (工具执行): 允许 Gemini 模型调用外部工具 (通过 MCP 服务器),并将工具执行结果融入到聊天响应中。
  • MCP 服务器交互演示: 展示了主机如何与假想的 MCP 服务器 (即 'tools' 目录下的工具) 进行交互,执行工具并获取结果。
  • 单会话模式: 应用采用单会话模式,新的对话不会触发新的会话。
  • 提供多种 MCP 工具: 包含 Bash 命令执行、文件编辑、文件查找、内容查看等多种实用工具,扩展 LLM 的能力边界。

安装步骤

  1. 安装 Go 环境: 确保已安装 Go 语言环境 (Go >= 1.21) 并配置好 Go Modules。
  2. 克隆仓库: 将 GitHub 仓库 'https://github.com/owulveryck/gomcptest' 克隆到本地。
    git clone https://github.com/owulveryck/gomcptest
    cd gomcptest
  3. 配置环境变量:
    • 进入 'host/openaiserver' 目录:'cd host/openaiserver'
    • 设置必要的环境变量,例如:
      export IMAGE_DIR=/tmp/images  # 图片存储目录,必须存在
      export GCP_PROJECT=your-gcp-project-id # 你的 GCP 项目 ID
      请根据 README.md 中 "Configuration" 章节的说明,配置 'GCP_PROJECT' (必须), 'IMAGE_DIR' (必须) 以及其他可选环境变量,例如 'PORT', 'LOG_LEVEL' 等。你需要拥有 Google Cloud Platform 账号和 Vertex AI API 的访问权限。
  4. 运行服务器: 在 'host/openaiserver' 目录下,执行以下命令启动 'openaiserver' 主机:
    go run .
    或者
    go run main.go
    服务器默认监听 8080 端口。

服务器配置 (MCP 客户端配置)

要让 MCP 客户端 (例如实现了 MCP 协议的 LLM 应用) 与 gomcptest 提供的 MCP 工具 (例如 Bash 工具) 建立连接,你需要配置客户端连接到 Bash 工具的 MCP 服务器。

以下是一个 MCP 客户端的 server 配置示例 (JSON 格式),用于连接到 gomcptest 的 Bash 工具

{
  "servers": [
    {
      "name": "BashTool",  // 自定义服务器名称,用于在客户端中标识
      "command": "/path/to/gomcptest/tools/Bash/bin/Bash", // Bash 工具的可执行文件路径 (需要先编译或从 Release 下载)
      "args": [],  // 启动参数,Bash 工具通常无需额外参数
      "description": "Bash Tool 提供执行 shell 命令的能力" // 服务器描述,可选
    }
  ]
}

配置说明:

  • '"name"': 服务器名称,客户端自定义,用于在客户端应用中引用和管理不同的 MCP 服务器连接。
  • '"command"': MCP 服务器的启动命令。对于 Bash 工具,你需要指定 'tools/Bash/bin/Bash' 可执行文件的绝对路径。请注意,你需要先编译 Bash 工具或者从 Release 页面下载预编译版本,并替换 '/path/to/gomcptest/tools/Bash/bin/Bash' 为实际路径。 编译 Bash 工具的步骤可以参考 README.md 中 "Tools" 章节的 "Build from Source" 部分。
  • '"args"': 启动参数列表。Bash 工具在本例中不需要额外的启动参数,因此为空数组 '[]'。 某些 MCP 服务器可能需要特定的启动参数,请参考对应工具的文档或仓库说明。
  • '"description"': 服务器描述,可选字段,用于在客户端界面或配置中提供服务器的简单描述,方便用户理解其功能。

请注意:

  • 上述配置示例是连接 Bash 工具 的 MCP 服务器配置。如果你想使用 'Edit', 'GlobTool', 'GrepTool', 'LS', 'Replace', 'View', 'duckdbserver' 等其他工具,你需要分别配置 对应的 server 节点,并修改 '"command"' 字段指向对应工具的可执行文件路径。
  • '/path/to/gomcptest/tools/Bash/bin/Bash' 需要替换为 Bash 工具实际的二进制文件路径。 你需要根据你的 gomcptest 仓库的克隆位置以及工具编译或下载后的实际路径进行修改。

基本使用方法

  1. 启动 'openaiserver' 主机 (HTTP 服务器): 按照 "安装步骤" 中的说明启动 'openaiserver'。
  2. 配置 MCP 客户端: 在你的 MCP 客户端应用中,配置连接到 gomcptest 提供的 MCP 工具服务器 (例如 Bash 工具),使用上面提供的 JSON 配置示例。
  3. 通过 OpenAI 兼容 API 与 'openaiserver' 交互: 你的 LLM 应用可以像调用 OpenAI API 一样,向 'openaiserver' 的 HTTP 服务地址 (默认为 'http://localhost:8080') 发送请求,进行聊天交互。'openaiserver' 会根据用户的指令,调用配置的 MCP 工具 (例如 Bash 工具) 来执行相应的操作,并将结果返回给 LLM 应用。
  4. 体验工具调用: 在聊天过程中,你可以指示 LLM 调用已注册的 MCP 工具,例如让 LLM 使用 Bash 工具执行系统命令,使用 Edit 工具编辑文件,使用 View 工具查看文件内容等,体验 MCP 工具与 LLM 的协同工作。

示例对话 (假设使用 Bash 工具):

用户输入: "请列出当前目录下的文件"

LLM 应用 (MCP 客户端) 发送请求给 'openaiserver' (HTTP 服务器)。'openaiserver' 解析用户意图,判断需要调用 Bash 工具。

'openaiserver' (MCP 客户端) 通过 MCP 协议向 Bash 工具 (MCP 服务器) 发送工具调用请求 (JSON-RPC)。

Bash 工具 (MCP 服务器) 执行 'ls' 命令,并将结果通过 MCP 协议返回给 'openaiserver' (JSON-RPC)。

'openaiserver' (HTTP 服务器) 将 Bash 工具的执行结果整合到 Gemini 模型的回复中,并将最终回复返回给 LLM 应用 (MCP 客户端)。

LLM 应用 (MCP 客户端) 将最终回复呈现给用户,用户看到类似 "当前目录下的文件有: file1.txt, file2.txt, dir1, dir2..." 的结果。

信息

分类

AI与计算