Skip to content

islgl/gitlab-mcp-server

Repository files navigation

GitLab MCP Server

一个基于 Model Context Protocol (MCP) 的 GitLab 服务器,支持 AI 自动生成 Merge Request 评论和其他 GitLab 操作。

功能特性

🤖 AI 代码审查

  • 自动生成评论:利用 AI 分析代码变更,自动生成有洞察力的 Merge Request 评论
  • 多种审查角度:支持通用、安全、性能和代码风格四种审查模式
  • 智能分析:自动检测代码模式、潜在问题和改进建议

🛠️ 可用工具

  1. post_mr_review_comment - 发布 AI 生成的审查评论

    • 分析代码变更
    • 生成全面的审查报告
    • 支持不同的审查重点(通用/安全/性能/风格)
  2. post_mr_comment - 发布自定义评论

    • 向 MR 添加特定反馈或问题
  3. get_mr_info - 获取 MR 详细信息

    • 标题、描述、作者、状态等
  4. get_mr_changes - 获取 MR 代码变更

    • 查看修改的文件列表和 diff 信息

安装

前置要求

  • Python 3.11 或更高版本
  • GitLab 个人访问令牌

安装步骤

  1. 克隆仓库:
git clone <repository-url>
cd gitlab-mcp-server
  1. 安装依赖:
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 Token

  1. 登录 GitLab
  2. 访问 SettingsAccess Tokens
  3. 创建新 token,需要以下权限:
    • api - 访问 API
    • read_api - 读取 API 数据
    • write_repository - 写入评论
  4. 复制生成的 token 并设置到 GITLAB_TOKEN 环境变量

使用方法

启动服务器

gitlab-mcp-server

或直接运行:

python -m gitlab_mcp_server.server

在 MCP 客户端中使用

服务器启动后,可以通过支持 MCP 的客户端(如 Claude Desktop)调用工具。

示例:发布 AI 审查评论

{
  "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! 🚀"
  }
}

审查模式

General(通用)

全面的代码审查,包括:

  • 变更统计和文件分析
  • 潜在问题识别
  • 最佳实践建议

Security(安全)

专注于安全问题:

  • 硬编码凭证检测
  • SQL 注入风险
  • 不安全的函数使用
  • 配置安全性

Performance(性能)

性能优化建议:

  • 算法复杂度分析
  • 数据库查询优化
  • 缓存策略
  • 异步操作

Style(风格)

代码风格和可维护性:

  • 代码规范检查
  • 文档完整性
  • 命名规范
  • 代码清洁度

配置 Claude Desktop

在 Claude Desktop 的配置文件中添加:

macOS

编辑 ~/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"
      }
    }
  }
}

Windows

编辑 %APPDATA%\Claude\claude_desktop_config.json

Linux

编辑 ~/.config/Claude/claude_desktop_config.json

API 参考

GitLab API 调用

服务器使用以下 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                # 本文档

故障排查

Token 权限错误

确保 GitLab token 具有 api 权限。

连接错误

检查 GITLAB_URL 是否正确,网络是否可以访问 GitLab 实例。

MR 不存在

确认使用的是 MR 的 IID(项目内 ID),而不是全局 ID。

贡献

欢迎提交 Issue 和 Pull Request!

许可证

MIT License

相关链接

About

👋 GitLab MCP Server 🎊

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published