代码审查工具

一个用于集成AI助手(如Claude)与GitLab合并请求的MCP服务器,支持代码变更审查、版本比较和评审管理。

  • by mehmetakinn
  • Python
  • 本地部署
  • 45 星标
  • 更新于
在 GitHub 查看 mehmetakinn/gitlab-mcp-code-review

使用说明

GitLab MCP代码审查

这个项目是从 cayiteromer/gerrit代码审查mcp 并适应GitLab集成。

一个MCP(模型上下文协议)服务器,用于将Claude等人工智能助手与GitLab的合并请求集成在一起。这使得人工智能助手可以通过GitLab API直接查看代码更改。

特性

  • 完成合并请求分析:获取合并请求的完整详细信息,包括差异、提交和注释
  • 文件特定差异:分析合并请求中特定文件的更改
  • 版本比较:比较不同的分支、标签或提交
  • 评审管理:添加评论、批准或取消批准合并请求
  • 项目概述:获取项目中所有合并请求的列表

安装

先决条件

快速开始

  1. 克隆此存储库:
git clone https://github.com/mehmetakinn/gitlab-mcp-code-review.git
cd gitlab-mcp-code-review
  1. 创建并激活虚拟环境:
python -m venv .venv
source .venv/bin/activate  # On Windows: .venv\Scripts\activate
  1. 安装依赖项:
pip install -r requirements.txt
  1. 创建一个 .env 包含GitLab配置的文件(请参阅 .env.example 对于所有选项):
# Required
GITLAB_TOKEN=your_personal_access_token_here

# Optional settings
GITLAB_HOST=gitlab.com
GITLAB_API_VERSION=v4
LOG_LEVEL=INFO

配置选项

以下环境变量可以在您的 .env 文件:

变量 必填 默认 描述
GITLAB_TOKEN 是 - 您的GITLAB个人访问令牌
GITLAB_HOST 否 GITLAB.com GITLAB实例主机名
GITLAB_API_VERSION 否 v4 要使用的GITLAB API版本
LOGLEVEL 否 信息 记录级别(调试、信息、警告、错误、严重)
调试 否 错误 启用调试模式
REQUEST_TIMEOUT 否 30 API请求超时(以秒为单位)
MAX_RETRIES 否 3 失败请求的最大重试次数

游标IDE集成

要将此MCP与Cursor IDE一起使用,请将此配置添加到您的 ~/.cursor/mcp.json 文件:

{
  "mcpServers": {
    "gitlab-mcp-code-review": {
      "command": "/path/to/your/gitlab-mcp-code-review/.venv/bin/python",
      "args": [
        "/path/to/your/gitlab-mcp-code-review/server.py",
        "--transport",
        "stdio"
      ],
      "cwd": "/path/to/your/gitlab-mcp-code-review",
      "env": {
        "PYTHONPATH": "/path/to/your/gitlab-mcp-code-review",
        "VIRTUAL_ENV": "/path/to/your/gitlab-mcp-code-review/.venv",
        "PATH": "/path/to/your/gitlab-mcp-code-review/.venv/bin:/usr/local/bin:/usr/bin:/bin"
      },
      "stdio": true
    }
  }
}

替换 /path/to/your/gitlab-mcp-code-review 使用克隆存储库的实际路径。

Claude桌面应用程序集成

要将此MCP与Claude桌面应用程序一起使用:

  1. 打开克劳德桌面应用程序
  2. 转到“设置”→ 高级→ MCP配置
  3. 添加以下配置:
{
  "mcpServers": {
    "gitlab-mcp-code-review": {
      "command": "/path/to/your/gitlab-mcp-code-review/.venv/bin/python",
      "args": [
        "/path/to/your/gitlab-mcp-code-review/server.py",
        "--transport",
        "stdio"
      ],
      "cwd": "/path/to/your/gitlab-mcp-code-review",
      "env": {
        "PYTHONPATH": "/path/to/your/gitlab-mcp-code-review",
        "VIRTUAL_ENV": "/path/to/your/gitlab-mcp-code-review/.venv",
        "PATH": "/path/to/your/gitlab-mcp-code-review/.venv/bin:/usr/local/bin:/usr/bin:/bin"
      },
      "stdio": true
    }
  }
}

替换 /path/to/your/gitlab-mcp-code-review 使用克隆存储库的实际路径。

可用工具

MCP服务器提供以下与GitLab交互的工具:

工具 说明
fetch_merge_request 获取合并请求的完整信息
fetch_merge_request_diff 获取特定合并请求的差异
fetch_commit_diff 获取特定提交的差异信息
compare_versions 比较不同的分支、标签或提交
add_merge_request_comment 向合并请求添加注释
approve_merge_request 批准合并请求
unapprove_merge_request 取消批准合并请求
get_project_merge_requests 获取项目的合并请求列表

使用示例

获取合并请求

# Get details of merge request #5 in project with ID 123
mr = fetch_merge_request("123", "5")

查看特定文件更改

# Get diff for a specific file in a merge request
file_diff = fetch_merge_request_diff("123", "5", "path/to/file.js")

比较分支机构

# Compare develop branch with master branch
diff = compare_versions("123", "develop", "master")

向合并请求添加注释

# Add a comment to a merge request
comment = add_merge_request_comment("123", "5", "This code looks good!")

批准合并请求

# Approve a merge request and set required approvals to 2
approval = approve_merge_request("123", "5", approvals_required=2)

故障排除

如果您遇到问题:

  1. 验证您的GitLab令牌是否具有适当的权限(api、read_api)
  2. 检查你的 .env 文件设置
  3. 确保MCP配置路径正确
  4. 测试连接: curl -H "Private-Token: your-token" https://gitlab.com/api/v4/projects
  5. 在.env文件中设置LOGLEVEL=DEBUG,以获取更详细的日志记录

贡献

欢迎投稿!请随时提交拉取请求。

  1. 分叉存储库
  2. 创建功能分支(git checkout -b feature/amazing-feature)
  3. 提交您的更改(git commit -m 'Add some amazing feature')
  4. 推到分支(git push origin feature/amazing-feature)
  5. 打开拉取请求

请参阅 贡献.md 有关开发过程的更多详细信息,请参阅文件。

许可证

此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。