GitLab API服务器

一个基于模型上下文协议(MCP)的GitLab API服务器,专注于分支管理和合并请求操作。

  • by JesBrian
  • JavaScript
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 JesBrian/gitlab-mcp-server

使用说明

GitLab MCP服务器

[!注意] 此文档可在 简体中文.

基于模型上下文协议(MCP)构建的GitLab API服务器。该服务器提供了一组工具,允许AI模型与GitLab实例交互,重点是分支管理和合并请求(MR)操作。

项目信息

  • 包裹:@jesbrian/gitlab mcp服务器
  • 版本: 0.2.4
  • 类型:CommonJS
  • 主入口:index.js
  • 可执行:gitlab mcp服务器
  • 配置模块:config/config.js

项目结构

gitlab-mcp-server/
├── index.js                          # Main entry file
├── config/                           # Config directory
│   └── Config.js                     # Centralized config file
├── lib/                              # Library directory
│   └── GitLabClient.js               # GitLab API client
├── package.json
└── README.md

模块化设计

  • GitLabClient.js:封装GitLab API调用的客户端类(根目录)
  • config/config.js:集中管理所有配置项(GitLab连接、客户端选项、MCP服务器配置、工具定义)
  • index.js:MCP服务器主逻辑,处理工具调用和请求处理

特性

  • 用户管理:获取当前GitLab用户信息。
  • 项目管理:搜索项目,获取项目ID映射,并检索项目详细信息。
  • 分行管理:
    • 列出存储库分支。
    • 创建新分支(支持指定源分支/标记)。
    • 删除分支。
  • 合并请求(MR)管理:
    • 创建MR(支持公共存储库的标准创建和快速创建)。
    • 获取MR状态(包括合并状态、冲突检测)。
    • 执行合并操作。
    • 关闭MR。
    • 轮询并等待MR可合并(支持超时设置)。

配置

所有配置项都集中在 lib/config/Config.js,可通过环境变量进行自定义:

配置以下环境变量:

变量 描述 必填 默认
GITLAB_URL GitLab实例URL(例如。, https://gitlab.example.com) 是 -
GITLAB_PRIVATE_TOKEN GitLab个人访问令牌(私有令牌) 是 -
TIMEOUT 请求超时(毫秒) 否 10000
WAIT_INTERVAL 轮询间隔(毫秒) 否 2000

用法

作为MCP服务器

添加到Claude Desktop配置文件:

选项1:使用npx(推荐)

{
  "mcpServers": {
    "gitlab": {
      "command": "npx",
      "args": ["@jesbrian/gitlab-mcp-server"],
      "env": {
        "GITLAB_URL": "https://your-gitlab-url.com",
        "GITLAB_PRIVATE_TOKEN": "your-private-token"
      }
    }
  }
}

选项2:本地路径

首先在本地启动项目,然后配置Claude代码:

# After cloning the project, enter the directory and install dependencies
cd gitlab-mcp-server
npm install

# Start the service locally (choose one method)
npm start              # Option 1: Use npm scripts
node index.js          # Option 2: Run directly
gitlab-mcp-server      # Option 3: Install globally and use command

添加到克劳德代码MCP配置:

{
  "mcpServers": {
    "gitlab": {
      "command": "node",
      "args": ["/path/to/gitlab-mcp-server/index.js"],
      "env": {
        "GITLAB_URL": "https://your-gitlab-url.com",
        "GITLAB_PRIVATE_TOKEN": "your-private-token"
      }
    }
  }
}

可用工具

用户和项目管理

  • get_current_user:获取当前GitLab用户信息。
  • get_project_ids:按名称搜索项目并获取项目ID映射(返回不同命名空间中的ID)。
  • get_project:获取指定项目的详细信息。

转移操作

  • get_repository_branches:列出项目的分支。
  • create_branch:创建新分支(可以指定源分支/标记,默认为master)。
  • delete_branch:删除分支。

合并请求(MR)

  • create_merge_request:创建合并请求(支持自定义标题和描述)。
  • create_merge_request_to_public:自动检测个人和公共存储库的快速工具,从个人分支创建MR到公共存储库。
  • merge_branch:执行合并操作。
  • get_merge_request_status:获取当前MR状态(包括合并状态、冲突等)。
  • close_merge_request:关闭合并请求。
  • wait_for_mergeable_status:轮询并等待MR可合并(支持超时,默认5分钟)。