项目简介

这是一个基于 Model Context Protocol (MCP) 构建的服务端应用,旨在通过标准化的接口,让支持 MCP 协议的大语言模型(LLM)客户端能够与 GitLab 代码托管平台进行交互。它将 GitLab 的各种操作(如仓库、分支、文件、问题、合并请求、CI/CD 作业、群组、搜索等)封装为 MCP 工具,供 LLM 调用。

主要功能点

  • 仓库管理: 创建仓库,查看仓库文件树。
  • 分支操作: 创建、列出、获取、删除分支,保护/取消保护分支,删除已合并分支,获取默认分支。
  • 文件操作: 创建、获取、更新、删除仓库文件,获取文件 Blame 信息。
  • 问题管理: 创建、更新、列出、获取、关闭、删除、移动问题,添加评论,列出评论。
  • 合并请求操作: 创建、列出、获取、合并、更新、删除合并请求,获取合并请求变更,添加评论。
  • CI/CD 操作: 获取 CI/CD 作业日志,获取作业失败详情。
  • 群组操作: 列出、获取群组,按项目命名空间获取群组。
  • 搜索工具: 在全局、群组或项目中搜索资源(如项目、文件内容)。

安装步骤

  1. 克隆仓库:
    git clone https://github.com/Adit-999/gitlab-mcp.git
    cd gitlab-mcp
  2. 安装依赖 (推荐使用 uv):
    uv sync
    或使用 pip:
    # 创建并激活虚拟环境
    python -m venv .venv
    source .venv/bin/activate  # Windows: .venv\Scripts\activate
    # 安装依赖
    pip install -e .

服务器配置

本 MCP 服务端需要配置 GitLab 的个人访问令牌 ('GITLAB_PERSONAL_ACCESS_TOKEN') 和 API 地址 ('GITLAB_API_URL')。这些配置通常通过 MCP 客户端的配置界面或文件进行。

一个典型的 MCP 客户端配置(例如 JSON 格式)会包含如下结构,您需要在其中指定该 GitLab MCP 服务端的启动方式和环境变量:

{
  "mcpServers": {
    "gitlab-mcp": { // 服务器名称,您可以自定义
      "command": "uv", // 或指向您的 Python 环境中的 uv/python 路径
      "args": [
        "run",
        "--with", "mcp[cli]",
        "mcp",
        "run",
        "/path/to/gitlab-mcp/server.py" // 指向您克隆的 gitlab-mcp 仓库下的 server.py 文件路径
      ],
      "env": {
        "GITLAB_PERSONAL_ACCESS_TOKEN": "您的 GitLab 个人访问令牌", // 替换为您的实际令牌
        "GITLAB_API_URL": "https://gitlab.com" // 替换为您的 GitLab 实例 API 地址,默认是 gitlab.com
      }
      // 其他 MCP 服务器配置项(如 transports)可能也需要根据客户端要求添加
    }
  }
}

注意:

  • 请确保 'GITLAB_PERSONAL_ACCESS_TOKEN' 具有执行所需操作(如创建、读取、更新、删除等)的权限。
  • '/path/to/gitlab-mcp/server.py' 需要替换为您实际的项目路径。
  • 您也可以通过在项目根目录创建 '.env' 文件来设置这些环境变量,但通过 MCP 客户端配置通常更便于管理。

基本使用方法

  1. 完成安装和配置: 按照上述步骤安装项目并配置您的 MCP 客户端,使其能启动并连接到 GitLab MCP 服务端,并设置必要的 GitLab 认证信息。
  2. 启动 MCP 客户端: 启动您的 LLM 客户端(如支持 MCP 的 Claude Desktop)。客户端会自动发现并加载配置好的 MCP 服务端及其提供的工具。
  3. 通过 LLM 调用工具: 一旦客户端连接成功,您就可以通过与 LLM 对话,指示它使用可用的 GitLab 工具来执行任务,例如:“列出项目 'your-namespace/your-project' 中的所有问题”、“在项目 'your-namespace/your-project' 的 'main' 分支创建一个名为 'new_feature' 的新分支”。LLM 会解析您的请求并使用对应的 MCP 工具完成操作。

信息

分类

开发者工具