HomeVersion Control › GitLab MCP Server

GitLab MCP Server

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

Go CloudLocal macOSWindowsLinux Remote
★ 39 stars Last pushed 2026-09-24 License: MIT

Topics: Version Control

Connect

Review any command before running it. Package names and URLs come from the server's own registry entry.

Remote (streamable-http)

https://mcp.jmrp.io/gitlab Requires auth (checked 2026-09-24)

Claude Code:

claude mcp add --transport http gitlab-mcp-server https://mcp.jmrp.io/gitlab --header "Authorization: <YOUR_VALUE>"

Or add to your MCP client config:

{
  "mcpServers": {
    "gitlab-mcp-server": {
      "url": "https://mcp.jmrp.io/gitlab",
      "headers": {
        "Authorization": "<YOUR_VALUE>"
      }
    }
  }
}
  • Authorization secret — Bearer <token>. 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 works here, sent as 'Bearer glpat-...', which keeps clients with no OAuth flow working. It travels per request and is never stored server-side.

Package (mcpb 3.0.0)

Package: mcpb https://github.com/jmrplens/gitlab-mcp-server/releases/download/v3.0.0/gitlab-mcp-server.mcpb

  • GITLAB_URL — GitLab instance URL (default: https://gitlab.com; set for self-managed instances)
  • GITLAB_TOKEN required secret — GitLab Personal Access Token (glpat-...)
  • GITLAB_MCP_SKIP_TLS_VERIFY — Skip TLS certificate verification for self-signed certs (default: false)
  • GITLAB_MCP_TOOL_SURFACE — Tool catalog selector: dynamic, meta, or individual (default: dynamic)
  • GITLAB_MCP_CAPABILITY_SURFACE — Resource and prompt catalog selector: full or minimal (default: full); resource subscriptions require full
  • GITLAB_MCP_META_PARAM_SCHEMA — Meta-tool input schema detail: opaque, compact, or full (default: opaque)
  • GITLAB_MCP_TIER — 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
  • GITLAB_MCP_READ_ONLY — Read-only mode: disables all mutating tools (default: false)
  • GITLAB_MCP_SAFE_MODE — Safe mode: intercepts mutating tools and returns a JSON preview instead of executing (default: false)
  • GITLAB_MCP_EMBEDDED_RESOURCES — Append EmbeddedResource content blocks (clickable links to MCP resources) to get_* tool results (default: true)
  • GITLAB_MCP_EXCLUDE_TOOLS — Comma-separated tool names to exclude from registration (e.g. gitlab_admin,gitlab_runner)
  • GITLAB_MCP_IGNORE_SCOPES — Skip Personal Access Token scope detection and register all tools regardless of token permissions (default: false)
  • GITLAB_MCP_UPLOAD_MAX_FILE_SIZE — Maximum attachment upload size in bytes or human-readable (e.g. 2GB). Default: 2147483648 (2 GB)
  • GITLAB_MCP_ALLOWED_IMPORT_DIRS — Extra OS path-list-separated directories allowed for local GitLab import archives
  • GITLAB_MCP_RATE_LIMIT_RPS — Per-server tools/call rate limit in requests per second; 0 disables it (default: 0)
  • GITLAB_MCP_RATE_LIMIT_BURST — Token-bucket burst size when GITLAB_MCP_RATE_LIMIT_RPS is greater than 0 (default: 40)
  • GITLAB_MCP_LOG_LEVEL — Logging verbosity (default: info)

Package (oci)

docker run -i --rm ghcr.io/jmrplens/gitlab-mcp-server:3.0.0@sha256:80990c658d2ac1b95c98540fbd8fc2bcf300a86a9b18c73483ed7412441b2c04

Or add to your MCP client config:

{
  "mcpServers": {
    "gitlab-mcp-server": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "ghcr.io/jmrplens/gitlab-mcp-server:3.0.0@sha256:80990c658d2ac1b95c98540fbd8fc2bcf300a86a9b18c73483ed7412441b2c04"
      ],
      "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_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_URL — GitLab instance URL (default: https://gitlab.com; set for self-managed instances)
  • GITLAB_TOKEN required secret — GitLab Personal Access Token (glpat-...)
  • GITLAB_MCP_SKIP_TLS_VERIFY — Skip TLS certificate verification for self-signed certs (default: false)
  • GITLAB_MCP_TOOL_SURFACE — Tool catalog selector: dynamic, meta, or individual (default: dynamic)
  • GITLAB_MCP_CAPABILITY_SURFACE — Resource and prompt catalog selector: full or minimal (default: full); resource subscriptions require full
  • GITLAB_MCP_META_PARAM_SCHEMA — Meta-tool input schema detail: opaque, compact, or full (default: opaque)
  • GITLAB_MCP_TIER — 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
  • GITLAB_MCP_READ_ONLY — Read-only mode: disables all mutating tools (default: false)
  • GITLAB_MCP_SAFE_MODE — Safe mode: intercepts mutating tools and returns a JSON preview instead of executing (default: false)
  • GITLAB_MCP_EMBEDDED_RESOURCES — Append EmbeddedResource content blocks (clickable links to MCP resources) to get_* tool results (default: true)
  • GITLAB_MCP_EXCLUDE_TOOLS — Comma-separated tool names to exclude from registration (e.g. gitlab_admin,gitlab_runner)
  • GITLAB_MCP_IGNORE_SCOPES — Skip Personal Access Token scope detection and register all tools regardless of token permissions (default: false)
  • GITLAB_MCP_UPLOAD_MAX_FILE_SIZE — Maximum attachment upload size in bytes or human-readable (e.g. 2GB). Default: 2147483648 (2 GB)
  • GITLAB_MCP_ALLOWED_IMPORT_DIRS — Extra OS path-list-separated directories allowed for local GitLab import archives
  • GITLAB_MCP_RATE_LIMIT_RPS — Per-server tools/call rate limit in requests per second; 0 disables it (default: 0)
  • GITLAB_MCP_RATE_LIMIT_BURST — Token-bucket burst size when GITLAB_MCP_RATE_LIMIT_RPS is greater than 0 (default: 40)
  • GITLAB_MCP_LOG_LEVEL — Logging verbosity (default: info)

Package (npm 3.0.0)

npx -y @jmrp.io/[email protected]

Or add to your MCP client config:

{
  "mcpServers": {
    "gitlab-mcp-server": {
      "command": "npx",
      "args": [
        "-y",
        "@jmrp.io/[email protected]"
      ],
      "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_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_URL — GitLab instance URL (default: https://gitlab.com; set for self-managed instances)
  • GITLAB_TOKEN required secret — GitLab Personal Access Token (glpat-...)
  • GITLAB_MCP_SKIP_TLS_VERIFY — Skip TLS certificate verification for self-signed certs (default: false)
  • GITLAB_MCP_TOOL_SURFACE — Tool catalog selector: dynamic, meta, or individual (default: dynamic)
  • GITLAB_MCP_CAPABILITY_SURFACE — Resource and prompt catalog selector: full or minimal (default: full); resource subscriptions require full
  • GITLAB_MCP_META_PARAM_SCHEMA — Meta-tool input schema detail: opaque, compact, or full (default: opaque)
  • GITLAB_MCP_TIER — 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
  • GITLAB_MCP_READ_ONLY — Read-only mode: disables all mutating tools (default: false)
  • GITLAB_MCP_SAFE_MODE — Safe mode: intercepts mutating tools and returns a JSON preview instead of executing (default: false)
  • GITLAB_MCP_EMBEDDED_RESOURCES — Append EmbeddedResource content blocks (clickable links to MCP resources) to get_* tool results (default: true)
  • GITLAB_MCP_EXCLUDE_TOOLS — Comma-separated tool names to exclude from registration (e.g. gitlab_admin,gitlab_runner)
  • GITLAB_MCP_IGNORE_SCOPES — Skip Personal Access Token scope detection and register all tools regardless of token permissions (default: false)
  • GITLAB_MCP_UPLOAD_MAX_FILE_SIZE — Maximum attachment upload size in bytes or human-readable (e.g. 2GB). Default: 2147483648 (2 GB)
  • GITLAB_MCP_ALLOWED_IMPORT_DIRS — Extra OS path-list-separated directories allowed for local GitLab import archives
  • GITLAB_MCP_RATE_LIMIT_RPS — Per-server tools/call rate limit in requests per second; 0 disables it (default: 0)
  • GITLAB_MCP_RATE_LIMIT_BURST — Token-bucket burst size when GITLAB_MCP_RATE_LIMIT_RPS is greater than 0 (default: 40)
  • GITLAB_MCP_LOG_LEVEL — Logging verbosity (default: info)

Package (pypi 3.0.0)

uvx jmrplens-gitlab-mcp-server

Or add to your MCP client config:

{
  "mcpServers": {
    "gitlab-mcp-server": {
      "command": "uvx",
      "args": [
        "jmrplens-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_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_URL — GitLab instance URL (default: https://gitlab.com; set for self-managed instances)
  • GITLAB_TOKEN required secret — GitLab Personal Access Token (glpat-...)
  • GITLAB_MCP_SKIP_TLS_VERIFY — Skip TLS certificate verification for self-signed certs (default: false)
  • GITLAB_MCP_TOOL_SURFACE — Tool catalog selector: dynamic, meta, or individual (default: dynamic)
  • GITLAB_MCP_CAPABILITY_SURFACE — Resource and prompt catalog selector: full or minimal (default: full); resource subscriptions require full
  • GITLAB_MCP_META_PARAM_SCHEMA — Meta-tool input schema detail: opaque, compact, or full (default: opaque)
  • GITLAB_MCP_TIER — 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
  • GITLAB_MCP_READ_ONLY — Read-only mode: disables all mutating tools (default: false)
  • GITLAB_MCP_SAFE_MODE — Safe mode: intercepts mutating tools and returns a JSON preview instead of executing (default: false)
  • GITLAB_MCP_EMBEDDED_RESOURCES — Append EmbeddedResource content blocks (clickable links to MCP resources) to get_* tool results (default: true)
  • GITLAB_MCP_EXCLUDE_TOOLS — Comma-separated tool names to exclude from registration (e.g. gitlab_admin,gitlab_runner)
  • GITLAB_MCP_IGNORE_SCOPES — Skip Personal Access Token scope detection and register all tools regardless of token permissions (default: false)
  • GITLAB_MCP_UPLOAD_MAX_FILE_SIZE — Maximum attachment upload size in bytes or human-readable (e.g. 2GB). Default: 2147483648 (2 GB)
  • GITLAB_MCP_ALLOWED_IMPORT_DIRS — Extra OS path-list-separated directories allowed for local GitLab import archives
  • GITLAB_MCP_RATE_LIMIT_RPS — Per-server tools/call rate limit in requests per second; 0 disables it (default: 0)
  • GITLAB_MCP_RATE_LIMIT_BURST — Token-bucket burst size when GITLAB_MCP_RATE_LIMIT_RPS is greater than 0 (default: 40)
  • GITLAB_MCP_LOG_LEVEL — Logging verbosity (default: info)

Package (nuget 3.0.0)

Package: nuget gitlab-mcp-server

  • GITLAB_URL — GitLab instance URL (default: https://gitlab.com; set for self-managed instances)
  • GITLAB_TOKEN required secret — GitLab Personal Access Token (glpat-...)
  • GITLAB_MCP_SKIP_TLS_VERIFY — Skip TLS certificate verification for self-signed certs (default: false)
  • GITLAB_MCP_TOOL_SURFACE — Tool catalog selector: dynamic, meta, or individual (default: dynamic)
  • GITLAB_MCP_CAPABILITY_SURFACE — Resource and prompt catalog selector: full or minimal (default: full); resource subscriptions require full
  • GITLAB_MCP_META_PARAM_SCHEMA — Meta-tool input schema detail: opaque, compact, or full (default: opaque)
  • GITLAB_MCP_TIER — 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
  • GITLAB_MCP_READ_ONLY — Read-only mode: disables all mutating tools (default: false)
  • GITLAB_MCP_SAFE_MODE — Safe mode: intercepts mutating tools and returns a JSON preview instead of executing (default: false)
  • GITLAB_MCP_EMBEDDED_RESOURCES — Append EmbeddedResource content blocks (clickable links to MCP resources) to get_* tool results (default: true)
  • GITLAB_MCP_EXCLUDE_TOOLS — Comma-separated tool names to exclude from registration (e.g. gitlab_admin,gitlab_runner)
  • GITLAB_MCP_IGNORE_SCOPES — Skip Personal Access Token scope detection and register all tools regardless of token permissions (default: false)
  • GITLAB_MCP_UPLOAD_MAX_FILE_SIZE — Maximum attachment upload size in bytes or human-readable (e.g. 2GB). Default: 2147483648 (2 GB)
  • GITLAB_MCP_ALLOWED_IMPORT_DIRS — Extra OS path-list-separated directories allowed for local GitLab import archives
  • GITLAB_MCP_RATE_LIMIT_RPS — Per-server tools/call rate limit in requests per second; 0 disables it (default: 0)
  • GITLAB_MCP_RATE_LIMIT_BURST — Token-bucket burst size when GITLAB_MCP_RATE_LIMIT_RPS is greater than 0 (default: 40)
  • GITLAB_MCP_LOG_LEVEL — Logging verbosity (default: info)

Related servers

Listed in punkpeye/awesome-mcp-servers (MIT)

Data from the Official MCP Registry