GitLab MCP Server

io.github.jmrplensPublished by GitHub account jmrplensv3.4.0Updated Oct 31, 2026

Go MCP server for GitLab: 2 dynamic tools reach ~876 actions on Free/CE, up to ~1103 on Ultimate.

The publisher's own server: Gitlab

VerifiedStreamable HTTPWeb executableProductivity & WorkflowDeveloper Tools

Overview

AI-generated overview

GitLab MCP server exposing two discovery tools that reach hundreds of GitLab actions across projects, merge requests, issues, pipelines, releases and more.

What you can do
  • Search the local action catalog to find action IDs, schemas and examples
  • Run any GitLab action by canonical ID: projects, groups, members and uploads
  • Work with merge requests, issues, branches, tags, commits, files and wiki pages
  • Create releases, publish packages and link release assets
  • Watch single resources for change notifications instead of polling
When to use it
Useful when an assistant should work directly with a GitLab instance — reviewing merge requests, triaging issues, inspecting pipelines, managing branches and files, or publishing releases — on GitLab.com or self-managed, Free through Ultimate.
Requirements
A GitLab personal, project or group access token with api or read_api scope, passed as GITLAB_TOKEN; GITLAB_URL for self-managed instances. Runs as a local process (npm, PyPI, NuGet, Homebrew, winget, Docker or a desktop extension) or as a hosted HTTP endpoint with OAuth. Network access to the GitLab instance.
Before you install
The token grants whatever its scopes allow, and writes, deletions and destructive actions are possible unless GITLAB_MCP_READ_ONLY or GITLAB_MCP_SAFE_MODE is enabled; destructive actions require confirm=true. The hosted endpoint at mcp.jmrp.io receives your token and every request, so self-host to keep credentials local. Upload and download actions read and write local files within configured directories.

Installation

In SourceWeft

  1. Open GitLab MCP Server in the dashboard and add it to a workspace.
  2. Connect the required credentials. They are stored privately and never shown on public pages.
  3. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/io.github.jmrplens%2Fgitlab-mcp-server/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config. The client completes OAuth sign-in on first connect.

{
  "mcpServers": {
    "gitlab": {
      "type": "http",
      "url": "https://mcp.jmrp.io/gitlab"
    }
  }
}

README

[GitLab MCP Server: GitLab for your AI assistant, one action catalog, three MCP tool surfaces]

GitLab MCP Server

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,396 tokens of startup context by default, the same on every GitLab tier (1,994 with GITLAB_MCP_CAPABILITY_SURFACE=minimal). Two tools reach the whole catalog, where listing every tool as its own costs from 558,319 to 715,378 tokens. Measured with the cl100k_base tokenizer and checked in CI. How it is measured

"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 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; the Claude Desktop row downloads a native extension instead. Create a personal access token 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).

ClientOne-click buttonToken step
VS Code[Install in VS Code] [Install in VS Code Insiders]prompts you (masked)
Cursor[Install in Cursor]edit YOUR_GITLAB_TOKEN
LM Studio[Add to LM Studio]edit YOUR_GITLAB_TOKEN
Kiro[Add to Kiro]edit YOUR_GITLAB_TOKEN
Claude Desktop[Download the .mcpb extension]settings UI

Claude Code. The registration command never carries the token: -e GITLAB_TOKEN forwards it from the environment Claude Code hands docker.

bash
export GITLAB_TOKEN=glpat-xxxxclaude mcp add gitlab --transport stdio \  -- docker run -i --rm -e GITLAB_TOKEN ghcr.io/jmrplens/gitlab-mcp-server:latest

Any other client runs one of these as the server's command, with GITLAB_TOKEN in the environment it passes:

bash
npx -y @jmrp.io/gitlab-mcp-server                   # npm, nothing installed firstuvx jmrplens-gitlab-mcp-server                      # PyPI, nothing installed firstdnx gitlab-mcp-server                               # NuGet (.NET 10 SDK), nothing installed firstbrew install jmrplens/tap/gitlab-mcp-server         # Homebrew, macOS and Linuxwinget install --id jmrplens.gitlab-mcp-server -e   # winget, Windowsdocker run -i --rm -e GITLAB_TOKEN ghcr.io/jmrplens/gitlab-mcp-server:latest

For a self-managed instance, set GITLAB_URL=https://gitlab.example.com beside the token; with the Docker image, also forward it by adding -e GITLAB_URL to the docker arguments, since the container receives only the variables named there (Docker install). Every channel, per-client configuration and verification step is in the installation guide, and an assistant installing it for you will find the same in llms.txt.

To try it first, a public instance runs at https://mcp.jmrp.io/gitlab, and the browser inspector calls it read-only after an OAuth sign-in. Your token and every request pass through that machine, so run it yourself to keep using it; the hosted endpoint page says what it is and is not.

Documentation

Everything else is at docs.jmrp.io/gitlab-mcp-server, in English and Spanish: getting started, configuration, tool surfaces, HTTP server mode, security, privacy and troubleshooting.

Packages and listings

Contributing, security and licence

Contributions are welcome here on GitHub; CONTRIBUTING.md describes the workflow and how a change is reviewed, and CODE_OF_CONDUCT.md applies. GOVERNANCE.md says how decisions are made and who holds which role, and the roadmap says where the project is going. Report a vulnerability privately, as SECURITY.md describes. The server is MIT licensed (LICENSE).


Maintained by José M. Requena Plens · Project page · Hosted instance: mcp.jmrp.io/gitlab

Source: README.md at commit a8c79c8

Tools

2

gitlab_execute_action

GitLab Execute Action

Execute one GitLab catalog action by canonical ID or alias. Always pass params as an object. Destructive actions require top-level confirm=true. Use find first only when action or params are unclear. Example: {"action":"issue.list","params":{"project_id":"group/project"}}

Parametersactionrequiredparamsrequiredconfirm

gitlab_find_action

GitLab Find Action

Search the local GitLab action catalog. Read-only and no GitLab API call. Use when the action ID or params are unclear. Returns schemas, hints, destructive flags, and execute examples. Example: {"query":"issue list"}

Parameterslimitqueryrequiredexplain

Version history

5
  1. v3.4.0LatestOct 31, 2026
  2. v3.3.0Oct 20, 2026
  3. v3.2.0Oct 9, 2026
  4. v3.1.0Oct 1, 2026
  5. v3.0.0Sep 16, 2026

Score

100% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listed15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts

Other Gitlab integrations