GitLab MCP Server
GitLab resources management through stdio, SSE, and Streamable HTTP transports.
Data last scanned today · Reviewed today
Overview
This TypeScript-based server facilitates agent-driven interaction with GitLab instances. It exposes extensive functionality for managing projects, merge requests, issues, pipelines, wikis, releases, tags, and milestones. The architecture is designed for adaptability, supporting various authentication methods including Personal Access Tokens, OAuth2, and remote authorization. It differentiates itself by offering over 200 tools with dynamic discovery, allowing agents to selectively enable functionality at runtime. It is built for versatility across deployment environments, supporting both local stdio connections and remote SSE or Streamable HTTP configurations.
Our verdict
With a security score of 53/100, this tool carries a high risk level. The score reflects that the server is community-maintained rather than official and lacks an independent editorial security review, meaning users should exercise caution regarding the authentication methods and potential data access. It is suitable for developers comfortable auditing community-sourced code but should be avoided in high-security environments until read-only modes and auth flows are verified.
- Large community footprint with 1955 GitHub stars
- Active development with commits within the last 24 hours
- Lean supply-chain profile with only 15 direct dependencies
- Supports multiple transport protocols including SSE and HTTP
- Security risk level is high due to community-only maintenance
- Authentication methods and read-only modes remain unverified
- Lacks official vendor support or auditing
Setup
{
"mcpServers": {
"gitlab-mcp": {
"args": [
"-y",
"@zereight/mcp-gitlab"
],
"command": "npx"
}
}
}Paste into ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows), then restart Claude Desktop. Some servers require API keys or tokens as environment variables — check the project's README and add an "env" object if needed.
- No read-only mode — running this grants full read/write access.
- No built-in authentication — anyone with access to this config can invoke every tool it exposes.
Tools
| Tool | Description | Risk |
|---|---|---|
| create_pipeline_schedule_variable | Create a variable for a pipeline schedule | medium |
| update_pipeline_schedule_variable | Update a variable of a pipeline schedule | medium |
| delete_pipeline_schedule_variable | Delete a variable from a pipeline schedule | high |
| play_pipeline_job | Run a manual pipeline job | medium |
| play_pipeline_jobs | Play multiple manual pipeline jobs sequentially | medium |
| retry_pipeline_job | Retry a failed or canceled pipeline job | medium |
| cancel_pipeline_job | Cancel a running pipeline job | medium |
| erase_pipeline_job | Erase a pipeline job log and artifacts | high |
| wait_for_pipeline | Wait for a pipeline to reach a terminal status | low |
| wait_for_job | Wait for a job to reach a terminal status | low |
Compatibility
| Client | Local | Docker | Remote | Read-only |
|---|---|---|---|---|
| Claude Desktop | ||||
| Cursor | ||||
| VS Code | ||||
| Windsurf | ||||
| ChatGPT |
Frequently asked questions
›What authentication methods does the server support?
The server supports Personal Access Tokens, local OAuth2 browser flows, OAuth2 via an MCP proxy, and per-request remote authorization.
›Does this server support custom GitLab instances?
Yes, the server is designed for self-hosting and supports custom GitLab instances, proxy settings, and dynamic API URL routing.
›Which transport protocols are available for connecting to the server?
The server supports stdio for local clients, SSE for legacy clients, and Streamable HTTP for modern remote deployments.
›What are the Node.js version requirements?
The server requires Node.js version 18.17 or higher.
›How can I perform OAuth2 authentication without a localhost callback?
You can use the standalone device flow command by running 'zereight-mcp-gitlab auth' and then starting the server with the environment variable 'GITLAB_USE_OAUTH=true'.
Alternatives
Changelog
Badge
Maintain this server? Add the live badge to your README.