使用说明

项目简介

GitLab Review MCP Server 是一个 MCP(Model Context Protocol)服务器的扩展,旨在为 LLM(大型语言模型)应用提供与 GitLab 代码审查流程集成的能力。它通过 MCP 协议与 LLM 客户端通信,提供一系列工具,使 LLM 能够获取 GitLab 合并请求的信息,并自动化执行如评论等操作,从而辅助代码审查工作。

主要功能点

  • 获取合并请求信息: 允许 LLM 获取指定 GitLab 项目中合并请求的详细信息,包括标题、描述、源分支、目标分支等。
  • 获取合并请求最新版本: 允许 LLM 获取合并请求的最新版本信息,包括 commit SHA 等,用于跟踪代码变更历史。
  • 发表评论: 允许 LLM 在 GitLab 合并请求的讨论区发表评论,支持指定评论位置(基于代码行和文件)和评论内容,实现自动化代码审查反馈。

安装步骤

  1. 克隆仓库:
    git clone https://github.com/Photosynth-inc/gitlab_review.git
    cd gitlab_review
  2. 安装依赖: 确保已安装 Node.js 和 npm (或 yarn)。在项目根目录下运行:
    npm install

服务器配置

为了让 MCP 客户端能够连接并使用 GitLab Review MCP Server,需要在 MCP 客户端中配置服务器信息。以下是一个示例配置,请根据实际情况修改:

{
  "serverName": "gitlab-review-server",  // 服务器名称,可自定义
  "command": "node",                     // 启动服务器的命令,这里使用 node.js 运行时
  "args": ["index.js"],                  // 启动命令的参数,指向服务器入口文件 index.js
  "env": {                              // 环境变量配置
    "GITLAB_PERSONAL_ACCESS_TOKEN": "<YOUR_GITLAB_PERSONAL_ACCESS_TOKEN>", // 替换为你的 GitLab 个人访问令牌
    "GITLAB_API_URL": "https://gitlab.com/api/v4" // GitLab API URL,默认为官方地址,如有私有部署请修改
  }
}

配置参数说明:

  • 'serverName': MCP 服务器的名称,用于在客户端标识和管理连接。可以自定义。
  • 'command': 运行服务器端程序的命令。由于 'index.js' 是 Node.js 代码,这里使用 'node' 命令。
  • 'args': 传递给 'command' 的参数,指定要执行的服务器端入口文件 'index.js'。
  • 'env': 环境变量配置,用于服务器运行时读取必要的配置信息。
    • 'GITLAB_PERSONAL_ACCESS_TOKEN': 必须配置。你的 GitLab 个人访问令牌,用于服务器访问 GitLab API。请确保该令牌具有访问项目和发表评论的权限。
    • 'GITLAB_API_URL': 可选配置。GitLab API 的 URL。如果使用 GitLab 官方 SaaS 版本,则无需修改。如果使用私有部署的 GitLab,请修改为你的 GitLab API 地址。

注意: 请务必将 '<YOUR_GITLAB_PERSONAL_ACCESS_TOKEN>' 替换为你自己的 GitLab 个人访问令牌。令牌需要在 GitLab 上生成,并赋予 'api' 权限。

基本使用方法

  1. 启动 MCP 服务器: 在 MCP 客户端配置好服务器信息后,启动 MCP 客户端。客户端会根据配置连接并启动 GitLab Review MCP Server。服务器会在标准 I/O 上运行,并输出 "GitLab Review MCP Server running on stdio" 表示启动成功。

  2. 在 LLM 应用中调用工具: 在支持 MCP 协议的 LLM 应用中,你可以通过指定工具名称和参数来调用 GitLab Review MCP Server 提供的功能。

    • 获取合并请求信息 (get_merge_request):

      {
        "tool_name": "get_merge_request",
        "parameters": {
          "project_id": "<YOUR_PROJECT_ID>", // GitLab 项目 ID 或项目路径 (例如 "group/project")
          "merge_request_iid": 123          // 合并请求的 IID (内部ID)
        }
      }
    • 获取合并请求最新版本 (get_merge_request_latest_version):

      {
        "tool_name": "get_merge_request_latest_version",
        "parameters": {
          "project_id": "<YOUR_PROJECT_ID>", // GitLab 项目 ID 或项目路径
          "merge_request_iid": 123          // 合并请求的 IID
        }
      }
    • 发表评论 (post_discussion_comment):

      {
        "tool_name": "post_discussion_comment",
        "parameters": {
          "project_id": "<YOUR_PROJECT_ID>", // GitLab 项目 ID 或项目路径
          "merge_request_iid": 123,          // 合并请求的 IID
          "position": {
            "base_sha": "<BASE_COMMIT_SHA>",  // 基线 commit SHA
            "head_sha": "<HEAD_COMMIT_SHA>",  // 头部 commit SHA
            "start_sha": "<START_COMMIT_SHA>", // 开始 commit SHA
            "new_path": "path/to/file.js",   // 新文件路径
            "old_path": "path/to/file.js",   // 旧文件路径
            "new_line": 10,                 // 新文件行号 (可选)
            "old_line": null,                // 旧文件行号 (可选)
            "position_type": "text"         // 位置类型,固定为 "text"
          },
          "body": "这里是评论内容"           // 评论内容
        }
      }

    请根据实际需求,在 LLM 应用中构建和发送包含上述工具调用信息的请求。服务器会处理请求并返回结果。

信息

分类

开发者工具