Home › Other › zereight/gitlab-mcp

zereight/gitlab-mcp

GitLab MCP server for projects, merge requests, issues, pipelines, wiki, releases, and more.

TypeScript
★ 2,100 stars Last pushed 2026-11-11 License: MIT

Connect

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

Package (npm 2.3.24)

npx -y @zereight/[email protected]

Or add to your MCP client config:

{
  "mcpServers": {
    "gitlab-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "@zereight/[email protected]"
      ],
      "env": {
        "GITLAB_PERSONAL_ACCESS_TOKEN": "<YOUR_VALUE>",
        "GITLAB_JOB_TOKEN": "<YOUR_VALUE>"
      }
    }
  }
}
  • GITLAB_PERSONAL_ACCESS_TOKEN secret — GitLab personal access token for local stdio use. A non-empty value overrides GITLAB_PERSONAL_ACCESS_TOKEN_FILE. One of this token, GITLAB_PERSONAL_ACCESS_TOKEN_FILE, GITLAB_JOB_TOKEN, GITLAB_AUTH_COOKIE_PATH, or GITLAB_USE_OAUTH=true must be set. Create a token with the GitLab scopes the tools need, such as api or read_api.
  • GITLAB_PERSONAL_ACCESS_TOKEN_FILE — Path to a file that contains the personal access token. Read once at startup and trimmed. Ignored when GITLAB_PERSONAL_ACCESS_TOKEN or --token is non-empty. A missing, unreadable, or empty file stops startup. Does not replace job token, OAuth, cookie, or remote authorization.
  • GITLAB_JOB_TOKEN secret — Optional GitLab CI job token to use instead of a personal access token when running inside GitLab CI.
  • GITLAB_AUTH_COOKIE_PATH — Optional path to a GitLab authentication cookie file for cookie-based authentication.
  • GITLAB_USE_OAUTH — Set to true to start with GitLab OAuth instead of a personal access token, job token, or cookie file.
  • GITLAB_OAUTH_CLIENT_ID — GitLab OAuth application ID. When GITLAB_USE_OAUTH=true, set this or GITLAB_OAUTH_TOKEN_SCRIPT.
  • GITLAB_OAUTH_TOKEN_SCRIPT — Command that prints an OAuth access token. When GITLAB_USE_OAUTH=true, set this or GITLAB_OAUTH_CLIENT_ID.
  • GITLAB_API_URL — GitLab API base URL. Use https://gitlab.com/api/v4 for GitLab.com or your self-managed GitLab API URL.
  • GITLAB_ALLOWED_PROJECT_IDS — Optional comma-separated list of GitLab project IDs that this server is allowed to access.
  • GITLAB_PERMISSION_MODE — Tool exposure. Allowed values are readonly, modify, and full. Unset uses full. readonly keeps read-only tools. modify blocks delete and teardown tools.
  • GITLAB_TOOLSETS — Optional comma-separated toolset ids (projects, issues, merge_requests, …). Unset keeps the lean core default plus discover_tools. Do not set all unless you accept loading ~all schemas (~73k tokens).
  • GITLAB_TOOLS — Optional comma-separated list of individual tool names to add on top of enabled toolsets.
  • GITLAB_DENIED_TOOLS_REGEX — Optional regular expression used to hide matching tools from the server.
  • GITLAB_TOOL_POLICY_APPROVE — Optional comma-separated list of tool names that require explicit approval before execution.
  • GITLAB_TOOL_POLICY_HIDDEN — Optional comma-separated list of tool names to hide from tools/list.
  • NODE_TLS_REJECT_UNAUTHORIZED — Set to 0 only when you intentionally need to connect to a GitLab instance with invalid or self-signed TLS certificates.
  • GITLAB_CA_CERT_PATH — Optional path to a custom CA certificate file for self-managed GitLab instances.
  • GITLAB_MASKING_ENABLED — Set to true to mask text tool results and returned errors using built-in or configured rules.
  • GITLAB_MASKING_CONFIG — Optional path to a response-masking JSON configuration file.
  • GITLAB_MASKING_POLICY_FILE — Optional protected server-owned JSON file containing managed masking policies.
  • GITLAB_MASKING_WORKSPACE_DIR — Directory used to resolve response-masking configuration paths.

Package (oci)

docker run -i --rm -e GITLAB_PERSONAL_ACCESS_TOKEN=<YOUR_VALUE> -e GITLAB_JOB_TOKEN=<YOUR_VALUE> docker.io/zereight050/gitlab-mcp:2.3.24

Or add to your MCP client config:

{
  "mcpServers": {
    "gitlab-mcp": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "GITLAB_PERSONAL_ACCESS_TOKEN=<YOUR_VALUE>",
        "-e",
        "GITLAB_JOB_TOKEN=<YOUR_VALUE>",
        "docker.io/zereight050/gitlab-mcp:2.3.24"
      ]
    }
  }
}
  • GITLAB_PERSONAL_ACCESS_TOKEN secret — GitLab personal access token for local stdio use. A non-empty value overrides GITLAB_PERSONAL_ACCESS_TOKEN_FILE. One of this token, GITLAB_PERSONAL_ACCESS_TOKEN_FILE, GITLAB_JOB_TOKEN, GITLAB_AUTH_COOKIE_PATH, or GITLAB_USE_OAUTH=true must be set. Create a token with the GitLab scopes the tools need, such as api or read_api.
  • GITLAB_PERSONAL_ACCESS_TOKEN_FILE — Path to a file that contains the personal access token. Read once at startup and trimmed. Ignored when GITLAB_PERSONAL_ACCESS_TOKEN or --token is non-empty. A missing, unreadable, or empty file stops startup. Does not replace job token, OAuth, cookie, or remote authorization.
  • GITLAB_JOB_TOKEN secret — Optional GitLab CI job token to use instead of a personal access token when running inside GitLab CI.
  • GITLAB_AUTH_COOKIE_PATH — Optional path to a GitLab authentication cookie file for cookie-based authentication.
  • GITLAB_USE_OAUTH — Set to true to start with GitLab OAuth instead of a personal access token, job token, or cookie file.
  • GITLAB_OAUTH_CLIENT_ID — GitLab OAuth application ID. When GITLAB_USE_OAUTH=true, set this or GITLAB_OAUTH_TOKEN_SCRIPT.
  • GITLAB_OAUTH_TOKEN_SCRIPT — Command that prints an OAuth access token. When GITLAB_USE_OAUTH=true, set this or GITLAB_OAUTH_CLIENT_ID.
  • GITLAB_API_URL — GitLab API base URL. Use https://gitlab.com/api/v4 for GitLab.com or your self-managed GitLab API URL.
  • GITLAB_ALLOWED_PROJECT_IDS — Optional comma-separated list of GitLab project IDs that this server is allowed to access.
  • GITLAB_PERMISSION_MODE — Tool exposure. Allowed values are readonly, modify, and full. Unset uses full. readonly keeps read-only tools. modify blocks delete and teardown tools.
  • GITLAB_TOOLSETS — Optional comma-separated toolset ids (projects, issues, merge_requests, …). Unset keeps the lean core default plus discover_tools. Do not set all unless you accept loading ~all schemas (~73k tokens).
  • GITLAB_TOOLS — Optional comma-separated list of individual tool names to add on top of enabled toolsets.
  • GITLAB_DENIED_TOOLS_REGEX — Optional regular expression used to hide matching tools from the server.
  • GITLAB_TOOL_POLICY_APPROVE — Optional comma-separated list of tool names that require explicit approval before execution.
  • GITLAB_TOOL_POLICY_HIDDEN — Optional comma-separated list of tool names to hide from tools/list.
  • NODE_TLS_REJECT_UNAUTHORIZED — Set to 0 only when you intentionally need to connect to a GitLab instance with invalid or self-signed TLS certificates.
  • GITLAB_CA_CERT_PATH — Optional path to a custom CA certificate file for self-managed GitLab instances.
  • GITLAB_MASKING_ENABLED — Set to true to mask text tool results and returned errors using built-in or configured rules.
  • GITLAB_MASKING_CONFIG — Optional path to a response-masking JSON configuration file.
  • GITLAB_MASKING_POLICY_FILE — Optional protected server-owned JSON file containing managed masking policies.
  • GITLAB_MASKING_WORKSPACE_DIR — Directory used to resolve response-masking configuration paths.

Related servers

Data from the Official MCP Registry