Prototype · Preview: every server in the official registry, synced every 30 minutes. Reviews and accounts come in a later step.
PopNx MCPMCP servers for people who use AI · explained in plain words

GitLab MCP Server

by jmrplensversion 3.4.0i★ –iComputer or cloud
Registry nameio.github.jmrplens/gitlab-mcp-server

Install

Overview

Description from the maker (original English)

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

PopNx MCP’s three pillars

These three are never merged into one score: opinions, measurements and popularity are different things.

What you can do with it

We have not written a plain-language summary for this one yet. Below are the facts we read from the registry.

  • Connection: Computer or cloud
  • Transport: stdio, Streamable HTTP
  • Category: Developer tools
  • You need to fill in: GITLAB_TOKEN, Authorization

Install

Pick the AI app you use, then copy the settings.

Before you install

  • Basic checks: 1 of 1 passed
  • Runs on the maker’s server: what you ask it goes through their server.
  • You fill in yourself: GITLAB_URL, GITLAB_TOKEN, GITLAB_MCP_SKIP_TLS_VERIFY, GITLAB_MCP_TOOL_SURFACE, GITLAB_MCP_CAPABILITY_SURFACE, GITLAB_MCP_META_PARAM_SCHEMA, GITLAB_MCP_TIER, GITLAB_MCP_READ_ONLY, GITLAB_MCP_SAFE_MODE, GITLAB_MCP_EMBEDDED_RESOURCES, GITLAB_MCP_EXCLUDE_TOOLS, GITLAB_MCP_IGNORE_SCOPES, GITLAB_MCP_UPLOAD_MAX_FILE_SIZE, GITLAB_MCP_ALLOWED_UPLOAD_DIRS, GITLAB_MCP_ALLOWED_DOWNLOAD_DIRS, GITLAB_MCP_ALLOWED_IMPORT_DIRS, GITLAB_MCP_RATE_LIMIT_RPS, GITLAB_MCP_RATE_LIMIT_BURST, GITLAB_MCP_LOG_LEVEL, GITLAB_MCP_LANGUAGE, Authorization

Values marked secret are keys to your account. Never share them or paste them into a chat.

You need

  • Runs in the cloudNothing to install; it connects over the internet
  • npmNode.js installed (for the npx command)

Which app do you use?

Pick your app above. We remember it, so next time the button says “Install in …”.

This address needs a key in a request header, which the add-connector menu cannot set. Use Claude Code, Cursor or VS Code instead.

Or run it on your computer

Download the maker’s .mcpb file

The link goes to the maker’s own file; we do not host or repackage it. Open the file and Claude Desktop installs it.

Run this in your terminal

claude mcp add --transport http gitlab https://mcp.jmrp.io/gitlab --header 'Authorization: your-value'

Or run it on your computer

claude mcp add gitlab --env GITLAB_URL=your-value --env GITLAB_TOKEN=your-value --env GITLAB_MCP_SKIP_TLS_VERIFY=your-value --env GITLAB_MCP_TOOL_SURFACE=your-value --env GITLAB_MCP_CAPABILITY_SURFACE=your-value --env GITLAB_MCP_META_PARAM_SCHEMA=your-value --env GITLAB_MCP_TIER=your-value --env GITLAB_MCP_READ_ONLY=your-value --env GITLAB_MCP_SAFE_MODE=your-value --env GITLAB_MCP_EMBEDDED_RESOURCES=your-value --env GITLAB_MCP_EXCLUDE_TOOLS=your-value --env GITLAB_MCP_IGNORE_SCOPES=your-value --env GITLAB_MCP_UPLOAD_MAX_FILE_SIZE=your-value --env GITLAB_MCP_ALLOWED_UPLOAD_DIRS=your-value --env GITLAB_MCP_ALLOWED_DOWNLOAD_DIRS=your-value --env GITLAB_MCP_ALLOWED_IMPORT_DIRS=your-value --env GITLAB_MCP_RATE_LIMIT_RPS=your-value --env GITLAB_MCP_RATE_LIMIT_BURST=your-value --env GITLAB_MCP_LOG_LEVEL=your-value --env GITLAB_MCP_LANGUAGE=your-value -- npx -y @jmrp.io/gitlab-mcp-server

Fill in the empty values before running it.

Open in Cursor

Or copy the settings yourself

Paste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json

{
  "mcpServers": {
    "gitlab": {
      "url": "https://mcp.jmrp.io/gitlab",
      "headers": {
        "Authorization": "your-value"
      }
    }
  }
}

Or run it on your computer

Open in Cursor

Or copy the settings yourself

Paste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json

{
  "mcpServers": {
    "gitlab": {
      "command": "npx",
      "args": [
        "-y",
        "@jmrp.io/gitlab-mcp-server"
      ],
      "env": {
        "GITLAB_URL": "your-value",
        "GITLAB_TOKEN": "your-value",
        "GITLAB_MCP_SKIP_TLS_VERIFY": "your-value",
        "GITLAB_MCP_TOOL_SURFACE": "your-value",
        "GITLAB_MCP_CAPABILITY_SURFACE": "your-value",
        "GITLAB_MCP_META_PARAM_SCHEMA": "your-value",
        "GITLAB_MCP_TIER": "your-value",
        "GITLAB_MCP_READ_ONLY": "your-value",
        "GITLAB_MCP_SAFE_MODE": "your-value",
        "GITLAB_MCP_EMBEDDED_RESOURCES": "your-value",
        "GITLAB_MCP_EXCLUDE_TOOLS": "your-value",
        "GITLAB_MCP_IGNORE_SCOPES": "your-value",
        "GITLAB_MCP_UPLOAD_MAX_FILE_SIZE": "your-value",
        "GITLAB_MCP_ALLOWED_UPLOAD_DIRS": "your-value",
        "GITLAB_MCP_ALLOWED_DOWNLOAD_DIRS": "your-value",
        "GITLAB_MCP_ALLOWED_IMPORT_DIRS": "your-value",
        "GITLAB_MCP_RATE_LIMIT_RPS": "your-value",
        "GITLAB_MCP_RATE_LIMIT_BURST": "your-value",
        "GITLAB_MCP_LOG_LEVEL": "your-value",
        "GITLAB_MCP_LANGUAGE": "your-value"
      }
    }
  }
}

Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.

Open in VS Code

Or copy the settings yourself

Paste into .vscode/mcp.json in your project

{
  "servers": {
    "gitlab": {
      "type": "http",
      "url": "https://mcp.jmrp.io/gitlab",
      "headers": {
        "Authorization": "your-value"
      }
    }
  }
}

Or run it on your computer

Open in VS Code

Or copy the settings yourself

Paste into .vscode/mcp.json in your project

{
  "servers": {
    "gitlab": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "@jmrp.io/gitlab-mcp-server"
      ],
      "env": {
        "GITLAB_URL": "your-value",
        "GITLAB_TOKEN": "your-value",
        "GITLAB_MCP_SKIP_TLS_VERIFY": "your-value",
        "GITLAB_MCP_TOOL_SURFACE": "your-value",
        "GITLAB_MCP_CAPABILITY_SURFACE": "your-value",
        "GITLAB_MCP_META_PARAM_SCHEMA": "your-value",
        "GITLAB_MCP_TIER": "your-value",
        "GITLAB_MCP_READ_ONLY": "your-value",
        "GITLAB_MCP_SAFE_MODE": "your-value",
        "GITLAB_MCP_EMBEDDED_RESOURCES": "your-value",
        "GITLAB_MCP_EXCLUDE_TOOLS": "your-value",
        "GITLAB_MCP_IGNORE_SCOPES": "your-value",
        "GITLAB_MCP_UPLOAD_MAX_FILE_SIZE": "your-value",
        "GITLAB_MCP_ALLOWED_UPLOAD_DIRS": "your-value",
        "GITLAB_MCP_ALLOWED_DOWNLOAD_DIRS": "your-value",
        "GITLAB_MCP_ALLOWED_IMPORT_DIRS": "your-value",
        "GITLAB_MCP_RATE_LIMIT_RPS": "your-value",
        "GITLAB_MCP_RATE_LIMIT_BURST": "your-value",
        "GITLAB_MCP_LOG_LEVEL": "your-value",
        "GITLAB_MCP_LANGUAGE": "your-value"
      }
    }
  }
}

Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.

This address needs a key in a request header, which the add-connector menu cannot set. Use Claude Code, Cursor or VS Code instead.

Your choice stays on this device in a cookie; no account needed.

Values you fill in

  • GITLAB_URL env
    GitLab instance URL (default: https://gitlab.com; set for self-managed instances)
  • GITLAB_TOKEN secret required env
    GitLab Personal Access Token (glpat-...)
  • GITLAB_MCP_SKIP_TLS_VERIFY env
    Skip TLS certificate verification for self-signed certs (default: false)
  • GITLAB_MCP_TOOL_SURFACE env
    Tool catalog selector: dynamic, meta, or individual (default: dynamic)
  • GITLAB_MCP_CAPABILITY_SURFACE env
    Resource and prompt catalog selector: full or minimal (default: full); resource subscriptions require full
  • GITLAB_MCP_META_PARAM_SCHEMA env
    Meta-tool input schema detail: opaque, compact, or full (default: opaque)
  • GITLAB_MCP_TIER env
    GitLab tier: free/ce, premium or ultimate, used as given. When unset, detected from the instance license, then from the plans of the namespaces the token administers, then, on GitLab.com, from the to…
  • GITLAB_MCP_READ_ONLY env
    Read-only mode: removes every mutating action from the served surface; reads keep working (default: false)
  • GITLAB_MCP_SAFE_MODE env
    Safe mode: a mutating action returns a preview card naming the action and echoing its arguments instead of running; reads keep working (default: false)
  • GITLAB_MCP_EMBEDDED_RESOURCES env
    Append EmbeddedResource content blocks (clickable links to MCP resources) to get_* tool results (default: true)
  • GITLAB_MCP_EXCLUDE_TOOLS env
    Comma-separated tool names, group names or canonical action IDs to exclude, on every surface (e.g. gitlab_admin,gitlab_runner)
  • GITLAB_MCP_IGNORE_SCOPES env
    Skip the scope filter and the read_api narrowing and register all tools regardless of token permissions; a token carrying neither read_api nor api is still refused (default: false)
  • GITLAB_MCP_UPLOAD_MAX_FILE_SIZE env
    Largest local file an upload or file-reading action accepts, in bytes or with a KB, MB or GB suffix (e.g. 2GB); at most 1 TB (default: 2147483648, 2 GB)
  • GITLAB_MCP_ALLOWED_UPLOAD_DIRS env
    Extra OS path-list-separated directories an action may read a local file from; the working directory (unless it is the filesystem root or your home directory) and the OS temp directory are always all…
  • GITLAB_MCP_ALLOWED_DOWNLOAD_DIRS env
    Extra OS path-list-separated directories an action may write a downloaded file into; the working directory (unless it is the filesystem root or your home directory) and the OS temp directory are alwa…
  • GITLAB_MCP_ALLOWED_IMPORT_DIRS env
    Extra OS path-list-separated directories a project or group import archive may be read from; the working directory (unless it is the filesystem root or your home directory) and the OS temp directory…
  • GITLAB_MCP_RATE_LIMIT_RPS env
    Rate limit per credential, in requests per second, on every call that reaches GitLab, with tools/list charged to a bucket of its own; 0, the default on stdio, disables it (default: 0)
  • GITLAB_MCP_RATE_LIMIT_BURST env
    Token-bucket burst size when GITLAB_MCP_RATE_LIMIT_RPS is greater than 0 (default: 40)
  • GITLAB_MCP_LOG_LEVEL env
    Logging verbosity (default: info)
  • GITLAB_MCP_LANGUAGE env
    Language of the elicitation questions, form field titles and progress messages a client shows the user: en or es (default: en). What the model reads stays English
  • Authorization secret HTTP header
    Bearer . The endpoint runs in OAuth mode: a client that speaks the OAuth flow needs no header at all and discovers the authorization server from the 401 challenge. A GitLab personal access token also…

These settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.

What it can do

We have not read this server’s tool list yet; we check endpoints in rotation.

Basic checksi

We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 6, 2026

  • ✓ Pass

    Maker matches the repo

    The registry name was verified with the GitHub account jmrplens, which owns the repo

  • … Not checked yet

    Still maintained

    We have not read this repo from GitHub yet

  • … Not checked yet

    Has a licence

    We have not read this repo from GitHub yet

  • … Not checked yet

    Endpoint responds

    Not checked yet; we check endpoints in rotation

  • … Not checked yet

    Sign-in with OAuth

    Not checked yet; we check endpoints in rotation

  • … Not checked yet

    No hidden instructions in tool descriptions

    Not checked yet; we read the tool list when we check the endpoint

Compared with others in Developer toolsi

  • More stars than 0% of the other 1389 servers in this category
  • Published to the registry more recently than 85% of the other 1389 servers in this category
  • Basic checks equal to or better than 100% of the other 1389 servers in this category

Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.

Common questions

Is GitLab MCP Server safe?

It passed 1 of 1 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.

What keys or codes does it need?

You need to fill in: GITLAB_TOKEN, Authorization

Does it run on my computer or in the cloud?

Either way works: install it on your computer or connect to the cloud version.

Is it still maintained?

The GitHub repo last changed –, and the latest version (3.4.0) reached the registry 6 days ago.

Which apps can use it?

Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. It connects by URL, so apps that accept remote MCP servers work too, such as ChatGPT in developer mode.

What can I use instead?

In the same category: GitHub, Desktop Commander, Cloudflare MCP

Alternatives

Servers in the same category from other makers, sorted by stars.

Reading a card:★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi

GitHub

by github

GitHub’s official server lets AI read and manage code, issues and pull requests in your account. Use GitHub’s hosted version or run it locally with Docker.

Computer or cloud★ 34,245MITUpdated 3 days ago
Install

Desktop Commander

by wonderwhy-er

MCP server for terminal commands, file operations, and process management

Runs on your computer★ 10,225MITUpdated 15 days ago
Install

Cloudflare MCP

by cloudflare

Cloudflare MCP servers

Runs in the cloud★ 4,446Apache-2.0Updated 14 months ago
Install

README from the maker

Open the README

Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.

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,037 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).

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

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

export GITLAB_TOKEN=glpat-xxxx

claude 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:

npx -y @jmrp.io/gitlab-mcp-server                   # npm, nothing installed first

uvx jmrplens-gitlab-mcp-server # PyPI, nothing installed first dnx gitlab-mcp-server # NuGet (.NET 10 SDK), nothing installed first brew install jmrplens/tap/gitlab-mcp-server # Homebrew, macOS and Linux winget install --id jmrplens.gitlab-mcp-server -e # winget, Windows docker 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](https://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

Packages

Only the beginning is shown; read the rest in the repo

Ask PopNx