[](https://github.com/jmrplens/gitlab-mcp-server/releases/latest) [](https://www.npmjs.com/package/@jmrp.io/gitlab-mcp-server) [](https://pypi.org/project/jmrplens-gitlab-mcp-server/) [](https://www.nuget.org/packages/gitlab-mcp-server) [](LICENSE)  [](https://github.com/jmrplens/gitlab-mcp-server/actions/workflows/ci.yml) [](https://sonarcloud.io/summary/overall?id=jmrplens_gitlab-mcp-server) [](https://sonarcloud.io/summary/overall?id=jmrplens_gitlab-mcp-server) [](https://pkg.go.dev/github.com/jmrplens/gitlab-mcp-server/v3)
[](https://glama.ai/mcp/servers/jmrplens/gitlab-mcp-server) [](https://lobehub.com/mcp/jmrplens-gitlab-mcp-server) [](https://mcptoplist.com/server/io.github.jmrplens%2Fgitlab-mcp-server) [](https://cursor.directory/plugins/gitlab-mcp-server) [](https://mcp.jmrp.io/)
**All of GitLab for your AI assistant.** Up to 1,103 actions over GitLab's REST and GraphQL APIs, from Free to Ultimate and on GitLab.com, in one self-contained binary that works with Claude, Cursor, VS Code, Codex and any other MCP client. You ask in plain language; it does the GitLab work. **11,343 tokens of startup context by default, the same on every GitLab tier (1,941 with `GITLAB_MCP_CAPABILITY_SURFACE=minimal`).** Two tools reach the whole catalog, where listing every tool as its own costs from 576,788 to 734,051 tokens. Measured with the cl100k_base tokenizer and checked in CI. [How it is measured](https://docs.jmrp.io/gitlab-mcp-server/tools/dynamic-tools/#how-much-startup-context-does-dynamic-mode-save) > "Review merge request !15: is it safe to merge?" · "Why did the last pipeline fail?" · "List open issues assigned to me" · "Generate release notes from v1.0 to v2.0" ## Why this server - **Every tier and every instance.** Free/CE, Premium and Ultimate, self-managed or GitLab.com with its Orbit knowledge graph. The tier is detected and the catalog follows it. - **The token you already have.** A personal, project or group access token with `api`, or `read_api` for the actions GitLab accepts from it; a fine-grained token, judged action by action from its grant; OAuth in HTTP mode. Each action's [tool reference](https://docs.jmrp.io/gitlab-mcp-server/reference/tools/) entry says which scope and which fine-grained permissions it needs. - **Guard rails.** Read-only mode, safe mode (a preview of each write instead of the write), tools excluded by name, and a confirmation before anything destructive. - **Three surfaces, two transports.** Two discovery tools by default, one tool per domain or one per action; stdio for a desktop client, or HTTP for a shared deployment that keeps each credential apart. 45 resources and 37 prompts besides. - **Releases you can verify.** Signed checksums, an SBOM per binary and build provenance for every artifact. ## Install The buttons register the Docker image, so they need [Docker](https://www.docker.com/); the Claude Desktop row downloads a native extension instead. Create a [personal access token](https://docs.gitlab.com/user/profile/personal_access_tokens/) with the `api` scope (or `read_api` for the actions GitLab accepts from it; add `GITLAB_MCP_READ_ONLY=true` when nothing may be written).| Client | One-click button | Token step |
|---|---|---|
| VS Code | prompts you (masked) | |
| Cursor | edit YOUR_GITLAB_TOKEN |
|
| LM Studio | edit YOUR_GITLAB_TOKEN |
|
| Kiro | edit YOUR_GITLAB_TOKEN |
|
| Claude Desktop | settings UI |