GitLab MCP server for projects, merge requests, issues, pipelines, wiki, releases, and more.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent โ or use 1-click editor setup below.
๐ก Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
English | ํ๊ตญ์ด | ็ฎไฝไธญๆ
๐ Documentation โ Setup guides, environment variables, and the full tool reference live on the hosted docs site.
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 โ start with a small toolset; activate more at runtime without CQRS-style groupinglist_merge_request_changed_files โ batched get_merge_request_file_diffskills/gitlab-mcp/| @zereight/mcp-gitlab | GitLab MCP A (community CQRS-style) | |
|---|---|---|
| Best for | AI agent workflows | Enterprise multi-instance / grouped tools |
| Tool model | ~232 granular tools + discover_tools | ~50โ60 grouped browse_* / manage_* tools |
| MR review | 2-step batched diff | Varies |
| Node.js | >=18.17 | Often >=24 |
| License | MIT | Varies |
Quick start: choose either Personal Access Token or OAuth2 setup below, install @zereight/mcp-gitlab, and use zereight-mcp-gitlab in your MCP client configuration.
The server supports four authentication methods:
For local/desktop use (most common):
GITLAB_PERSONAL_ACCESS_TOKEN) โ simplest setupGITLAB_USE_OAUTH) โ recommended for better securityFor server/remote deployments:
GITLAB_MCP_OAUTH) โ for remote MCP clients such as Claude.aiREMOTE_AUTHORIZATION) โ multi-user deployments where each caller provides their own tokenzereight-mcp-gitlab auth (GitLab 17.9+ device flow; 17.2โ17.8 need oauth2_device_grant_flow), then start the server with GITLAB_USE_OAUTH=true. See standalone device-flow command.For the simplest local setup, start with a Personal Access Token. For browser-based local auth, use OAuth2. For remote or multi-user deployments, continue to the MCP OAuth and Remote Authorization sections later in this README.
Install the server once:
Or with npm:
Or with Nix, by adding this flake to your own:
The store path is pinned by your lock file; update it with nix flake update gitlab-mcp.
The examples use zereight-mcp-gitlab, a less collision-prone alias for the legacy mcp-gitlab binary. If your MCP client cannot find it, use the absolute path from which zereight-mcp-gitlab.
No global install? Pin npx to the previous stable release (the version these docs recommend), for example npx -y @zereight/mcp-gitlab@2.1.59. If you always want the newest release, use npx -y @zereight/mcp-gitlab@latest instead. The server prints a notice to stderr on startup when a newer version is available (disable with GITLAB_DISABLE_VERSION_CHECK=true).
Some MCP clients (like GitHub Copilot CLI) have issues with environment variables. Use CLI arguments instead:
Available CLI arguments:
--token - GitLab Personal Access Token (replaces GITLAB_PERSONAL_ACCESS_TOKEN)--api-url - GitLab API URL (replaces GITLAB_API_URL)--read-only=true - Enable read-only mode (replaces GITLAB_READ_ONLY_MODE, deprecated โ prefer --permission-mode=readonly)--permission-mode - Permission level: readonly, modify (no delete tools), or full (replaces GITLAB_PERMISSION_MODE, default full)--use-wiki=true - Enable wiki API (replaces USE_GITLAB_WIKI, legacy โ prefer GITLAB_TOOLSETS=wiki)--use-milestone=true - Enable milestone API (replaces USE_MILESTONE, legacy โ prefer GITLAB_TOOLSETS=milestones)--use-pipeline=true - Enable pipeline API (replaces USE_PIPELINE, legacy โ prefer GITLAB_TOOLSETS=pipelines)--disable-version-check=true - Disable the startup new-version notice (replaces GITLAB_DISABLE_VERSION_CHECK)CLI arguments take precedence over environment variables.
zereight-mcp-gitlab auth is a subcommand (not an MCP server flag). It runs GitLab device flow and exits. See CLI Arguments.
Fine-grained tool filtering: use
GITLAB_PERMISSION_MODE=modifyto allow create/update while blocking every delete tool (including delete mutations throughexecute_graphqlandpush_filesdelete/moveactions), orGITLAB_PERMISSION_MODE=readonlyfor read-only access. You can also enable toolset groups withGITLAB_TOOLSETS=<group,โฆ>, allow-list individual tools withGITLAB_TOOLS=<tool,โฆ>(e.g. read-only groups plus a few specific write tools), and deny-list by pattern withGITLAB_DENIED_TOOLS_REGEX. The legacyUSE_GITLAB_WIKI/USE_MILESTONE/USE_PIPELINEflags are kept for backward compatibility only. See Tools Reference and Environment Variables.
No reviews yet โ be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/gitlab-mcp)<a href="https://allmcps.com/mcp/gitlab-mcp"><img src="https://allmcps.com/api/badge/gitlab-mcp?style=directory" alt="Gitlab MCP on AllMCPs" /></a>