GitHub
Connect AI assistants to GitHub - manage repos, issues, PRs, and workflows through natural language.
作者提供的说明(英文原文)
GitLab MCP server for projects, merge requests, issues, pipelines, wiki, releases, and more.
这三项永远不会合并成一个分数:意见、测量和人气是不同的东西。
我们还没有为它写通俗的介绍。下面是我们从注册中心读取到的事实。
选择你使用的 AI 应用,然后复制设置。
GITLAB_PERSONAL_ACCESS_TOKEN, GITLAB_PERSONAL_ACCESS_TOKEN_FILE, GITLAB_JOB_TOKEN, GITLAB_AUTH_COOKIE_PATH, GITLAB_USE_OAUTH, GITLAB_OAUTH_CLIENT_ID, GITLAB_OAUTH_TOKEN_SCRIPT, GITLAB_API_URL, GITLAB_ALLOWED_PROJECT_IDS, GITLAB_PERMISSION_MODE, GITLAB_TOOLSETS, GITLAB_TOOLS, GITLAB_DENIED_TOOLS_REGEX, GITLAB_TOOL_POLICY_APPROVE, GITLAB_TOOL_POLICY_HIDDEN, NODE_TLS_REJECT_UNAUTHORIZED, GITLAB_CA_CERT_PATH, GITLAB_MASKING_ENABLED, GITLAB_MASKING_CONFIG, GITLAB_MASKING_POLICY_FILE, GITLAB_MASKING_WORKSPACE_DIR标为机密的值是你账户的钥匙。千万不要分享给别人,也不要粘贴到聊天里。
你需要
你用的是哪个应用?
在上方选择你的应用。我们会记住它,下次按钮会显示“安装到 …”。
打开 Claude Desktop → Settings → Developer → Edit Config,把下面的内容粘贴到 claude_desktop_config.json
{
"mcpServers": {
"gitlab": {
"command": "npx",
"args": [
"-y",
"@zereight/mcp-gitlab"
],
"env": {
"GITLAB_PERSONAL_ACCESS_TOKEN": "your-value",
"GITLAB_PERSONAL_ACCESS_TOKEN_FILE": "your-value",
"GITLAB_JOB_TOKEN": "your-value",
"GITLAB_AUTH_COOKIE_PATH": "your-value",
"GITLAB_USE_OAUTH": "your-value",
"GITLAB_OAUTH_CLIENT_ID": "your-value",
"GITLAB_OAUTH_TOKEN_SCRIPT": "your-value",
"GITLAB_API_URL": "your-value",
"GITLAB_ALLOWED_PROJECT_IDS": "your-value",
"GITLAB_PERMISSION_MODE": "your-value",
"GITLAB_TOOLSETS": "your-value",
"GITLAB_TOOLS": "your-value",
"GITLAB_DENIED_TOOLS_REGEX": "your-value",
"GITLAB_TOOL_POLICY_APPROVE": "your-value",
"GITLAB_TOOL_POLICY_HIDDEN": "your-value",
"NODE_TLS_REJECT_UNAUTHORIZED": "your-value",
"GITLAB_CA_CERT_PATH": "your-value",
"GITLAB_MASKING_ENABLED": "your-value",
"GITLAB_MASKING_CONFIG": "your-value",
"GITLAB_MASKING_POLICY_FILE": "your-value",
"GITLAB_MASKING_WORKSPACE_DIR": "your-value"
}
}
}
}在终端中运行这条命令
claude mcp add gitlab --env GITLAB_PERSONAL_ACCESS_TOKEN=your-value --env GITLAB_PERSONAL_ACCESS_TOKEN_FILE=your-value --env GITLAB_JOB_TOKEN=your-value --env GITLAB_AUTH_COOKIE_PATH=your-value --env GITLAB_USE_OAUTH=your-value --env GITLAB_OAUTH_CLIENT_ID=your-value --env GITLAB_OAUTH_TOKEN_SCRIPT=your-value --env GITLAB_API_URL=your-value --env GITLAB_ALLOWED_PROJECT_IDS=your-value --env GITLAB_PERMISSION_MODE=your-value --env GITLAB_TOOLSETS=your-value --env GITLAB_TOOLS=your-value --env GITLAB_DENIED_TOOLS_REGEX=your-value --env GITLAB_TOOL_POLICY_APPROVE=your-value --env GITLAB_TOOL_POLICY_HIDDEN=your-value --env NODE_TLS_REJECT_UNAUTHORIZED=your-value --env GITLAB_CA_CERT_PATH=your-value --env GITLAB_MASKING_ENABLED=your-value --env GITLAB_MASKING_CONFIG=your-value --env GITLAB_MASKING_POLICY_FILE=your-value --env GITLAB_MASKING_WORKSPACE_DIR=your-value -- npx -y @zereight/mcp-gitlab运行前请先填写空着的值。
粘贴到项目中的 .cursor/mcp.json,或 ~/.cursor/mcp.json
{
"mcpServers": {
"gitlab": {
"command": "npx",
"args": [
"-y",
"@zereight/mcp-gitlab"
],
"env": {
"GITLAB_PERSONAL_ACCESS_TOKEN": "your-value",
"GITLAB_PERSONAL_ACCESS_TOKEN_FILE": "your-value",
"GITLAB_JOB_TOKEN": "your-value",
"GITLAB_AUTH_COOKIE_PATH": "your-value",
"GITLAB_USE_OAUTH": "your-value",
"GITLAB_OAUTH_CLIENT_ID": "your-value",
"GITLAB_OAUTH_TOKEN_SCRIPT": "your-value",
"GITLAB_API_URL": "your-value",
"GITLAB_ALLOWED_PROJECT_IDS": "your-value",
"GITLAB_PERMISSION_MODE": "your-value",
"GITLAB_TOOLSETS": "your-value",
"GITLAB_TOOLS": "your-value",
"GITLAB_DENIED_TOOLS_REGEX": "your-value",
"GITLAB_TOOL_POLICY_APPROVE": "your-value",
"GITLAB_TOOL_POLICY_HIDDEN": "your-value",
"NODE_TLS_REJECT_UNAUTHORIZED": "your-value",
"GITLAB_CA_CERT_PATH": "your-value",
"GITLAB_MASKING_ENABLED": "your-value",
"GITLAB_MASKING_CONFIG": "your-value",
"GITLAB_MASKING_POLICY_FILE": "your-value",
"GITLAB_MASKING_WORKSPACE_DIR": "your-value"
}
}
}
}浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。
粘贴到项目中的 .vscode/mcp.json
{
"servers": {
"gitlab": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@zereight/mcp-gitlab"
],
"env": {
"GITLAB_PERSONAL_ACCESS_TOKEN": "your-value",
"GITLAB_PERSONAL_ACCESS_TOKEN_FILE": "your-value",
"GITLAB_JOB_TOKEN": "your-value",
"GITLAB_AUTH_COOKIE_PATH": "your-value",
"GITLAB_USE_OAUTH": "your-value",
"GITLAB_OAUTH_CLIENT_ID": "your-value",
"GITLAB_OAUTH_TOKEN_SCRIPT": "your-value",
"GITLAB_API_URL": "your-value",
"GITLAB_ALLOWED_PROJECT_IDS": "your-value",
"GITLAB_PERMISSION_MODE": "your-value",
"GITLAB_TOOLSETS": "your-value",
"GITLAB_TOOLS": "your-value",
"GITLAB_DENIED_TOOLS_REGEX": "your-value",
"GITLAB_TOOL_POLICY_APPROVE": "your-value",
"GITLAB_TOOL_POLICY_HIDDEN": "your-value",
"NODE_TLS_REJECT_UNAUTHORIZED": "your-value",
"GITLAB_CA_CERT_PATH": "your-value",
"GITLAB_MASKING_ENABLED": "your-value",
"GITLAB_MASKING_CONFIG": "your-value",
"GITLAB_MASKING_POLICY_FILE": "your-value",
"GITLAB_MASKING_WORKSPACE_DIR": "your-value"
}
}
}
}浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。
这个服务器在你的电脑上运行,而 ChatGPT 只能连接互联网上的服务器。请选择其他应用。
你的选择通过 Cookie 保存在这台设备上,无需账户。
GITLAB_PERSONAL_ACCESS_TOKEN_FILE envGITLAB_AUTH_COOKIE_PATH envGITLAB_USE_OAUTH envGITLAB_OAUTH_CLIENT_ID envGITLAB_OAUTH_TOKEN_SCRIPT envGITLAB_API_URL envGITLAB_ALLOWED_PROJECT_IDS envGITLAB_PERMISSION_MODE envGITLAB_TOOLSETS envGITLAB_TOOLS envGITLAB_DENIED_TOOLS_REGEX envGITLAB_TOOL_POLICY_APPROVE envGITLAB_TOOL_POLICY_HIDDEN envNODE_TLS_REJECT_UNAUTHORIZED envGITLAB_CA_CERT_PATH envGITLAB_MASKING_ENABLED envGITLAB_MASKING_CONFIG envGITLAB_MASKING_POLICY_FILE envGITLAB_MASKING_WORKSPACE_DIR env这些设置是根据作者在注册中心的条目生成的。如果 README 的写法不同,请以 README 为准。
它在你的电脑上运行;安装后,工具列表会显示在你的 AI 应用中。
我们检查的是任何人都能看到的信息;我们没有阅读代码。不适用的检查项不计入总数。 · 检查于 2026年11月6日
注册名称已通过 GitHub 账户 zereight 验证,该账户拥有此仓库
代码最后更新于昨天
使用 MIT
它在你的电脑上运行,没有互联网端点
在你的电脑上运行,改用本地设置
它在你的电脑上运行;我们只能读取互联网端点的工具列表
与注册中心里这个分类中所有活跃的服务器比较。只有当发布者拥有该仓库时,星标数才计入。
它在 3 项适用的基础检查中通过了 3 项。我们没有阅读代码。在添加密钥或令牌之前,请先看看这个服务器要求哪些权限,并使用只具备所需权限的密钥。
你需要填写:GITLAB_PERSONAL_ACCESS_TOKEN, GITLAB_JOB_TOKEN
它在你的电脑上运行。你的 AI 应用会在需要时启动它,数据不会经过作者的服务器(除非它自己调用在线服务)。
GitHub 仓库最后更新于昨天,最新版本(2.3.22)于昨天进入注册中心。
支持 MCP 的应用,例如 Claude Desktop、Claude Code、Cursor 和 VS Code。你的电脑上还需要有 Node.js, Docker。
同一分类中有:GitHub, Desktop Commander, Cloudflare MCP
同一分类中其他作者的服务器,按星标数排序。
如何看卡片:★ GitHub 星标i三大支柱:评价 · 检查 · 使用情况i更新 = 最新版本发布到注册中心的时间i
Connect AI assistants to GitHub - manage repos, issues, PRs, and workflows through natural language.
MCP server for terminal commands, file operations, and process management
Cloudflare MCP servers
按原文从作者的仓库复制。PopNx MCP 没有审查或背书其内容。HTML、图片和脚本已被移除。链接会离开本站。
English | 한국어 | 简体中文 | Português (Brasil)
📖 [Documentation →](https://zereight.github.io/gitlab-mcp/) · llms.txt · llms-full.txt
Default: 40 tools (38 core + discover_tools + help). 288 tools exist in total (285 in toolsets + execute_graphql + discover_tools + help). Start lean; call discover_tools to activate more for this session.
Token budget: MCP clients send the whole
tools/listto the model at session start. Keep the default (~40 tools, ~12k schema tokens). Calldiscover_toolsto activate a category for this session (session-only; withOAUTH_STATELESS_MODE=truepersist a namedGITLAB_TOOLSETSlist), or use Skill + CLI and skip MCP schemas. Do not set `GITLAB_TOOLSETS=all` — it loads ~all tools and costs ~73k schema tokens. See tools/list size and comparison.
Install the zereight-mcp-gitlab binary first with npm install -g @zereight/mcp-gitlab, or Homebrew brew tap zereight/gitlab-mcp https://github.com/zereight/gitlab-mcp and brew install zereight/gitlab-mcp/zereight-mcp-gitlab. Official MCP Registry listing: io.github.zereight/gitlab-mcp. One-liner: npx -y @zereight/mcp-gitlab@latest.
| Without this MCP | With this MCP |
|---|---|
| Paste MR URLs and diffs into chat | list_merge_request_changed_files → batched get_merge_request_file_diff |
| Hunt job logs in the GitLab UI | get_pipeline_job_output with pagination |
| Re-explain the project path every turn | project_id=group%2Fproject and merge_request_iid=123 |
| Path | When | How |
|---|---|---|
| Local IDE | Cursor, Claude Code, Codex on your machine | stdio + PAT or local OAuth |
| Shared HTTP | Team or hosted MCP | Streamable HTTP URL + remote auth or MCP OAuth |
| Claude.ai | Claude web connectors | Public HTTPS + GITLAB_MCP_OAUTH |
Install the binary first (npm install -g @zereight/mcp-gitlab, or Homebrew brew tap zereight/gitlab-mcp https://github.com/zereight/gitlab-mcp then brew install zereight/gitlab-mcp/zereight-mcp-gitlab). Read the token without echo:
read -rs GITLAB_PERSONAL_ACCESS_TOKEN && export GITLAB_PERSONAL_ACCESS_TOKEN
# Claude Code
claude mcp add gitlab --transport stdio --scope local --env GITLAB_PERSONAL_ACCESS_TOKEN="$GITLAB_PERSONAL_ACCESS_TOKEN" --env GITLAB_API_URL=https://gitlab.com/api/v4 -- zereight-mcp-gitlab
codex mcp add gitlab --env GITLAB_PERSONAL_ACCESS_TOKEN="$GITLAB_PERSONAL_ACCESS_TOKEN" --env GITLAB_API_URL=https://gitlab.com/api/v4 -- zereight-mcp-gitlab
Other clients: VS Code · GitHub Copilot · JSON clients · Cursor details
Copy this into an agent that can edit MCP config:
Install the GitLab MCP server (@zereight/mcp-gitlab) for this workspace.
Binary: zereight-mcp-gitlab (npm i -g @zereight/mcp-gitlab, or npx -y @zereight/mcp-gitlab@latest). Auth: GITLAB_PERSONAL_ACCESS_TOKEN plus GITLAB_API_URL=https://gitlab.com/api/v4 (or GITLAB_USE_OAUTH=true). Local: claude mcp add gitlab --transport stdio --scope local --env GITLAB_PERSONAL_ACCESS_TOKEN="$GITLAB_PERSONAL_ACCESS_TOKEN" --env GITLAB_API_URL=https://gitlab.com/api/v4 -- zereight-mcp-gitlab Or: codex mcp add gitlab --env GITLAB_PERSONAL_ACCESS_TOKEN="$GITLAB_PERSONAL_ACCESS_TOKEN" --env GITLAB_API_URL=https://gitlab.com/api/v4 -- zereight-mcp-gitlab Cursor: use the README deeplink or docs/clients/cursor.md. Remote HTTP: point the client at https://mcp.example.com/mcp (Streamable HTTP). Claude.ai needs GITLAB_MCP_OAUTH on that host. Default list: 40 tools (38 core + discover_tools + help). Call discover_tools to expand. Do not set GITLAB_TOOLSETS=all (loads ~all schemas, ~73k tokens). Do not enable the api toolset unless you accept its bypass risk. Equal non-MCP path: npx skills add zereight/gitlab-mcp --skill gitlab-mcp-skill plus the zereight-mcp-gitlab CLI.
First-class option for a hosted or self-hosted server. Point the client at a Streamable HTTP URL:
{
"mcpServers": { "gitlab": { "type": "http", "url": "https://mcp.example.com/mcp" } } }
GITLAB_MCP_OAUTH=true on the server (see MCP OAuth)REMOTE_AUTHORIZATION=true (see Remote Authorization)Skill + CLI is an equal path, not a fallback. Same workflows, full payloads in a terminal, no MCP registration.
npx skills add zereight/gitlab-mcp --skill gitlab-mcp-skill
zereight-mcp-gitlab user whoami zereight-mcp-gitlab mr list
See CLI without MCP and skills/gitlab-mcp/.
| Use MCP when | Use the CLI when |
|---|---|
| The agent needs structured tools in chat | You need the full payload (diffs, logs, artifacts) |
jmespath or compact results are enough | GITLAB_MCP_COMPACT_RESULTS is on and you want the rest in a terminal |
| You already registered the server | You have a PAT or ran auth and do not want MCP |
Human CLI is never compacted. Destructive tools and GITLAB_TOOL_POLICY_APPROVE tools need --yes.
project_id is a numeric ID or a URL-encoded path. Example: group group, project project, merge request !123 → project_id=group%2Fproject, merge_request_iid=123. Nested groups use %2F between every segment (group%2Fsubgroup%2Fproject).
How do I authenticate? Local desktop: GITLAB_PERSONAL_ACCESS_TOKEN (or GITLAB_PERSONAL_ACCESS_TOKEN_FILE) is the simplest. Local OAuth is GITLAB_USE_OAUTH=true. Remote Claude.ai uses GITLAB_MCP_OAUTH. Multi-user HTTP uses REMOTE_AUTHORIZATION and a per-request token header.
Why do I only see ~40 tools? The default core toolset is 38 tools plus always-on discover_tools and help. That is intentional: a client sends every listed schema to the model up front. Call discover_tools with no args to list categories, then pass a category (pipelines, wiki, …) to activate it for this session. Session-only; with OAUTH_STATELESS_MODE=true persist a named GITLAB_TOOLSETS list. Do not set `GITLAB_TOOLSETS=all` — it loads ~all schemas (~73k tokens) and still does not enable api.
Local OAuth vs MCP OAuth vs remote auth? Local OAuth opens a browser on the same machine as the server. MCP OAuth is for a public HTTPS server and clients such as Claude.ai. Remote authorization forwards the caller's PAT or job token; there is no OAuth dance.
How do I shrink huge replies? Pass jmespath on any tool call. Or set GITLAB_MCP_COMPACT_RESULTS=true so oversized MCP replies become a preview plus a CLI command. Use the CLI when you need the full payload.
Why is the `api` toolset dangerous? gitlab_api_request bypasses group/project allowlists, other tool filters, and per-tool safety checks. Prompt injection can drive it. Enable it only by listing api in GITLAB_TOOLSETS. all, discover_tools, and GITLAB_TOOLS do not.
GitLab merge requests, issues, and pipelines go through this MCP (@zereight/mcp-gitlab).
Start with the default core tools. Call discover_tools to expand. Do not set GITLAB_TOOLSETS=all. Prefer list_merge_request_changed_files, then batched get_merge_request_file_diff. Use jmespath or compact results; use the CLI for full diffs and job logs.
Agent-workflow-optimized GitLab MCP — manage projects, merge requests, issues, pipelines, wiki, releases, tags, milestones, and more through stdio, SSE, and Streamable HTTP.
Supports PAT, OAuth, read-only mode, dynamic API URLs, and remote authorization for VS Code, Claude, Cursor, Copilot, and other MCP clients.
discover_tools to activate more without CQRS-style grouping. GITLAB_TOOLSETS=all loads ~all schemas (~73k tokens); prefer discover-on-demand or Skill + CLIlist_merge_request_changed_files → batched get_merge_request_file_diffskills/gitlab-mcp/jmespath on tool calls (see tools/list) shrinks JSON results without changing GitLab API requests; when response masking is enabled, JMESPath runs on masked data.| @zereight/mcp-gitlab | GitLab MCP A (community CQRS-style) | GitLab official MCP server | |
|---|---|---|---|
| Best for | AI agent workflows | Enterprise multi-instance / grouped tools | Built into GitLab, no separate install |
| Tool model | 288 tools: 285 in toolsets + execute_graphql + discover_tools + help | ~50–60 grouped browse_* / manage_* tools |