MCP Hub β€Ί Developer Tools β€Ί GitLab MCP Server

GitLab MCP Server MCP server

by jmrplens Β· io.github.jmrplens/gitlab-mcp-server

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

πŸ›  Developer ToolsRemoteDockerPythonnpmv3.4.0
Open in MCP HubGitHub repository β†—Website β†—

How to install GitLab MCP Server

Remote (http)

claude mcp add --transport http gitlab-mcp-server https://mcp.jmrp.io/gitlab

Or add it to your MCP config (Claude Desktop, Cursor, VS Code):

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

Docker

claude mcp add -e GITLAB_TOKEN=<your-gitlab-token> gitlab-mcp-server -- docker run -i --rm ghcr.io/jmrplens/gitlab-mcp-server:3.4.0@sha256:a0ef01843875161060ec89225fe4091f95a7ae2a8984286a435752fc6089dcbb

Or add it to your MCP config (Claude Desktop, Cursor, VS Code):

{
  "mcpServers": {
    "gitlab-mcp-server": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "ghcr.io/jmrplens/gitlab-mcp-server:3.4.0@sha256:a0ef01843875161060ec89225fe4091f95a7ae2a8984286a435752fc6089dcbb"
      ],
      "env": {
        "GITLAB_TOKEN": "<your-gitlab-token>"
      }
    }
  }
}

Environment variables:
GITLAB_URL – GitLab instance URL (default: https://gitlab.com; set for self-managed instances)
GITLAB_TOKEN (required) – 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 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 top-level groups the token is a member of, falling back to free. Gates Premium and Ultimate actions; GitLab.com Ultimate also serves the Orbit Knowledge Graph tools
GITLAB_MCP_READ_ONLY – Read-only mode: removes every mutating action from the served surface; reads keep working (default: false)
GITLAB_MCP_SAFE_MODE – 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 – Append EmbeddedResource content blocks (clickable links to MCP resources) to get_* tool results (default: true)
GITLAB_MCP_EXCLUDE_TOOLS – 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 – 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 – 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 – 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 allowed. Unused in HTTP mode, which refuses local paths
GITLAB_MCP_ALLOWED_DOWNLOAD_DIRS – 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 always allowed. Unused in HTTP mode, which refuses local paths
GITLAB_MCP_ALLOWED_IMPORT_DIRS – 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 are always allowed. Unused in HTTP mode, which refuses local paths
GITLAB_MCP_RATE_LIMIT_RPS – 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 – Token-bucket burst size when GITLAB_MCP_RATE_LIMIT_RPS is greater than 0 (default: 40)
GITLAB_MCP_LOG_LEVEL – Logging verbosity (default: info)
GITLAB_MCP_LANGUAGE – 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

Docker

claude mcp add -e GITLAB_TOKEN=<your-gitlab-token> gitlab-mcp-server -- docker run -i --rm docker.io/jmrplens/gitlab-mcp-server:3.4.0@sha256:a0ef01843875161060ec89225fe4091f95a7ae2a8984286a435752fc6089dcbb

Or add it to your MCP config (Claude Desktop, Cursor, VS Code):

{
  "mcpServers": {
    "gitlab-mcp-server": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "docker.io/jmrplens/gitlab-mcp-server:3.4.0@sha256:a0ef01843875161060ec89225fe4091f95a7ae2a8984286a435752fc6089dcbb"
      ],
      "env": {
        "GITLAB_TOKEN": "<your-gitlab-token>"
      }
    }
  }
}

Environment variables:
GITLAB_URL – GitLab instance URL (default: https://gitlab.com; set for self-managed instances)
GITLAB_TOKEN (required) – 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 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 top-level groups the token is a member of, falling back to free. Gates Premium and Ultimate actions; GitLab.com Ultimate also serves the Orbit Knowledge Graph tools
GITLAB_MCP_READ_ONLY – Read-only mode: removes every mutating action from the served surface; reads keep working (default: false)
GITLAB_MCP_SAFE_MODE – 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 – Append EmbeddedResource content blocks (clickable links to MCP resources) to get_* tool results (default: true)
GITLAB_MCP_EXCLUDE_TOOLS – 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 – 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 – 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 – 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 allowed. Unused in HTTP mode, which refuses local paths
GITLAB_MCP_ALLOWED_DOWNLOAD_DIRS – 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 always allowed. Unused in HTTP mode, which refuses local paths
GITLAB_MCP_ALLOWED_IMPORT_DIRS – 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 are always allowed. Unused in HTTP mode, which refuses local paths
GITLAB_MCP_RATE_LIMIT_RPS – 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 – Token-bucket burst size when GITLAB_MCP_RATE_LIMIT_RPS is greater than 0 (default: 40)
GITLAB_MCP_LOG_LEVEL – Logging verbosity (default: info)
GITLAB_MCP_LANGUAGE – 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

npm

claude mcp add -e GITLAB_TOKEN=<your-gitlab-token> gitlab-mcp-server -- npx -y @jmrp.io/[email protected]

Or add it to your MCP config (Claude Desktop, Cursor, VS Code):

{
  "mcpServers": {
    "gitlab-mcp-server": {
      "command": "npx",
      "args": [
        "-y",
        "@jmrp.io/[email protected]"
      ],
      "env": {
        "GITLAB_TOKEN": "<your-gitlab-token>"
      }
    }
  }
}

Environment variables:
GITLAB_URL – GitLab instance URL (default: https://gitlab.com; set for self-managed instances)
GITLAB_TOKEN (required) – 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 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 top-level groups the token is a member of, falling back to free. Gates Premium and Ultimate actions; GitLab.com Ultimate also serves the Orbit Knowledge Graph tools
GITLAB_MCP_READ_ONLY – Read-only mode: removes every mutating action from the served surface; reads keep working (default: false)
GITLAB_MCP_SAFE_MODE – 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 – Append EmbeddedResource content blocks (clickable links to MCP resources) to get_* tool results (default: true)
GITLAB_MCP_EXCLUDE_TOOLS – 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 – 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 – 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 – 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 allowed. Unused in HTTP mode, which refuses local paths
GITLAB_MCP_ALLOWED_DOWNLOAD_DIRS – 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 always allowed. Unused in HTTP mode, which refuses local paths
GITLAB_MCP_ALLOWED_IMPORT_DIRS – 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 are always allowed. Unused in HTTP mode, which refuses local paths
GITLAB_MCP_RATE_LIMIT_RPS – 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 – Token-bucket burst size when GITLAB_MCP_RATE_LIMIT_RPS is greater than 0 (default: 40)
GITLAB_MCP_LOG_LEVEL – Logging verbosity (default: info)
GITLAB_MCP_LANGUAGE – 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

Python (uvx)

claude mcp add -e GITLAB_TOKEN=<your-gitlab-token> gitlab-mcp-server -- uvx jmrplens-gitlab-mcp-server==3.4.0

Or add it to your MCP config (Claude Desktop, Cursor, VS Code):

{
  "mcpServers": {
    "gitlab-mcp-server": {
      "command": "uvx",
      "args": [
        "jmrplens-gitlab-mcp-server==3.4.0"
      ],
      "env": {
        "GITLAB_TOKEN": "<your-gitlab-token>"
      }
    }
  }
}

Environment variables:
GITLAB_URL – GitLab instance URL (default: https://gitlab.com; set for self-managed instances)
GITLAB_TOKEN (required) – 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 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 top-level groups the token is a member of, falling back to free. Gates Premium and Ultimate actions; GitLab.com Ultimate also serves the Orbit Knowledge Graph tools
GITLAB_MCP_READ_ONLY – Read-only mode: removes every mutating action from the served surface; reads keep working (default: false)
GITLAB_MCP_SAFE_MODE – 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 – Append EmbeddedResource content blocks (clickable links to MCP resources) to get_* tool results (default: true)
GITLAB_MCP_EXCLUDE_TOOLS – 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 – 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 – 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 – 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 allowed. Unused in HTTP mode, which refuses local paths
GITLAB_MCP_ALLOWED_DOWNLOAD_DIRS – 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 always allowed. Unused in HTTP mode, which refuses local paths
GITLAB_MCP_ALLOWED_IMPORT_DIRS – 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 are always allowed. Unused in HTTP mode, which refuses local paths
GITLAB_MCP_RATE_LIMIT_RPS – 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 – Token-bucket burst size when GITLAB_MCP_RATE_LIMIT_RPS is greater than 0 (default: 40)
GITLAB_MCP_LOG_LEVEL – Logging verbosity (default: info)
GITLAB_MCP_LANGUAGE – 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

Replace placeholders in <angle brackets> with your own values. Review what a server can access before you enable it.

Details

Version
3.4.0
Published
2026-10-31
Updated
2026-10-31
Namespace
io.github.jmrplens
Source
jmrplens/gitlab-mcp-server

Similar developer tools servers