代码评审GitLab
该项目是一个MCP(模型上下文协议)服务器,用于将像Claude这样的AI助手与GitLab的合并请求集成。它允许AI助手通过GitLab API直接审查代码更改。功能包括完整的合并请求分析、特定文件差异、版本比较和审查管理。
服务介绍
GitLab MCP 代码审查
该项目是从 mehmetakinn/gitlab-mcp-code-review 分支而来,并针对 GitLab 集成进行了适配。
一个用于将 AI 助手(如 Claude)与 GitLab 的合并请求集成的 MCP(Model Context Protocol)服务器。这使得 AI 助手能够通过 GitLab API 直接审查代码变更。
特性
- 完整的合并请求分析:获取合并请求的完整详情,包括差异、提交和评论
- 特定文件的差异:分析合并请求中特定文件的变更
- 版本比较:比较不同的分支、标签或提交
- 审查管理:添加评论、批准或取消批准合并请求
- 项目概览:获取项目中的所有合并请求列表
安装
前提条件
- Python 3.10+
- 具有 API 范围权限(read_api, api)的 GitLab 个人访问令牌
- 用于 MCP 集成的 Cursor IDE 或 Claude 桌面应用程序
快速开始
- 克隆此仓库:
git clone https://github.com/SimonHu1993/gitlab-mcp-code-review.git
cd gitlab-mcp-code-review
- 创建并激活虚拟环境:
python -m venv .venv
# On Mac
source .venv/bin/activate
# On Windows:
source .venv\Scripts\activate
- 安装依赖项:
./.venv/bin/pip install -r requirements.txt
- 使用您的 GitLab 配置创建一个
.env文件(请参阅.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 版本 |
| LOG_LEVEL | 否 | INFO | 日志级别(DEBUG, INFO, WARNING, ERROR, CRITICAL) |
| DEBUG | 否 | false | 启用调试模式 |
| REQUEST_TIMEOUT | 否 | 30 | API 请求超时时间(秒) |
| MAX_RETRIES | 否 | 3 | 失败请求的最大重试次数 |
Cursor 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 桌面应用程序:
- 打开 Claude 桌面应用程序
- 转到设置 → 高级 → MCP 配置
- 添加以下配置:
{
"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 |
获取项目的合并请求列表 |
add_commit_comment |
向提交添加评论 |
search_projects |
获取项目信息 |
使用示例
获取合并请求
# 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)
故障排除
如果您遇到问题:
- 确认您的 GitLab 令牌具有适当的权限(api, read_api)2. 检查你的
.env文件设置 - 确保你的 MCP 配置路径正确
- 使用以下命令测试连接:
curl -H "Private-Token: your-token" https://gitlab.com/api/v4/projects - 在你的 .env 文件中设置 LOG_LEVEL=DEBUG 以获取更详细的日志
贡献
欢迎贡献!请随时提交 Pull Request。
- 叉取仓库
- 创建你的功能分支 (
git checkout -b feature/amazing-feature) - 提交你的更改 (
git commit -m 'Add some amazing feature') - 将更改推送到分支 (
git push origin feature/amazing-feature) - 打开一个 Pull Request
有关开发过程的更多详细信息,请参阅 CONTRIBUTING.md 文件。
许可证
本项目采用 MIT 许可证 - 详情请参阅 LICENSE 文件。