GitLab MCP OpenAPI
GitLab的双工具OpenAPI驱动MCP服务器——与传统的显式工具实现相比,节省了95%的令牌。
______________________________________________________________________
概述
此MCP服务器提供 通用GitLab API执行器 使用OpenAPI模式。它只公开了44个以上的单个工具(如结构化世界) 2个强大的工具:
gitlab-api-执行任何GitLab REST API操作gitlab-api-schema-发现可用的API路径和参数
为什么是这种模式?
| 方法 | 工具 | 令牌使用 |
|---|---|---|
| 传统(结构化世界) | 44个独立工具 | ~15000-20000 |
| 此MCP | 2工具 | ~1,000-1,500 ✅ |
结果: 在保持GitLab API全面覆盖的同时节省95%的代币。
______________________________________________________________________
安装
全局安装(适用于OpenClaw)
npm install -g @bakhshb/gitlab-mcp-openapi本地安装(用于开发)
cd gitlab-mcp-openapi
npm install
npm run build______________________________________________________________________
配置
环境变量
| 变量 | 必填 | 默认 | 描述 |
|---|---|---|---|
GITLAB_TOKEN | 无\* | - | GitLab个人访问令牌(静态模式需要) |
GITLAB_PERSONAL_ACCESS_TOKEN | 否 | - | GITLAB_TOKEN的替代方案 |
GITLAB_API_URL | 没有 | https://gitlab.com | GitLab实例URL |
GITLAB_TIMEOUT | 没有 | 30000 | 请求超时(毫秒) |
OAUTH_ENABLED | 没有 | false | 启用OAuth令牌模式 |
GITLAB_OAUTH_TOKEN | 否 | - | OAuth访问令牌(当OAuth_ENABLED=true时使用) |
\*要么 GITLAB_TOKEN, GITLAB_PERSONAL_ACCESS_TOKEN,或 GITLAB_OAUTH_TOKEN (OAUTH_ENABLED=true)是必需的。
创建个人访问令牌
- 转到您的GitLab实例→ 个人资料→ 访问令牌
- 点击 “添加新令牌”
- 将其命名为“MCP GitLab”或“OpenClaw”
- 选择范围:
- ✅ api -API完全访问 - ✅ read_user --用户配置文件访问
- 复制令牌
- 设置环境变量:
export GITLAB_TOKEN=glpat-your-token-hereOAuth模式
对于基于OAuth的身份验证(MCP运行时提供的令牌):
export OAUTH_ENABLED=true
export GITLAB_OAUTH_TOKEN=your-oauth-token
gitlab-mcp-openapi在OpenClaw配置中:
{
"mcpServers": {
"gitlab-mcp-openapi": {
"command": "gitlab-mcp-openapi",
"env": {
"GITLAB_API_URL": "https://gitlab.com",
"OAUTH_ENABLED": "true",
"GITLAB_OAUTH_TOKEN": "${GITLAB_OAUTH_TOKEN}"
}
}
}
}自托管GitLab
对于自托管的GitLab(如您所在组织的GitLab):
export GITLAB_API_URL=https://gitlab.yourcompany.com
export GITLAB_TOKEN=glpat-your-token-here
gitlab-mcp-openapi______________________________________________________________________
OpenClaw 集成
将MCP服务器添加到OpenClaw
编辑 ~/.openclaw/openclaw.json:
{
"mcpServers": {
"gitlab-mcp-openapi": {
"command": "gitlab-mcp-openapi",
"env": {
"GITLAB_API_URL": "https://gitlab.com",
"GITLAB_TOKEN": "${GITLAB_TOKEN}"
}
}
}
}对于自托管GitLab:
{
"mcpServers": {
"gitlab-mcp-openapi": {
"command": "gitlab-mcp-openapi",
"env": {
"GITLAB_API_URL": "https://gitlab.yourcompany.com",
"GITLAB_TOKEN": "${GITLAB_TOKEN}"
}
}
}
}重启网关
openclaw gateway restart______________________________________________________________________
工具和服务
本MCP涵盖 44工具 在所有主要的GitLab API领域:
项目和命名空间(4个工具)
list_projects--列出所有项目get_project--获取项目详细信息search_projects--按名称搜索项目create_project--创建新项目browse_namespaces--列出命名空间manage_namespace--创建/更新/删除组
合并请求(5个工具)
list_merge_requests--列出项目中的MRget_merge_request--获取MR详细信息create_merge_request--创建新MRapprove_merge_request--批准MRmerge_merge_request--合并MRget_merge_request_approval_state--获取审批状态browse_mr_discussions--列出MR讨论manage_mr_discussion--添加/解析评论manage_draft_notes--MR注释草案
管道和CI/CD(3个工具)
list_pipelines--列出项目管道get_pipeline--获取管道详细信息list_pipeline_jobs--列出管道中的作业get_pipeline_job--获取作业详细信息create_pipeline--触发新管道cancel_pipeline--取消正在运行的管道retry_pipeline--重试失败的管道cancel_pipeline_job--取消特定作业retry_pipeline_job--重试失败的作业
问题和注释(6个工具)
list_issues--列出问题get_issue--获取问题详细信息create_issue--创建新问题update_issue--编辑问题delete_issue--删除问题my_issues--列出您分配的问题list_issue_notes--列出问题评论get_issue_note--获取具体评论create_issue_note--添加评论update_issue_note--编辑评论delete_issue_note--删除评论
存储库(4个工具)
create_repository--创建新项目fork_repository--分叉现有项目get_file_contents--从repo读取文件get_repository_tree--列出目录中的文件list_commits--列出提交历史记录get_commit--获取具体的提交详细信息create_branch--创建新分支delete_branch--删除分支
文件(2个工具)
browse_files--列出仓库文件(树)manage_files--创建/更新/删除文件
发布(2个工具)
list_releases--列出项目发布get_release--获取发布详细信息create_release--创建发布update_release--更新版本delete_release--删除发布download_release_asset--下载发布二进制文件
Wiki(2个工具)
browse_wiki--列出wiki页面manage_wiki--创建/更新/删除wiki页面
里程碑(2个工具)
browse_milestones--列出项目里程碑manage_milestone--创建/更新/删除里程碑
标签(2个工具)
browse_labels--列出项目标签manage_label--创建/更新/删除标签
变量(2个工具)
browse_variables--列出CI/CD变量manage_variable--创建/更新/删除变量
Webhooks(2个工具)
browse_webhooks--列出项目webhooksmanage_webhook--创建/更新/删除/测试webhooks
集成(2个工具)
browse_integrations--列出项目集成manage_integration--启用/禁用/集成
片段(2个工具)
browse_snippets--列出代码片段manage_snippet--创建/更新/删除代码段
工作项目(2个工具)
browse_work_items--搜索史诗/任务manage_work_item--创建/更新/删除工作项
成员(2个工具)
browse_members--列出项目成员manage_member--添加/更新/删除成员
搜索(1个工具)
browse_search--GitLab全球搜索
事件(1个工具)
browse_events--用户/项目事件历史记录
所有 (2 工具)
browse_todos列出所有manage_todos--标记完成/恢复
提交(1个工具)
browse_commits--列出/获取提交、差异
______________________________________________________________________
使用示例
列出项目
{
path: "/api/v4/projects",
queryParams: { per_page: 20, membership: true }
}获取具体项目
{
path: "/api/v4/projects/{id}",
pathParams: { id: 15 }
}创建项目(POST)
{
path: "/api/v4/projects",
method: "POST",
body: {
name: "my-new-project",
namespace_id: 1,
visibility: "private",
description: "Created via MCP"
}
}列出合并请求
{
path: "/api/v4/projects/{id}/merge_requests",
pathParams: { id: 15 },
queryParams: { state: "opened", per_page: 10 }
}批准合并请求
{
path: "/api/v4/projects/{id}/merge_requests/{merge_request_iid}/approve",
method: "POST",
pathParams: { id: 15, merge_request_iid: 42 }
}创建管道
{
path: "/api/v4/projects/{id}/pipeline",
method: "POST",
pathParams: { id: 15 },
body: { ref: "main" }
}列出管道
{
path: "/api/v4/projects/{id}/pipelines",
pathParams: { id: 15 },
queryParams: { per_page: 20 }
}创建问题
{
path: "/api/v4/projects/{id}/issues",
method: "POST",
pathParams: { id: 15 },
body: {
title: "Found a bug",
description: "Detailed bug report...",
labels: ["bug", "critical"]
}
}列出问题
{
path: "/api/v4/projects/{id}/issues",
pathParams: { id: 15 },
queryParams: { state: "opened", per_page: 50 }
}列表发布
{
path: "/api/v4/projects/{id}/releases",
pathParams: { id: 15 }
}获取文件内容
{
path: "/api/v4/projects/{id}/repository/files/{path}/raw",
pathParams: { id: 15, path: "README.md" },
queryParams: { ref: "main" }
}创建分支
{
path: "/api/v4/projects/{id}/repository/branches",
method: "POST",
pathParams: { id: 15 },
body: {
branch: "feature/new-feature",
ref: "main"
}
}______________________________________________________________________
建筑
基于规范的设计
- 动态OpenAPI规范 --加载经过筛选的GitLab OpenAPI规范(143条路径,333 KB)
- 没有硬编码端点 -任何GitLab REST API端点都可以访问
- 自动方法检测 --从规范中检测到HTTP方法(GET/POST/PUT/DELETE/PATCH)
2-工具模式
gitlab-api (generic executor)
├── path + method + params → GitLab REST API
└── gitlab-api-schema (schema discovery)
└── tag/path → OpenAPI introspection______________________________________________________________________
发展
安装依赖项
npm install构建
npm run build在本地运行
npm run start测试
使用监视模式运行测试:
npm test运行一次测试:
npm run test:run环境设置
cp .env.example .env
# Edit .env with your GitLab URL and token______________________________________________________________________
灵感
此MCP服务器遵循与以下相同的2工具OpenAPI模式:
- @bakhshb/unifi mcp openapi -UniFi网络API
- @bakhshb/proxmox-mcp-openapi -Proxmox VE API
- @利姆霍克/dokploy mcp -Dokploy API(原始实现)
______________________________________________________________________
许可证
麻省理工学院——见 许可证 文件。
______________________________________________________________________
链接
- npm: https://www.npmjs.com/package/@bakhshb/gitlab mcp openapi
- github: https://github.com/bakhshb/gitlab-mcp-openapi
- GitLab API文档: https://docs.gitlab.com/ee/api/rest/
- OpenClaw文档: https://docs.openclaw.ai
______________________________________________________________________
支持
对于问题、疑问或贡献:
- 在GitHub上打开一个问题
- 加入 OpenClaw不一致
