使用说明
项目简介
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 的能力边界。
安装步骤
- 安装 Go 环境: 确保已安装 Go 语言环境 (Go >= 1.21) 并配置好 Go Modules。
- 克隆仓库: 将 GitHub 仓库 'https://github.com/owulveryck/gomcptest' 克隆到本地。
git clone https://github.com/owulveryck/gomcptest cd gomcptest - 配置环境变量:
- 进入 'host/openaiserver' 目录:'cd host/openaiserver'
- 设置必要的环境变量,例如:
请根据 README.md 中 "Configuration" 章节的说明,配置 'GCP_PROJECT' (必须), 'IMAGE_DIR' (必须) 以及其他可选环境变量,例如 'PORT', 'LOG_LEVEL' 等。你需要拥有 Google Cloud Platform 账号和 Vertex AI API 的访问权限。export IMAGE_DIR=/tmp/images # 图片存储目录,必须存在 export GCP_PROJECT=your-gcp-project-id # 你的 GCP 项目 ID
- 运行服务器: 在 'host/openaiserver' 目录下,执行以下命令启动 'openaiserver' 主机:
或者go run .
服务器默认监听 8080 端口。go run main.go
服务器配置 (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 仓库的克隆位置以及工具编译或下载后的实际路径进行修改。
基本使用方法
- 启动 'openaiserver' 主机 (HTTP 服务器): 按照 "安装步骤" 中的说明启动 'openaiserver'。
- 配置 MCP 客户端: 在你的 MCP 客户端应用中,配置连接到 gomcptest 提供的 MCP 工具服务器 (例如 Bash 工具),使用上面提供的 JSON 配置示例。
- 通过 OpenAI 兼容 API 与 'openaiserver' 交互: 你的 LLM 应用可以像调用 OpenAI API 一样,向 'openaiserver' 的 HTTP 服务地址 (默认为 'http://localhost:8080') 发送请求,进行聊天交互。'openaiserver' 会根据用户的指令,调用配置的 MCP 工具 (例如 Bash 工具) 来执行相应的操作,并将结果返回给 LLM 应用。
- 体验工具调用: 在聊天过程中,你可以指示 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与计算