GitLab MCP 服务器

这是一个 Model Context Protocol (MCP) 服务器,专门用于与 GitLab 交互,主要功能包括创建和合并 Merge Request。

功能

  • create_merge_request: 在指定的 GitLab 项目中创建一个新的 Merge Request
  • merge_merge_request: 合并指定的 GitLab Merge Request
  • get_merge_request: 获取指定 Merge Request 的详细信息
  • close_merge_request: 关闭指定的 GitLab Merge Request 而不合并

环境变量

  • GITLAB_ACCESS_TOKEN: 用于访问 GitLab API 的访问令牌
  • GITLAB_API_BASE_URL: GitLab API 的基础 URL(默认为 https://gitlab.com/api/v4)

安装和运行

  1. 首先,确保你已经安装了 Node.js 和 npm。
  2. 安装依赖:
    npm install
    
  3. 设置环境变量:
    export GITLAB_ACCESS_TOKEN="your_gitlab_access_token"
    export GITLAB_API_BASE_URL="https://your-gitlab-instance.com/api/v4"  # 可选,仅当使用自托管的 GitLab 时
    
  4. 运行 GitLab MCP 服务器:
    npm run gitlab
    

架构

该项目使用一个封装的 gitlabApiClient 对象来处理所有与 GitLab API 的交互,这使得代码更模块化和可维护。API 客户端包含以下方法:

  • createMergeRequest: 创建 Merge Request
  • mergeMergeRequest: 合并 Merge Request
  • getMergeRequest: 获取 Merge Request 详情
  • closeMergeRequest: 关闭 Merge Request

工具详情

create_merge_request

创建一个新的 Merge Request。

参数:

  • projectId: GitLab 项目的 ID 或 URL 编码的路径
  • sourceBranch: 源分支名称
  • targetBranch: 目标分支名称
  • title: Merge Request 的标题
  • description: (可选) Merge Request 的描述
  • assigneeId: (可选) 负责人 ID
  • reviewerIds: (可选) 审阅者 ID 数组

merge_merge_request

合并一个 Merge Request。

参数:

  • projectId: GitLab 项目的 ID 或 URL 编码的路径
  • mrIid: Merge Request 的内部 ID
  • mergeCommitMessage: (可选) 合并提交的消息
  • shouldRemoveSourceBranch: (可选) 是否在合并后删除源分支
  • mergeWhenPipelineSucceeds: (可选) 是否在 CI 管道成功后合并

get_merge_request

获取 Merge Request 的详细信息。

参数:

  • projectId: GitLab 项目的 ID 或 URL 编码的路径
  • mrIid: Merge Request 的内部 ID

close_merge_request

关闭一个 Merge Request 而不合并。

参数:

  • projectId: GitLab 项目的 ID 或 URL 编码的路径
  • mrIid: Merge Request 的内部 ID

配置 MCP 服务器

{
  "mcpServers": {
    "gitlab-mcp-server": {
      "command": "node",
      "args": [
        "/your/code/path/index-gitlab.js"
      ],
      "env": {
        "GITLAB_API_BASE_URL": "https://git.ifengqun.com/api/v4",
        "GITLAB_ACCESS_TOKEN": "your_gitlab_token"
      }
    }
  }
}
S
Description
No description provided
Readme
116 KiB
0 Stars 1 Watchers 0 Forks
Languages
JavaScript 100%