AgentHubAgentHub

GitLab MCP Setup & Guide

MCP ServerMCP RegistryOfficial

io.github.jmrplens/gitlab-mcp-server · v3.1.0

Go MCP server for GitLab: 2 dynamic tools reach 1000+ REST/GraphQL actions. Free/CE, no paid tier.

Copy the install config on this page first, then verify docs and permissions upstream.

Overview

Go MCP server for GitLab: 2 dynamic tools reach 1000+ REST/GraphQL actions. Free/CE, no paid tier. GitLab MCP Server is a MCP Server listed from MCP Registry. Transports: streamable-http, stdio. This page includes an overview, setup tutorial, install commands, and use cases for Trae, Tongyi Lingma, Cursor, Claude Code, and VS Code.

Use cases

AgentHub Verified AvailabilityTested & Ready

Automated pipeline validated install commands, protocol & client compatibility

Verified At2026-10-04
Install Snippets TestedCLI & JSON config syntax verified
Protocol Handshake ReadyComplies with JSON-RPC 2.0 specifications
Origin Registry ActiveSourced from official-mcp-registry
Verified ClientsClaude Code、Claude Desktop、Cursor 等
Security Tier: A+ 级 · 官方认证推荐 (A+)·Maintained by official/verified teams, audited for standard MCP protocol compliance.

Copy by platform

Choose your platform

  1. Open or create .cursor/mcp.json in your project root
  2. Click Copy config and paste; merge only this mcpServers entry if others exist
  3. Replace <placeholders> in env with real secrets (see Environment variables below)
  4. Save, then Cmd+Shift+P → Reload Window

Pre-fill Environment Variables (Optional)

Requiredsecret
Requiredsecret
Requiredsecret
Requiredsecret
Requiredsecret
Requiredsecret
Privacy Guarantee: Keys are replaced 100% locally in your browser memory and are NEVER uploaded or stored on any server.
Click to copy snippet
{
  "mcpServers": {
    "gitlab-mcp-server": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "ghcr.io/jmrplens/gitlab-mcp-server:3.1.0@sha256:87e483299a2663a7a5d4d28679859b0c7fba2b1a421b7de2652441a569d4a2fc"
      ],
      "env": {
        "GITLAB_TOKEN": "<GITLAB_TOKEN>"
      }
    }
  }
}

Setup tutorial

  1. Open the GitLab MCP Server page and confirm this MCP Server (source: MCP Registry).
  2. Copy the Cursor, Claude Code, or VS Code snippet.
  3. Merge it into mcpServers and replace env placeholders with real secrets.
  4. Reload the window, then call the MCP tools from your agent chat.

Install commands

Install commands and setup steps are in the HTML so search engines and no-JS browsers can read them without running client JavaScript.

Claude Code (remote)

  1. Install Claude Code CLI (claude must work in your terminal)
  2. Click Copy config below, paste into terminal, and run
  3. Restart Claude Code after it succeeds
claude mcp add --transport http gitlab-mcp-server https://mcp.jmrp.io/gitlab

Cursor — .cursor/mcp.json (remote)

  1. Open or create .cursor/mcp.json in your project root
  2. Click Copy config and paste; if you already have MCPs, merge only this entry under mcpServers
  3. Save, then Cmd+Shift+P (Ctrl+Shift+P on Windows) → Reload Window
{
  "mcpServers": {
    "gitlab-mcp-server": {
      "url": "https://mcp.jmrp.io/gitlab"
    }
  }
}

VS Code — .vscode/mcp.json (remote)

  1. Install GitHub Copilot in VS Code with MCP support
  2. Open or create .vscode/mcp.json in your project root
  3. Click Copy config and paste; merge only this mcpServers entry if others exist
  4. Save and Developer: Reload Window
{
  "mcpServers": {
    "gitlab-mcp-server": {
      "url": "https://mcp.jmrp.io/gitlab"
    }
  }
}

Claude Desktop — claude_desktop_config.json (remote)

  1. Open Claude Desktop config: macOS ~/Library/Application Support/Claude/claude_desktop_config.json; Windows %APPDATA%\Claude\claude_desktop_config.json
  2. Click Copy config and merge under mcpServers
  3. Fully quit and restart Claude Desktop
{
  "mcpServers": {
    "gitlab-mcp-server": {
      "url": "https://mcp.jmrp.io/gitlab"
    }
  }
}

Trae — .trae/mcp.json (remote)

  1. Trae → Settings → MCP, or edit .trae/mcp.json (project) / global mcp.json
  2. Use Manual add / Raw JSON, click Copy config and paste; merge only this mcpServers entry
  3. Save, pick an MCP-capable agent (e.g. Builder with MCP), reload window if needed
{
  "mcpServers": {
    "gitlab-mcp-server": {
      "url": "https://mcp.jmrp.io/gitlab"
    }
  }
}

Cherry Studio — MCP settings (remote)

  1. Cherry Studio → Settings → MCP Servers
  2. Add via JSON import or SSE/HTTP with the URL
  3. Click Copy config, paste the mcpServers entry, then enable the server
{
  "mcpServers": {
    "gitlab-mcp-server": {
      "url": "https://mcp.jmrp.io/gitlab"
    }
  }
}

Tongyi Lingma — MCP config (remote)

  1. Tongyi Lingma: avatar → Settings → MCP (agent mode; plugin ~v2.5+)
  2. Click + → config file or manual SSE/HTTP with the service URL
  3. Click Copy config and merge JSON; a healthy icon means connected
{
  "mcpServers": {
    "gitlab-mcp-server": {
      "url": "https://mcp.jmrp.io/gitlab"
    }
  }
}

Cline — MCP Servers (remote)

  1. VS Code Cline panel → settings gear → MCP Servers
  2. Click Copy config and paste the mcpServers entry into Cline
  3. Save; Cline reconnects and shows tools
{
  "mcpServers": {
    "gitlab-mcp-server": {
      "url": "https://mcp.jmrp.io/gitlab"
    }
  }
}

WorkBuddy — .workbuddy/mcp.json (remote)

  1. WorkBuddy: sidebar Plugins → MCP Servers → Configure MCP; or edit ~/.workbuddy/mcp.json (user) / .workbuddy/mcp.json (project)
  2. Click Copy config and merge under mcpServers (Tencent WorkBuddy / CodeBuddy)
  3. Save; status should turn green — fully restart the client if needed
{
  "mcpServers": {
    "gitlab-mcp-server": {
      "url": "https://mcp.jmrp.io/gitlab"
    }
  }
}

Windsurf — mcp_config.json (remote)

  1. Edit ~/.codeium/windsurf/mcp_config.json (Windows: %USERPROFILE%\.codeium\windsurf\mcp_config.json)
  2. Click Copy config and merge; remote MCP must use serverUrl (not url)
  3. Save and refresh MCP in Windsurf Cascade
{
  "mcpServers": {
    "gitlab-mcp-server": {
      "serverUrl": "https://mcp.jmrp.io/gitlab"
    }
  }
}

Claude Code (local)

  1. Install Claude Code CLI
  2. Copy the command below, replace <placeholders> with real env values, then run in terminal
  3. See Environment variables below if listed
claude mcp add gitlab-mcp-server --env GITLAB_TOKEN=<GITLAB_TOKEN> -- docker run -i --rm ghcr.io/jmrplens/gitlab-mcp-server:3.1.0@sha256:87e483299a2663a7a5d4d28679859b0c7fba2b1a421b7de2652441a569d4a2fc

Cursor — .cursor/mcp.json (local)

  1. Open or create .cursor/mcp.json in your project root
  2. Click Copy config and paste; merge only this mcpServers entry if others exist
  3. Replace <placeholders> in env with real secrets (see Environment variables below)
  4. Save, then Cmd+Shift+P → Reload Window
{
  "mcpServers": {
    "gitlab-mcp-server": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "ghcr.io/jmrplens/gitlab-mcp-server:3.1.0@sha256:87e483299a2663a7a5d4d28679859b0c7fba2b1a421b7de2652441a569d4a2fc"
      ],
      "env": {
        "GITLAB_TOKEN": "<GITLAB_TOKEN>"
      }
    }
  }
}

VS Code — .vscode/mcp.json (local)

  1. Install GitHub Copilot in VS Code with MCP support
  2. Open or create .vscode/mcp.json in your project root
  3. Click Copy config and paste; merge only this mcpServers entry if others exist
  4. Replace <placeholders> in env with real secrets
  5. Save and Developer: Reload Window
{
  "mcpServers": {
    "gitlab-mcp-server": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "ghcr.io/jmrplens/gitlab-mcp-server:3.1.0@sha256:87e483299a2663a7a5d4d28679859b0c7fba2b1a421b7de2652441a569d4a2fc"
      ],
      "env": {
        "GITLAB_TOKEN": "<GITLAB_TOKEN>"
      }
    }
  }
}

Claude Desktop — claude_desktop_config.json (local)

  1. Open Claude Desktop claude_desktop_config.json (see remote guide for paths)
  2. Click Copy config and merge under mcpServers
  3. Replace <placeholders> in env with real secrets
  4. Fully quit and restart Claude Desktop
{
  "mcpServers": {
    "gitlab-mcp-server": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "ghcr.io/jmrplens/gitlab-mcp-server:3.1.0@sha256:87e483299a2663a7a5d4d28679859b0c7fba2b1a421b7de2652441a569d4a2fc"
      ],
      "env": {
        "GITLAB_TOKEN": "<GITLAB_TOKEN>"
      }
    }
  }
}

Trae — .trae/mcp.json (local)

  1. Trae → Settings → MCP, or edit .trae/mcp.json / global mcp.json
  2. Click Copy config and merge mcpServers
  3. Replace <placeholders> in env with real secrets
  4. Save and reload Trae
{
  "mcpServers": {
    "gitlab-mcp-server": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "ghcr.io/jmrplens/gitlab-mcp-server:3.1.0@sha256:87e483299a2663a7a5d4d28679859b0c7fba2b1a421b7de2652441a569d4a2fc"
      ],
      "env": {
        "GITLAB_TOKEN": "<GITLAB_TOKEN>"
      }
    }
  }
}

Cherry Studio — MCP settings (local)

  1. Cherry Studio → Settings → MCP Servers → Add (STDIO)
  2. Or import JSON: click Copy config and merge mcpServers
  3. Replace <placeholders> in env; ensure Node.js / uv (npx, uvx) are installed
  4. Enable the server and check tools load
{
  "mcpServers": {
    "gitlab-mcp-server": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "ghcr.io/jmrplens/gitlab-mcp-server:3.1.0@sha256:87e483299a2663a7a5d4d28679859b0c7fba2b1a421b7de2652441a569d4a2fc"
      ],
      "env": {
        "GITLAB_TOKEN": "<GITLAB_TOKEN>"
      }
    }
  }
}

Tongyi Lingma — MCP config (local)

  1. Lingma Settings → MCP → + → STDIO or config file
  2. Click Copy config and merge mcpServers
  3. Replace <placeholders> in env; need Node.js 18+ (npx) or uv (uvx)
  4. Confirm connected before using tools in agent chat
{
  "mcpServers": {
    "gitlab-mcp-server": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "ghcr.io/jmrplens/gitlab-mcp-server:3.1.0@sha256:87e483299a2663a7a5d4d28679859b0c7fba2b1a421b7de2652441a569d4a2fc"
      ],
      "env": {
        "GITLAB_TOKEN": "<GITLAB_TOKEN>"
      }
    }
  }
}

Windsurf — mcp_config.json (local)

  1. Edit ~/.codeium/windsurf/mcp_config.json
  2. Click Copy config and merge mcpServers (stdio same as Cursor)
  3. Replace <placeholders> in env, save, refresh Cascade
{
  "mcpServers": {
    "gitlab-mcp-server": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "ghcr.io/jmrplens/gitlab-mcp-server:3.1.0@sha256:87e483299a2663a7a5d4d28679859b0c7fba2b1a421b7de2652441a569d4a2fc"
      ],
      "env": {
        "GITLAB_TOKEN": "<GITLAB_TOKEN>"
      }
    }
  }
}

Cline — MCP Servers (local)

  1. Cline panel → Settings → MCP Servers
  2. Click Copy config and merge
  3. Replace <placeholders> in env, then save
{
  "mcpServers": {
    "gitlab-mcp-server": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "ghcr.io/jmrplens/gitlab-mcp-server:3.1.0@sha256:87e483299a2663a7a5d4d28679859b0c7fba2b1a421b7de2652441a569d4a2fc"
      ],
      "env": {
        "GITLAB_TOKEN": "<GITLAB_TOKEN>"
      }
    }
  }
}

WorkBuddy — .workbuddy/mcp.json (local)

  1. Edit ~/.workbuddy/mcp.json (user) or project .workbuddy/mcp.json
  2. Or Plugins → MCP Servers → Configure MCP and paste the JSON below
  3. Replace <placeholders> in env; on Windows prefer absolute paths for command/scripts
  4. Save, restart WorkBuddy, confirm connector status is green
{
  "mcpServers": {
    "gitlab-mcp-server": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "ghcr.io/jmrplens/gitlab-mcp-server:3.1.0@sha256:87e483299a2663a7a5d4d28679859b0c7fba2b1a421b7de2652441a569d4a2fc"
      ],
      "env": {
        "GITLAB_TOKEN": "<GITLAB_TOKEN>"
      }
    }
  }
}

Troubleshooting & Common ErrorsFAQ

Common connection errors and verified fixes for GitLab MCP Server

Getting 'connection closed' or exit code 1 in Cursor / Claude Code for GitLab MCP Server?

Usually caused by missing runtime paths or IDE environment inheritance. Fix steps: 1. Verify Node.js 18+ (npx) or Python 3.10+ (uvx) is installed; 2. Run 'which npx' or 'which uvx' in terminal, and replace 'command' with absolute path; 3. Reload or restart the client window after modifying config.

Fix Snippet
# Check binary path in terminal:
which npx
node -v
Getting 'spawn npx ENOENT' or 'command not found'?

The editor background process does not inherit your full terminal PATH. Solution: Globally install the package, or set the absolute binary path (e.g. C:\Program Files\nodejs\npx.cmd on Windows, or /usr/local/bin/npx on macOS).

Missing required environment variable or authentication failure?

GitLab MCP Server requires environment variables (GITLAB_TOKEN、GITLAB_TOKEN、GITLAB_TOKEN、GITLAB_TOKEN、GITLAB_TOKEN、GITLAB_TOKEN). Ensure you have added valid keys under the 'env' object in your config file without trailing whitespace.

Fix Snippet
// .cursor/mcp.json 或 claude_desktop_config.json
{
  "env": {
    "GITLAB_TOKEN": "your_actual_key_here"
  }
}

Tool Mock Playground

Sandbox

GitLab MCP Server Tool Interface Simulation · Preview tool schema & outputs without local runtime

Sandbox Ready
fn: gitlab_mcp_serverExecute the core tool interface of GitLab MCP Server
Request ArgumentsJSON Schema
{
  "target": "GitLab MCP Server",
  "action": "execute",
  "options": {
    "mode": "standard",
    "timeoutMs": 5000
  }
}
💡Parameters generated dynamically by Agent runtime
Agent Tool Output

Click 'Run Mock' above

to preview the raw response returned to the LLM

Env: AgentHub Virtual SandboxJSON-RPC 2.0

Decision Guide: Why & When to Use

Assess suitability before installing to save trial-and-error time

Best Suited For
  • PR review
  • Changelog generation
  • Cross-repo issue search
When NOT to Use
  • Replacing human security audit
  • Unauthorized repo access
Recommended Workflow Pairing:View Scenario →

GitLab MCP Server + Scenario Prompt → Complete Agent Automation

MCP hands-on: install to visible results

Follow the full lab (expected UI/output + contrast checks). After installing this item, verify with the tutorial prompts.

Open tutorial →

Related resources

Often paired with

Keep exploring AgentHub

Most people compare similar tools or check scenario guides before installing—start here.

Listing badge: put AgentHub on your site

Copy either snippet into your project homepage, docs, or GitHub README. The badge is a hotlinked SVG — nothing to host — and it links back to this page so visitors can find the install steps.

PreviewListed on AgentHub: GitLab MCP Server
HTML
<a href="https://myagenthub.cn/p/io.github.jmrplens/gitlab-mcp-server" title="Listed on AgentHub: GitLab MCP Server" target="_blank" rel="noopener">
  <img src="https://myagenthub.cn/badge/io.github.jmrplens/gitlab-mcp-server?lang=en" alt="Listed on AgentHub: GitLab MCP Server" height="20" style="border:0"/>
</a>
Markdown (GitHub README)
[![Listed on AgentHub: GitLab MCP Server](https://myagenthub.cn/badge/io.github.jmrplens/gitlab-mcp-server?lang=en)](https://myagenthub.cn/p/io.github.jmrplens/gitlab-mcp-server)

Badges are generated on the fly from /badge/<package-id>, so name and listing changes propagate automatically. Keep the link target unchanged — it is what counts as the referral.

Unified Manifest

{
  "id": "io.github.jmrplens/gitlab-mcp-server",
  "type": "mcp-server",
  "version": "3.1.0",
  "displayName": "GitLab MCP Server",
  "description": "Go MCP server for GitLab: 2 dynamic tools reach 1000+ REST/GraphQL actions. Free/CE, no paid tier.",
  "repository": {
    "url": "https://github.com/jmrplens/gitlab-mcp-server",
    "source": "github"
  },
  "homepage": "https://jmrp.io/docs/gitlab-mcp-server",
  "distribution": {
    "packages": [
      {
        "registryType": "mcpb",
        "identifier": "https://github.com/jmrplens/gitlab-mcp-server/releases/download/v3.1.0/gitlab-mcp-server.mcpb",
        "version": "3.1.0",
        "transport": "stdio",
        "environmentVariables": [
          {
            "name": "GITLAB_URL",
            "description": "GitLab instance URL (default: https://gitlab.com; set for self-managed instances)"
          },
          {
            "name": "GITLAB_TOKEN",
            "description": "GitLab Personal Access Token (glpat-...)",
            "isRequired": true,
            "isSecret": true
          },
          {
            "name": "GITLAB_MCP_SKIP_TLS_VERIFY",
            "description": "Skip TLS certificate verification for self-signed certs (default: false)"
          },
          {
            "name": "GITLAB_MCP_TOOL_SURFACE",
            "description": "Tool catalog selector: dynamic, meta, or individual (default: dynamic)"
          },
          {
            "name": "GITLAB_MCP_CAPABILITY_SURFACE",
            "description": "Resource and prompt catalog selector: full or minimal (default: full); resource subscriptions require full"
          },
          {
            "name": "GITLAB_MCP_META_PARAM_SCHEMA",
            "description": "Meta-tool input schema detail: opaque, compact, or full (default: opaque)"
          },
          {
            "name": "GITLAB_MCP_TIER",
            "description": "GitLab edition tier: free/ce, premium, or ultimate. When unset, detected from GET /license (fallback free). Gates Premium/Ultimate tools; GitLab.com Ultimate also exposes Orbit Knowledge Graph tools. Replaces the deprecated GITLAB_ENTERPRISE boolean"
          },
          {
            "name": "GITLAB_MCP_READ_ONLY",
            "description": "Read-only mode: disables all mutating tools (default: false)"
          },
          {
            "name": "GITLAB_MCP_SAFE_MODE",
            "description": "Safe mode: intercepts mutating tools and returns a JSON preview instead of executing (default: false)"
          },
          {
            "name": "GITLAB_MCP_EMBEDDED_RESOURCES",
            "description": "Append EmbeddedResource content blocks (clickable links to MCP resources) to get_* tool results (default: true)"
          },
          {
            "name": "GITLAB_MCP_EXCLUDE_TOOLS",
            "description": "Comma-separated tool names, group names or canonical action IDs to exclude, on every surface (e.g. gitlab_admin,gitlab_runner)"
          },
          {
            "name": "GITLAB_MCP_IGNORE_SCOPES",
            "description": "Skip Personal Access Token scope detection and register all tools regardless of token permissions (default: false)"
          },
          {
            "name": "GITLAB_MCP_UPLOAD_MAX_FILE_SIZE",
            "description": "Maximum attachment upload size in bytes or human-readable (e.g. 2GB). Default: 2147483648 (2 GB)"
          },
          {
            "name": "GITLAB_MCP_ALLOWED_IMPORT_DIRS",
            "description": "Extra OS path-list-separated directories allowed for local GitLab import archives"
          },
          {
            "name": "GITLAB_MCP_RATE_LIMIT_RPS",
            "description": "Per-server tools/call rate limit in requests per second; 0 disables it (default: 0)"
          },
          {
            "name": "GITLAB_MCP_RATE_LIMIT_BURST",
            "description": "Token-bucket burst size when GITLAB_MCP_RATE_LIMIT_RPS is greater than 0 (default: 40)"
          },
          {
            "name": "GITLAB_MCP_LOG_LEVEL",
            "description": "Logging verbosity (default: info)"
          }
        ]
      },
      {
        "registryType": "oci",
        "identifier": "ghcr.io/jmrplens/gitlab-mcp-server:3.1.0@sha256:87e483299a2663a7a5d4d28679859b0c7fba2b1a421b7de2652441a569d4a2fc",
        "transport": "stdio",
        "environmentVariables": [
          {
            "name": "GITLAB_URL",
            "description": "GitLab instance URL (default: https://gitlab.com; set for self-managed instances)"
          },
          {
            "name": "GITLAB_TOKEN",
            "description": "GitLab Personal Access Token (glpat-...)",
            "isRequired": true,
            "isSecret": true
          },
          {
            "name": "GITLAB_MCP_SKIP_TLS_VERIFY",
            "description": "Skip TLS certificate verification for self-signed certs (default: false)"
          },
          {
            "name": "GITLAB_MCP_TOOL_SURFACE",
            "description": "Tool catalog selector: dynamic, meta, or individual (default: dynamic)"
          },
          {
            "name": "GITLAB_MCP_CAPABILITY_SURFACE",
            "description": "Resource and prompt catalog selector: full or minimal (default: full); resource subscriptions require full"
          },
          {
            "name": "GITLAB_MCP_META_PARAM_SCHEMA",
            "description": "Meta-tool input schema detail: opaque, compact, or full (default: opaque)"
          },
          {
            "name": "GITLAB_MCP_TIER",
            "description": "GitLab edition tier: free/ce, premium, or ultimate. When unset, detected from GET /license (fallback free). Gates Premium/Ultimate tools; GitLab.com Ultimate also exposes Orbit Knowledge Graph tools. Replaces the deprecated GITLAB_ENTERPRISE boolean"
          },
          {
            "name": "GITLAB_MCP_READ_ONLY",
            "description": "Read-only mode: disables all mutating tools (default: false)"
          },
          {
            "name": "GITLAB_MCP_SAFE_MODE",
            "description": "Safe mode: intercepts mutating tools and returns a JSON preview instead of executing (default: false)"
          },
          {
            "name": "GITLAB_MCP_EMBEDDED_RESOURCES",
            "description": "Append EmbeddedResource content blocks (clickable links to MCP resources) to get_* tool results (default: true)"
          },
          {
            "name": "GITLAB_MCP_EXCLUDE_TOOLS",
            "description": "Comma-separated tool names, group names or canonical action IDs to exclude, on every surface (e.g. gitlab_admin,gitlab_runner)"
          },
          {
            "name": "GITLAB_MCP_IGNORE_SCOPES",
            "description": "Skip Personal Access Token scope detection and register all tools regardless of token permissions (default: false)"
          },
          {
            "name": "GITLAB_MCP_UPLOAD_MAX_FILE_SIZE",
            "description": "Maximum attachment upload size in bytes or human-readable (e.g. 2GB). Default: 2147483648 (2 GB)"
          },
          {
            "name": "GITLAB_MCP_ALLOWED_IMPORT_DIRS",
            "description": "Extra OS path-list-separated directories allowed for local GitLab import archives"
          },
          {
            "name": "GITLAB_MCP_RATE_LIMIT_RPS",
            "description": "Per-server tools/call rate limit in requests per second; 0 disables it (default: 0)"
          },
          {
            "name": "GITLAB_MCP_RATE_LIMIT_BURST",
            "description": "Token-bucket burst size when GITLAB_MCP_RATE_LIMIT_RPS is greater than 0 (default: 40)"
          },
          {
            "name": "GITLAB_MCP_LOG_LEVEL",
            "description": "Logging verbosity (default: info)"
          }
        ]
      },
      {
        "registryType": "oci",
        "identifier": "docker.io/jmrplens/gitlab-mcp-server:3.1.0@sha256:87e483299a2663a7a5d4d28679859b0c7fba2b1a421b7de2652441a569d4a2fc",
        "transport": "stdio",
        "environmentVariables": [
          {
            "name": "GITLAB_URL",
            "description": "GitLab instance URL (default: https://gitlab.com; set for self-managed instances)"
          },
          {
            "name": "GITLAB_TOKEN",
            "description": "GitLab Personal Access Token (glpat-...)",
            "isRequired": true,
            "isSecret": true
          },
          {
            "name": "GITLAB_MCP_SKIP_TLS_VERIFY",
            "description": "Skip TLS certificate verification for self-signed certs (default: false)"
          },
          {
            "name": "GITLAB_MCP_TOOL_SURFACE",
            "description": "Tool catalog selector: dynamic, meta, or individual (default: dynamic)"
          },
          {
            "name": "GITLAB_MCP_CAPABILITY_SURFACE",
            "description": "Resource and prompt catalog selector: full or minimal (default: full); resource subscriptions require full"
          },
          {
            "name": "GITLAB_MCP_META_PARAM_SCHEMA",
            "description": "Meta-tool input schema detail: opaque, compact, or full (default: opaque)"
          },
          {
            "name": "GITLAB_MCP_TIER",
            "description": "GitLab edition tier: free/ce, premium, or ultimate. When unset, detected from GET /license (fallback free). Gates Premium/Ultimate tools; GitLab.com Ultimate also exposes Orbit Knowledge Graph tools. Replaces the deprecated GITLAB_ENTERPRISE boolean"
          },
          {
            "name": "GITLAB_MCP_READ_ONLY",
            "description": "Read-only mode: disables all mutating tools (default: false)"
          },
          {
            "name": "GITLAB_MCP_SAFE_MODE",
            "description": "Safe mode: intercepts mutating tools and returns a JSON preview instead of executing (default: false)"
          },
          {
            "name": "GITLAB_MCP_EMBEDDED_RESOURCES",
            "description": "Append EmbeddedResource content blocks (clickable links to MCP resources) to get_* tool results (default: true)"
          },
          {
            "name": "GITLAB_MCP_EXCLUDE_TOOLS",
            "description": "Comma-separated tool names, group names or canonical action IDs to exclude, on every surface (e.g. gitlab_admin,gitlab_runner)"
          },
          {
            "name": "GITLAB_MCP_IGNORE_SCOPES",
            "description": "Skip Personal Access Token scope detection and register all tools regardless of token permissions (default: false)"
          },
          {
            "name": "GITLAB_MCP_UPLOAD_MAX_FILE_SIZE",
            "description": "Maximum attachment upload size in bytes or human-readable (e.g. 2GB). Default: 2147483648 (2 GB)"
          },
          {
            "name": "GITLAB_MCP_ALLOWED_IMPORT_DIRS",
            "description": "Extra OS path-list-separated directories allowed for local GitLab import archives"
          },
          {
            "name": "GITLAB_MCP_RATE_LIMIT_RPS",
            "description": "Per-server tools/call rate limit in requests per second; 0 disables it (default: 0)"
          },
          {
            "name": "GITLAB_MCP_RATE_LIMIT_BURST",
            "description": "Token-bucket burst size when GITLAB_MCP_RATE_LIMIT_RPS is greater than 0 (default: 40)"
          },
          {
            "name": "GITLAB_MCP_LOG_LEVEL",
            "description": "Logging verbosity (default: info)"
          }
        ]
      },
      {
        "registryType": "npm",
        "identifier": "@jmrp.io/gitlab-mcp-server",
        "version": "3.1.0",
        "runtimeHint": "npx",
        "transport": "stdio",
        "environmentVariables": [
          {
            "name": "GITLAB_URL",
            "description": "GitLab instance URL (default: https://gitlab.com; set for self-managed instances)"
          },
          {
            "name": "GITLAB_TOKEN",
            "description": "GitLab Personal Access Token (glpat-...)",
            "isRequired": true,
            "isSecret": true
          },
          {
            "name": "GITLAB_MCP_SKIP_TLS_VERIFY",
            "description": "Skip TLS certificate verification for self-signed certs (default: false)"
          },
          {
            "name": "GITLAB_MCP_TOOL_SURFACE",
            "description": "Tool catalog selector: dynamic, meta, or individual (default: dynamic)"
          },
          {
            "name": "GITLAB_MCP_CAPABILITY_SURFACE",
            "description": "Resource and prompt catalog selector: full or minimal (default: full); resource subscriptions require full"
          },
          {
            "name": "GITLAB_MCP_META_PARAM_SCHEMA",
            "description": "Meta-tool input schema detail: opaque, compact, or full (default: opaque)"
          },
          {
            "name": "GITLAB_MCP_TIER",
            "description": "GitLab edition tier: free/ce, premium, or ultimate. When unset, detected from GET /license (fallback free). Gates Premium/Ultimate tools; GitLab.com Ultimate also exposes Orbit Knowledge Graph tools. Replaces the deprecated GITLAB_ENTERPRISE boolean"
          },
          {
            "name": "GITLAB_MCP_READ_ONLY",
            "description": "Read-only mode: disables all mutating tools (default: false)"
          },
          {
            "name": "GITLAB_MCP_SAFE_MODE",
            "description": "Safe mode: intercepts mutating tools and returns a JSON preview instead of executing (default: false)"
          },
          {
            "name": "GITLAB_MCP_EMBEDDED_RESOURCES",
            "description": "Append EmbeddedResource content blocks (clickable links to MCP resources) to get_* tool results (default: true)"
          },
          {
            "name": "GITLAB_MCP_EXCLUDE_TOOLS",
            "description": "Comma-separated tool names, group names or canonical action IDs to exclude, on every surface (e.g. gitlab_admin,gitlab_runner)"
          },
          {
            "name": "GITLAB_MCP_IGNORE_SCOPES",
            "description": "Skip Personal Access Token scope detection and register all tools regardless of token permissions (default: false)"
          },
          {
            "name": "GITLAB_MCP_UPLOAD_MAX_FILE_SIZE",
            "description": "Maximum attachment upload size in bytes or human-readable (e.g. 2GB). Default: 2147483648 (2 GB)"
          },
          {
            "name": "GITLAB_MCP_ALLOWED_IMPORT_DIRS",
            "description": "Extra OS path-list-separated directories allowed for local GitLab import archives"
          },
          {
            "name": "GITLAB_MCP_RATE_LIMIT_RPS",
            "description": "Per-server tools/call rate limit in requests per second; 0 disables it (default: 0)"
          },
          {
            "name": "GITLAB_MCP_RATE_LIMIT_BURST",
            "description": "Token-bucket burst size when GITLAB_MCP_RATE_LIMIT_RPS is greater than 0 (default: 40)"
          },
          {
            "name": "GITLAB_MCP_LOG_LEVEL",
            "description": "Logging verbosity (default: info)"
          }
        ]
      },
      {
        "registryType": "pypi",
        "identifier": "jmrplens-gitlab-mcp-server",
        "version": "3.1.0",
        "runtimeHint": "uvx",
        "transport": "stdio",
        "environmentVariables": [
          {
            "name": "GITLAB_URL",
            "description": "GitLab instance URL (default: https://gitlab.com; set for self-managed instances)"
          },
          {
            "name": "GITLAB_TOKEN",
            "description": "GitLab Personal Access Token (glpat-...)",
            "isRequired": true,
            "isSecret": true
          },
          {
            "name": "GITLAB_MCP_SKIP_TLS_VERIFY",
            "description": "Skip TLS certificate verification for self-signed certs (default: false)"
          },
          {
            "name": "GITLAB_MCP_TOOL_SURFACE",
            "description": "Tool catalog selector: dynamic, meta, or individual (default: dynamic)"
          },
          {
            "name": "GITLAB_MCP_CAPABILITY_SURFACE",
            "description": "Resource and prompt catalog selector: full or minimal (default: full); resource subscriptions require full"
          },
          {
            "name": "GITLAB_MCP_META_PARAM_SCHEMA",
            "description": "Meta-tool input schema detail: opaque, compact, or full (default: opaque)"
          },
          {
            "name": "GITLAB_MCP_TIER",
            "description": "GitLab edition tier: free/ce, premium, or ultimate. When unset, detected from GET /license (fallback free). Gates Premium/Ultimate tools; GitLab.com Ultimate also exposes Orbit Knowledge Graph tools. Replaces the deprecated GITLAB_ENTERPRISE boolean"
          },
          {
            "name": "GITLAB_MCP_READ_ONLY",
            "description": "Read-only mode: disables all mutating tools (default: false)"
          },
          {
            "name": "GITLAB_MCP_SAFE_MODE",
            "description": "Safe mode: intercepts mutating tools and returns a JSON preview instead of executing (default: false)"
          },
          {
            "name": "GITLAB_MCP_EMBEDDED_RESOURCES",
            "description": "Append EmbeddedResource content blocks (clickable links to MCP resources) to get_* tool results (default: true)"
          },
          {
            "name": "GITLAB_MCP_EXCLUDE_TOOLS",
            "description": "Comma-separated tool names, group names or canonical action IDs to exclude, on every surface (e.g. gitlab_admin,gitlab_runner)"
          },
          {
            "name": "GITLAB_MCP_IGNORE_SCOPES",
            "description": "Skip Personal Access Token scope detection and register all tools regardless of token permissions (default: false)"
          },
          {
            "name": "GITLAB_MCP_UPLOAD_MAX_FILE_SIZE",
            "description": "Maximum attachment upload size in bytes or human-readable (e.g. 2GB). Default: 2147483648 (2 GB)"
          },
          {
            "name": "GITLAB_MCP_ALLOWED_IMPORT_DIRS",
            "description": "Extra OS path-list-separated directories allowed for local GitLab import archives"
          },
          {
            "name": "GITLAB_MCP_RATE_LIMIT_RPS",
            "description": "Per-server tools/call rate limit in requests per second; 0 disables it (default: 0)"
          },
          {
            "name": "GITLAB_MCP_RATE_LIMIT_BURST",
            "description": "Token-bucket burst size when GITLAB_MCP_RATE_LIMIT_RPS is greater than 0 (default: 40)"
          },
          {
            "name": "GITLAB_MCP_LOG_LEVEL",
            "description": "Logging verbosity (default: info)"
          }
        ]
      },
      {
        "registryType": "nuget",
        "identifier": "gitlab-mcp-server",
        "version": "3.1.0",
        "runtimeHint": "dnx",
        "transport": "stdio",
        "environmentVariables": [
          {
            "name": "GITLAB_URL",
            "description": "GitLab instance URL (default: https://gitlab.com; set for self-managed instances)"
          },
          {
            "name": "GITLAB_TOKEN",
            "description": "GitLab Personal Access Token (glpat-...)",
            "isRequired": true,
            "isSecret": true
          },
          {
            "name": "GITLAB_MCP_SKIP_TLS_VERIFY",
            "description": "Skip TLS certificate verification for self-signed certs (default: false)"
          },
          {
            "name": "GITLAB_MCP_TOOL_SURFACE",
            "description": "Tool catalog selector: dynamic, meta, or individual (default: dynamic)"
          },
          {
            "name": "GITLAB_MCP_CAPABILITY_SURFACE",
            "description": "Resource and prompt catalog selector: full or minimal (default: full); resource subscriptions require full"
          },
          {
            "name": "GITLAB_MCP_META_PARAM_SCHEMA",
            "description": "Meta-tool input schema detail: opaque, compact, or full (default: opaque)"
          },
          {
            "name": "GITLAB_MCP_TIER",
            "description": "GitLab edition tier: free/ce, premium, or ultimate. When unset, detected from GET /license (fallback free). Gates Premium/Ultimate tools; GitLab.com Ultimate also exposes Orbit Knowledge Graph tools. Replaces the deprecated GITLAB_ENTERPRISE boolean"
          },
          {
            "name": "GITLAB_MCP_READ_ONLY",
            "description": "Read-only mode: disables all mutating tools (default: false)"
          },
          {
            "name": "GITLAB_MCP_SAFE_MODE",
            "description": "Safe mode: intercepts mutating tools and returns a JSON preview instead of executing (default: false)"
          },
          {
            "name": "GITLAB_MCP_EMBEDDED_RESOURCES",
            "description": "Append EmbeddedResource content blocks (clickable links to MCP resources) to get_* tool results (default: true)"
          },
          {
            "name": "GITLAB_MCP_EXCLUDE_TOOLS",
            "description": "Comma-separated tool names, group names or canonical action IDs to exclude, on every surface (e.g. gitlab_admin,gitlab_runner)"
          },
          {
            "name": "GITLAB_MCP_IGNORE_SCOPES",
            "description": "Skip Personal Access Token scope detection and register all tools regardless of token permissions (default: false)"
          },
          {
            "name": "GITLAB_MCP_UPLOAD_MAX_FILE_SIZE",
            "description": "Maximum attachment upload size in bytes or human-readable (e.g. 2GB). Default: 2147483648 (2 GB)"
          },
          {
            "name": "GITLAB_MCP_ALLOWED_IMPORT_DIRS",
            "description": "Extra OS path-list-separated directories allowed for local GitLab import archives"
          },
          {
            "name": "GITLAB_MCP_RATE_LIMIT_RPS",
            "description": "Per-server tools/call rate limit in requests per second; 0 disables it (default: 0)"
          },
          {
            "name": "GITLAB_MCP_RATE_LIMIT_BURST",
            "description": "Token-bucket burst size when GITLAB_MCP_RATE_LIMIT_RPS is greater than 0 (default: 40)"
          },
          {
            "name": "GITLAB_MCP_LOG_LEVEL",
            "description": "Logging verbosity (default: info)"
          }
        ]
      }
    ],
    "remotes": [
      {
        "transport": "streamable-http",
        "url": "https://mcp.jmrp.io/gitlab"
      }
    ]
  },
  "dependencies": [],
  "installTargets": [
    "claude-code",
    "claude-desktop",
    "cursor",
    "vscode",
    "trae",
    "cherry-studio",
    "lingma",
    "windsurf",
    "cline",
    "workbuddy"
  ],
  "keywords": [],
  "provenance": {
    "origin": "official-mcp-registry",
    "originalId": "io.github.jmrplens/gitlab-mcp-server",
    "originalUrl": "https://registry.modelcontextprotocol.io/v0.1/servers/io.github.jmrplens%2Fgitlab-mcp-server/versions/latest",
    "isOfficial": true,
    "status": "active"
  }
}
GitLab MCP Setup & Guide - AgentHub