项目简介

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 通信。

安装步骤

  1. 安装 Go: 确保已安装 Go 1.21 或更高版本。
  2. 安装 mcp-go 库: 运行以下命令获取 'mcp-go' 库:
    go get github.com/mark3labs/mcp-go
  3. 获取仓库代码: 克隆 'gomcptest' 仓库到本地。
    git clone https://github.com/owulveryck/gomcptest.git
    cd gomcptest
  4. 构建工具: 在仓库根目录下,使用 'make all' 命令构建所有工具。
    make all
    或者,可以单独构建特定工具,例如 'make Bash'。
  5. 配置环境变量: 复制 'bin/.envrc' 文件中的内容,并根据您的 GCP 项目配置环境变量,例如:
    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
    请确保 '/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' 需要指定其他工具的路径。

基本使用方法

  1. 运行 OpenAI 兼容服务器: 导航到 'host/openaiserver' 目录,设置环境变量 (例如 'export IMAGE_DIR=/tmp/images','export GCP_PROJECT=your-gcp-project-id'),然后运行服务器:
    cd host/openaiserver
    go run .
    服务器默认监听 8080 端口。
  2. 使用 CLI 客户端测试: 在 'bin' 目录下,可以使用 'cliGCP' 客户端进行测试,指定要使用的 MCP 服务器工具:
    ./cliGCP -mcpservers "./GlobTool;./GrepTool;./LS;./View;./dispatch_agent -glob-path .GlobTool -grep-path ./GrepTool -ls-path ./LS -view-path ./View;./Bash;./Replace"
    该命令会启动一个类似 Claude Code 的 CLI 工具,连接到本地构建的 MCP 服务器,并允许您通过自然语言指令调用各种工具。
  3. 通过 OpenAI 客户端访问: 由于 'openaiserver' 兼容 OpenAI API,您可以使用任何 OpenAI 客户端(例如 'openai' Python 库)来访问该服务器,并利用其提供的工具和 Gemini 模型能力。 客户端需要配置连接到 'openaiserver' 监听的地址 (默认为 'http://localhost:8080')。

安全警告: 请注意,'gomcptest' 提供的工具(特别是 'Bash' 和 'Edit' 等)具有执行命令和修改文件的能力。 建议在受控环境(如 chroot 或容器)中使用,以避免潜在的安全风险。

信息

分类

AI与计算