使用说明
项目简介
GitLab Review MCP Server 是一个 MCP(Model Context Protocol)服务器的扩展,旨在为 LLM(大型语言模型)应用提供与 GitLab 代码审查流程集成的能力。它通过 MCP 协议与 LLM 客户端通信,提供一系列工具,使 LLM 能够获取 GitLab 合并请求的信息,并自动化执行如评论等操作,从而辅助代码审查工作。
主要功能点
- 获取合并请求信息: 允许 LLM 获取指定 GitLab 项目中合并请求的详细信息,包括标题、描述、源分支、目标分支等。
- 获取合并请求最新版本: 允许 LLM 获取合并请求的最新版本信息,包括 commit SHA 等,用于跟踪代码变更历史。
- 发表评论: 允许 LLM 在 GitLab 合并请求的讨论区发表评论,支持指定评论位置(基于代码行和文件)和评论内容,实现自动化代码审查反馈。
安装步骤
- 克隆仓库:
git clone https://github.com/Photosynth-inc/gitlab_review.git cd gitlab_review - 安装依赖:
确保已安装 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' 权限。
基本使用方法
-
启动 MCP 服务器: 在 MCP 客户端配置好服务器信息后,启动 MCP 客户端。客户端会根据配置连接并启动 GitLab Review MCP Server。服务器会在标准 I/O 上运行,并输出 "GitLab Review MCP Server running on stdio" 表示启动成功。
-
在 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 应用中构建和发送包含上述工具调用信息的请求。服务器会处理请求并返回结果。
-
信息
分类
开发者工具