GitLab API集成服务器

一个为AI助手如Claude提供GitLab API集成的模型上下文协议(MCP)服务器,支持管理仓库、分支、合并请求和文件操作。

  • by Tonetete
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 tonetete/gitlab-mcp-server

使用说明

GitLab MCP服务器

一个模型上下文协议(MCP)服务器,为Claude等人工智能助手提供GitLab API集成。此服务器使AI代理能够与GitLab存储库交互、管理分支、创建合并请求和执行文件操作。

特性

  • 库管理:列出并获取GitLab项目的详细信息
  • 转移操作:创建、列出和删除分支
  • 合并请求:创建、列出和合并拉取请求
  • 文件操作:读取、创建、更新和删除存储库文件
  • 安全认证:使用GitLab API进行基于令牌的身份验证

安装

  1. 克隆存储库:
git clone <repository-url>
cd gitlab-mcp-server
  1. 安装依赖项:
npm install
  1. 设置环境变量:
cp .env.example .env
# Edit .env with your GitLab credentials

配置

创建一个 .env 包含以下变量的文件:

GITLAB_TOKEN=your_gitlab_personal_access_token
GITLAB_URL=https://gitlab.com/api/v4
DEFAULT_PROJECT_ID=your_default_project_id

环境变量

  • GITLAB_TOKEN:您的GitLab个人访问令牌(必填)
  • GITLAB_URL:GitLab API基本URL(默认为https://gitlab.com/api/v4)
  • DEFAULT_PROJECT_ID:操作的默认项目ID(可选)

Claude代码配置

要将此MCP服务器与Claude Code一起使用,您需要在MCP设置中对其进行配置。创建或更新MCP配置文件:

选项1:项目特定配置

创建一个 mcp.json 项目目录中的文件:

{
  "mcpServers": {
    "gitlab": {
      "command": "node",
      "args": ["/path/to/gitlab-mcp-server/dist/index.js"],
      "env": {
        "GITLAB_TOKEN": "your_gitlab_personal_access_token",
        "GITLAB_URL": "https://gitlab.com/api/v4",
        "DEFAULT_PROJECT_ID": "your_project_id"
      }
    }
  }
}

选项2:全局配置

添加到全局Claude Code配置文件(通常在 ~/.config/claude-code/mcp.json 或类似):

{
  "mcpServers": {
    "gitlab": {
      "command": "node",
      "args": ["/path/to/gitlab-mcp-server/dist/index.js"],
      "env": {
        "GITLAB_TOKEN": "your_gitlab_personal_access_token",
        "GITLAB_URL": "https://gitlab.com/api/v4"
      }
    }
  }
}

备注:替换 /path/to/gitlab-mcp-server 使用克隆此存储库的实际路径。

改用环境变量

为了提高安全性,您可以在 mcp.json:

{
  "mcpServers": {
    "gitlab": {
      "command": "node",
      "args": ["/path/to/gitlab-mcp-server/dist/index.js"],
      "env": {
        "GITLAB_TOKEN": "${GITLAB_TOKEN}",
        "GITLAB_URL": "${GITLAB_URL}",
        "DEFAULT_PROJECT_ID": "${DEFAULT_PROJECT_ID}"
      }
    }
  }
}

然后在shell配置文件中设置这些环境变量(~/.bashrc, ~/.zshrc等等)。

用法

发展模式

npm run dev

生产模式

npm run build
npm start

监视模式(更改后自动重新启动)

npm run watch

可用工具

存储库工具

  • list_projects:列出可访问的GitLab项目
  • get_project:获取特定项目的详细信息

分支工具

  • list_branches:列出存储库中的所有分支
  • create_branch:从现有分支创建新分支
  • delete_branch:从存储库中删除分支

合并请求工具

  • create_merge_request:创建新的合并请求
  • list_merge_requests:列出具有筛选选项的合并请求
  • merge_merge_request:合并已批准的合并请求

文件工具

  • get_file:从存储库读取文件内容
  • create_file:在存储库中创建新文件
  • update_file:更新现有文件内容
  • delete_file:从存储库中删除文件

使用Claude代码

此MCP服务器旨在与Claude Code和其他MCP兼容的AI助手无缝协作。以下是一些示例用例:

示例1:创建特征分支和合并请求

You: "Create a new feature branch called 'add-user-auth' from main, then create a merge request for it"

Claude (using this MCP server):
1. Uses create_branch tool to create 'add-user-auth' branch from 'main'
2. Uses create_merge_request tool to create a merge request
3. Provides you with the merge request URL and details

示例2:文件操作

You: "Add a new configuration file config/database.yml to the repository"

Claude (using this MCP server):
1. Uses create_file tool to add the new file
2. Commits the change with an appropriate message
3. Confirms the file was created successfully

示例3:代码审查工作流

You: "List all open merge requests and show me the files changed in MR #42"

Claude (using this MCP server):
1. Uses list_merge_requests tool to get open MRs
2. Uses get_file tool to show changed files in the specific MR
3. Provides a summary of the changes for review

建筑

服务器采用模块化架构:

  • src/index.ts:主服务器入口点和MCP设置
  • src/gitlab-client.ts:GitLab API客户端包装器
  • src/tools/:单个工具实施
    • repository.ts:项目管理工具
    • branches.ts:分行操作工具
    • merge-requests.ts:合并请求工具
    • files.ts:文件操作工具

发展

项目结构

├── src/
│   ├── index.ts              # Main server entry point
│   ├── gitlab-client.ts      # GitLab API client
│   └── tools/                # MCP tool implementations
│       ├── repository.ts
│       ├── branches.ts
│       ├── merge-requests.ts
│       └── files.ts
├── dist/                     # Compiled JavaScript output
├── package.json
├── tsconfig.json
└── README.md

建筑

npm run build

测试

可以通过将服务器连接到任何兼容MCP的客户端或使用MCP调试工具来测试服务器。

认证

此服务器使用GitLab个人访问令牌进行身份验证。要创建令牌,请执行以下操作:

  1. 转到您的GitLab配置文件设置
  2. 导航到“访问令牌”
  3. 创建具有适当作用域的新令牌:
    • api:完全访问API
    • read_user:读取用户信息
    • read_repository:读取存储库内容
    • write_repository:写入存储库

安全说明

  • 将您的GitLab令牌安全地存储在环境变量中
  • 从不将令牌提交到版本控制
  • 为您的令牌使用所需的最小权限
  • 定期轮换您的访问令牌

贡献

  1. 分叉存储库
  2. 创建要素分支
  3. 进行更改
  4. 如果适用,添加测试
  5. 提交合并请求

许可证

MIT许可证-有关详细信息,请参阅许可证文件。

支持

对于问题和功能请求,请在GitLab存储库中创建问题。