← 返回目录
G

GitLab MCP Server

社区
面向 AI 客户端的综合 GitLab MCP 服务器。
GitHub 源仓库 ↗
★ 1.8k Stars 分类 · 开发工具 非常热门
60FMRS · C
可靠性
9/20
安全与权限
11/20
维护活跃度
11/20
文档质量
16/20
安装易用性
13/20

来源显示这是一个由 zereight 维护的非官方 GitLab MCP 服务器,版本 2.1.43,采用 MIT 许可证,提供广泛的 GitLab 管理、协作、代码和 CI/CD 工具。使用前应根据实际任务限制令牌范围和工具权限,并为远程部署配置适当的 HTTP 认证与安全设置。

查看 FMRS 评分方法 →

GitLab MCP 服务器,通过 MCP 为项目、代码浏览、合并请求、议题、流水线、Wiki、发布、标签、里程碑、用户、群组、工作项、Webhook、变量、依赖代理和漏洞等提供操作能力。支持 stdio、SSE 和 Streamable HTTP,并支持 GitLab.com 与自托管 GitLab。

工具能力

merge_merge_request
合并 GitLab 项目中的合并请求。
approve_merge_request
unapprove_merge_request
get_merge_request_approval_state
get_merge_request_conflicts
list_merge_request_pipelines
execute_graphql
create_or_update_file
在项目中创建或更新单个文件。
search_repositories
搜索 GitLab 项目。
create_repository
create_group
get_file_contents
获取项目中的文件或目录内容。
push_files
通过一次提交推送多个文件。
create_issue
在 GitLab 项目中创建议题。
create_merge_request
在 GitLab 项目中创建合并请求。
fork_repository
create_branch
get_branch
list_branches
delete_branch
list_protected_branches
get_protected_branch
protect_branch
unprotect_branch
update_default_branch
get_merge_request
获取合并请求详情,包括部署、提交和审批摘要。
get_merge_request_diffs
获取合并请求的变更差异。
list_merge_request_changed_files
list_merge_request_diffs
get_merge_request_file_diff
获取合并请求一个或多个文件的差异。
list_merge_request_versions
get_merge_request_version
get_branch_diffs
update_merge_request
create_note
create_merge_request_thread
resolve_merge_request_thread
mr_discussions
delete_merge_request_discussion_note
update_merge_request_discussion_note
create_merge_request_discussion_note
create_merge_request_note
delete_merge_request_note
get_merge_request_note
get_merge_request_notes
update_merge_request_note
get_draft_note
list_draft_notes
create_draft_note
update_draft_note
delete_draft_note
publish_draft_note
bulk_publish_draft_notes
list_merge_request_emoji_reactions
list_merge_request_note_emoji_reactions
create_merge_request_emoji_reaction
delete_merge_request_emoji_reaction
create_merge_request_note_emoji_reaction
delete_merge_request_note_emoji_reaction
update_issue_note
create_issue_note
list_issue_emoji_reactions
list_issue_note_emoji_reactions
create_issue_emoji_reaction
delete_issue_emoji_reaction
create_issue_note_emoji_reaction
delete_issue_note_emoji_reaction
list_issues
按条件列出议题。
my_issues
get_issue
获取指定议题详情。
update_issue
更新 GitLab 项目中的议题。
update_issue_description_patch
delete_issue
list_todos
mark_todo_done
mark_all_todos_done
list_issue_links
list_issue_discussions
get_issue_link
create_issue_link
delete_issue_link
list_namespaces
get_namespace
verify_namespace
get_project
获取项目详情。
list_projects
列出当前用户可访问的项目。
update_project
list_project_members
list_labels
get_label
create_label
update_label
delete_label
list_group_projects
list_wiki_pages
列出项目 Wiki 页面。
get_wiki_page
获取指定 Wiki 页面详情。
create_wiki_page
创建项目 Wiki 页面。
update_wiki_page
delete_wiki_page
list_group_wiki_pages

安装接入

安装 npm 包 @zereight/mcp-gitlab,或使用仓库文档中的 Homebrew 方式安装。将 GITLAB_PERSONAL_ACCESS_TOKEN 设置为具有所需 GitLab 权限范围的令牌,并按需设置 GITLAB_API_URL。然后在 MCP 客户端中使用 zereight-mcp-gitlab 启动 stdio 服务器。远程部署可改用 SSE 或 Streamable HTTP;REMOTE_AUTHORIZATION 仅支持 Streamable HTTP。

claude_desktop_config.json
{"mcpServers":{"gitlab":{"command":"zereight-mcp-gitlab","args":[],"env":{"GITLAB_PERSONAL_ACCESS_TOKEN":"YOUR_GITLAB_TOKEN","GITLAB_API_URL":"https://gitlab.com/api/v4"}}}}

选型与风险

适合谁

  • 需要让 AI 客户端操作 GitLab 项目管理和代码协作的团队。
  • 需要同时使用 GitLab.com 和自托管 GitLab 的用户。
  • 需要细粒度工具集、单工具筛选或只读模式的部署。
  • 需要本地 stdio 或远程 HTTP MCP 接入的开发者。

不适合谁

  • 不使用 GitLab 的项目或不需要 GitLab API 操作的用户。
  • 只需要静态代码阅读、且不希望授予 GitLab 凭证的场景。
  • 需要 SSE 与 REMOTE_AUTHORIZATION 同时使用的部署。
  • 无法安全管理个人访问令牌、OAuth 凭证或远程请求头的环境。

所需权限

  • 必须提供 GITLAB_PERSONAL_ACCESS_TOKEN,除非使用其他受支持的认证方式。
  • 令牌应具备所用工具需要的 GitLab 范围,例如 api 或 read_api。
  • 写入、删除、流水线操作和项目管理工具需要相应的 GitLab 权限。
  • 可使用 GITLAB_READ_ONLY_MODE 仅暴露只读工具。
  • 可通过 GITLAB_ALLOWED_PROJECT_IDS、GITLAB_TOOLSETS、GITLAB_TOOLS 和 GITLAB_DENIED_TOOLS_REGEX 限制访问。
  • Wiki 工具需要启用 USE_GITLAB_WIKI 或相应工具集。

风险与副作用

  • 启用 api 范围或写入工具可能允许创建、修改、合并和删除 GitLab 资源。
  • 个人访问令牌、作业令牌、Cookie 和 OAuth 令牌属于敏感凭证,应避免出现在日志或配置共享中。
  • NODE_TLS_REJECT_UNAUTHORIZED=0 会降低 TLS 证书校验安全性,仅应在有意连接无效或自签名证书时使用。
  • 远程 HTTP 部署需要正确配置认证、会话、来源、主机和代理信任设置。
  • download_job_artifacts 和其他下载工具可能将内容保存到本地路径。

常见排障

  1. 确认 zereight-mcp-gitlab 可被 MCP 客户端找到;必要时使用 which zereight-mcp-gitlab 获取绝对路径。
  2. 确认 GITLAB_PERSONAL_ACCESS_TOKEN、GITLAB_API_URL 和令牌范围正确。
  3. 自托管 GitLab 使用对应的 /api/v4 地址;自签名证书可配置 GITLAB_CA_CERT_PATH。
  4. SSE 使用 SSE=true;REMOTE_AUTHORIZATION 和 MCP OAuth 必须使用 STREAMABLE_HTTP=true。
  5. OAuth 回调错误时,区分本地 OAuth 的 GITLAB_OAUTH_REDIRECT_URI 与远程 OAuth 的 GITLAB_OAUTH_CALLBACK_PROXY。
  6. 工具缺失时检查 GITLAB_TOOLSETS、GITLAB_TOOLS、GITLAB_DENIED_TOOLS_REGEX、工具策略和 discover_tools。

使用场景

浏览 GitLab 项目、仓库文件、提交和分支。
创建、审查、审批和合并合并请求。
管理议题、讨论、评论、标签和里程碑。
查看、创建、重试或取消 CI/CD 流水线及作业。
管理 Wiki、发布、标签、工作项和漏洞。
为自托管或多用户 GitLab 部署提供远程 MCP 接入。

支持客户端

Claude Code完整支持
VS Code完整支持
GitHub Copilot完整支持
Codex完整支持
Cursor完整支持
Cline部分支持
Roo Code部分支持
Kilo Code部分支持
Amp Code部分支持
Claude.ai部分支持
OpenCode部分支持
Factory AI Droid部分支持
OpenClaw部分支持