一个基于 Model Context Protocol (MCP) 的 GitLab 服务器,支持 AI 自动生成 Merge Request 评论和其他 GitLab 操作。
- 自动生成评论:利用 AI 分析代码变更,自动生成有洞察力的 Merge Request 评论
- 多种审查角度:支持通用、安全、性能和代码风格四种审查模式
- 智能分析:自动检测代码模式、潜在问题和改进建议
-
post_mr_review_comment - 发布 AI 生成的审查评论
- 分析代码变更
- 生成全面的审查报告
- 支持不同的审查重点(通用/安全/性能/风格)
-
post_mr_comment - 发布自定义评论
- 向 MR 添加特定反馈或问题
-
get_mr_info - 获取 MR 详细信息
- 标题、描述、作者、状态等
-
get_mr_changes - 获取 MR 代码变更
- 查看修改的文件列表和 diff 信息
- Python 3.11 或更高版本
- GitLab 个人访问令牌
- 克隆仓库:
git clone <repository-url>
cd gitlab-mcp-server
- 安装依赖:
pip install -e .
或者安装开发依赖:
pip install -e ".[dev]"
创建 .env
文件或设置以下环境变量:
# GitLab 实例 URL(默认为 https://gitlab.com)
export GITLAB_URL="https://gitlab.com"
# GitLab 个人访问令牌(必需)
export GITLAB_TOKEN="your-gitlab-token-here"
- 登录 GitLab
- 访问 Settings → Access Tokens
- 创建新 token,需要以下权限:
api
- 访问 APIread_api
- 读取 API 数据write_repository
- 写入评论
- 复制生成的 token 并设置到
GITLAB_TOKEN
环境变量
gitlab-mcp-server
或直接运行:
python -m gitlab_mcp_server.server
服务器启动后,可以通过支持 MCP 的客户端(如 Claude Desktop)调用工具。
{
"tool": "post_mr_review_comment",
"arguments": {
"project_id": "123",
"merge_request_iid": 45,
"focus": "general"
}
}
{
"tool": "post_mr_comment",
"arguments": {
"project_id": "my-group/my-project",
"merge_request_iid": 45,
"comment": "LGTM! 🚀"
}
}
全面的代码审查,包括:
- 变更统计和文件分析
- 潜在问题识别
- 最佳实践建议
专注于安全问题:
- 硬编码凭证检测
- SQL 注入风险
- 不安全的函数使用
- 配置安全性
性能优化建议:
- 算法复杂度分析
- 数据库查询优化
- 缓存策略
- 异步操作
代码风格和可维护性:
- 代码规范检查
- 文档完整性
- 命名规范
- 代码清洁度
在 Claude Desktop 的配置文件中添加:
编辑 ~/Library/Application Support/Claude/claude_desktop_config.json
:
{
"mcpServers": {
"gitlab": {
"command": "gitlab-mcp-server",
"env": {
"GITLAB_URL": "https://gitlab.com",
"GITLAB_TOKEN": "your-token-here"
}
}
}
}
编辑 %APPDATA%\Claude\claude_desktop_config.json
编辑 ~/.config/Claude/claude_desktop_config.json
服务器使用以下 GitLab API 端点:
GET /api/v4/projects/:id/merge_requests/:merge_request_iid
- 获取 MR 信息GET /api/v4/projects/:id/merge_requests/:merge_request_iid/changes
- 获取 MR 变更GET /api/v4/projects/:id/merge_requests/:merge_request_iid/discussions
- 获取讨论POST /api/v4/projects/:id/merge_requests/:merge_request_iid/notes
- 发布评论
pytest
gitlab-mcp-server/
├── gitlab_mcp_server/
│ ├── __init__.py # 包初始化
│ ├── server.py # MCP 服务器主文件
│ ├── gitlab_client.py # GitLab API 客户端
│ └── ai_reviewer.py # AI 代码审查逻辑
├── pyproject.toml # 项目配置
└── README.md # 本文档
确保 GitLab token 具有 api
权限。
检查 GITLAB_URL
是否正确,网络是否可以访问 GitLab 实例。
确认使用的是 MR 的 IID(项目内 ID),而不是全局 ID。
欢迎提交 Issue 和 Pull Request!
MIT License