项目简介
gomcptest 是一个 Model Context Protocol (MCP) 的概念验证 (POC) 项目,旨在演示如何使用自定义构建的 host 实现 MCP 协议,以便于测试 Agentic 系统。该项目从零开始编写代码,力求清晰地展示底层机制。
核心目标 是通过 MCP 协议轻松测试 Agentic 系统,例如:
- dispatch_agent:专门用于扫描代码库以查找安全漏洞。
- 代码审查 Agent:分析 Pull Request 以发现潜在问题。
- 数据分析 Agent:处理和可视化复杂数据集。
- 自动化文档 Agent:从代码生成全面的文档。
主要功能点
- OpenAI 兼容性: API 设计兼容 OpenAI v1 chat completion 格式,方便现有 OpenAI 客户端的集成。
- Google Gemini 集成: 利用 VertexAI API 与 Google Gemini 模型交互,提供强大的语言模型能力。
- 流式响应: 支持服务器端流式响应,提升用户体验。
- 函数调用: 允许 Gemini 调用外部函数(本项目中为 MCP 工具),并将结果融入聊天响应,扩展 LLM 功能。
- MCP 服务器交互: 演示与假设的 MCP 服务器(即本项目自身)交互,实现工具执行。
- 资源管理: 通过文件系统提供资源访问能力,工具可以操作本地文件。
- 工具注册与执行: 内置多种 MCP 兼容工具 (Bash, Edit, GlobTool, GrepTool, LS, Replace, View),允许 LLM 调用外部功能。
- Prompt 模板: 通过代码结构和工具描述定义 Prompt 模板,虽然没有明确的 Prompt 模板文件,但工具的描述和使用方式定义了与 LLM 交互的模式。
- Stdio 传输协议: 通过标准输入输出 (Stdio) 进行 JSON-RPC 通信。
安装步骤
- 安装 Go: 确保已安装 Go 1.21 或更高版本。
- 安装 mcp-go 库: 运行以下命令获取 'mcp-go' 库:
go get github.com/mark3labs/mcp-go - 获取仓库代码: 克隆 'gomcptest' 仓库到本地。
git clone https://github.com/owulveryck/gomcptest.git cd gomcptest - 构建工具: 在仓库根目录下,使用 'make all' 命令构建所有工具。
或者,可以单独构建特定工具,例如 'make Bash'。make all - 配置环境变量: 复制 'bin/.envrc' 文件中的内容,并根据您的 GCP 项目配置环境变量,例如:
请确保 '/tmp/images' 目录存在或修改为您的镜像存储目录。export GCP_PROJECT=your-project-id export GCP_REGION=your-region export GEMINI_MODELS=gemini-2.0-flash export IMAGEN_MODELS=imagen-3.0-generate-002 export IMAGE_DIR=/tmp/images
服务器配置
MCP 客户端需要配置 MCP 服务器的启动命令 (command) 及其参数 (args) 才能与其建立连接。对于 'gomcptest' 仓库,您可以配置以下 server:
{ "servers": [ { "server_name": "BashTool", "command": "./bin/Bash", "args": [] }, { "server_name": "EditTool", "command": "./bin/Edit", "args": [] }, { "server_name": "GlobTool", "command": "./bin/GlobTool", "args": [] }, { "server_name": "GrepTool", "command": "./bin/GrepTool", "args": [] }, { "server_name": "LSTool", "command": "./bin/LS", "args": [] }, { "server_name": "ReplaceTool", "command": "./bin/Replace", "args": [] }, { "server_name": "ViewTool", "command": "./bin/View", "args": [] }, { "server_name": "DispatchAgent", "command": "./bin/dispatch_agent", "args": [ "-glob-path", "./bin/GlobTool", "-grep-path", "./bin/GrepTool", "-ls-path", "./bin/LS", "-view-path", "./bin/View" ] } ] }
参数注释:
- server_name: 服务器的名称,用于客户端识别和调用。
- command: MCP 服务器可执行文件的路径。 请根据您的实际路径进行调整,例如使用绝对路径。
- args: 传递给 MCP 服务器的命令行参数,根据不同的工具,参数可能不同,例如 'dispatch_agent' 需要指定其他工具的路径。
基本使用方法
- 运行 OpenAI 兼容服务器: 导航到 'host/openaiserver' 目录,设置环境变量 (例如 'export IMAGE_DIR=/tmp/images','export GCP_PROJECT=your-gcp-project-id'),然后运行服务器:
服务器默认监听 8080 端口。cd host/openaiserver go run . - 使用 CLI 客户端测试: 在 'bin' 目录下,可以使用 'cliGCP' 客户端进行测试,指定要使用的 MCP 服务器工具:
该命令会启动一个类似 Claude Code 的 CLI 工具,连接到本地构建的 MCP 服务器,并允许您通过自然语言指令调用各种工具。./cliGCP -mcpservers "./GlobTool;./GrepTool;./LS;./View;./dispatch_agent -glob-path .GlobTool -grep-path ./GrepTool -ls-path ./LS -view-path ./View;./Bash;./Replace" - 通过 OpenAI 客户端访问: 由于 'openaiserver' 兼容 OpenAI API,您可以使用任何 OpenAI 客户端(例如 'openai' Python 库)来访问该服务器,并利用其提供的工具和 Gemini 模型能力。 客户端需要配置连接到 'openaiserver' 监听的地址 (默认为 'http://localhost:8080')。
安全警告: 请注意,'gomcptest' 提供的工具(特别是 'Bash' 和 'Edit' 等)具有执行命令和修改文件的能力。 建议在受控环境(如 chroot 或容器)中使用,以避免潜在的安全风险。
信息
分类
AI与计算