NestDaddy

GitLab MCP Server

io.github.zereight/gitlab-mcp · v2.3.26

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

Connect Runs on your machine

Terminal
claude mcp add gitlab-mcp -e GITLAB_PERSONAL_ACCESS_TOKEN=<GITLAB_PERSONAL_ACCESS_TOKEN> -e GITLAB_PERSONAL_ACCESS_TOKEN_FILE=<GITLAB_PERSONAL_ACCESS_TOKEN_FILE> -e GITLAB_JOB_TOKEN=<GITLAB_JOB_TOKEN> -e GITLAB_AUTH_COOKIE_PATH=<GITLAB_AUTH_COOKIE_PATH> -e GITLAB_USE_OAUTH=<GITLAB_USE_OAUTH> -e GITLAB_OAUTH_CLIENT_ID=<GITLAB_OAUTH_CLIENT_ID> -e GITLAB_OAUTH_TOKEN_SCRIPT=<GITLAB_OAUTH_TOKEN_SCRIPT> -e GITLAB_API_URL=<GITLAB_API_URL> -e GITLAB_ALLOWED_PROJECT_IDS=<GITLAB_ALLOWED_PROJECT_IDS> -e GITLAB_PERMISSION_MODE=<GITLAB_PERMISSION_MODE> -e GITLAB_TOOLSETS=<GITLAB_TOOLSETS> -e GITLAB_TOOLS=<GITLAB_TOOLS> -e GITLAB_DENIED_TOOLS_REGEX=<GITLAB_DENIED_TOOLS_REGEX> -e GITLAB_TOOL_POLICY_APPROVE=<GITLAB_TOOL_POLICY_APPROVE> -e GITLAB_TOOL_POLICY_HIDDEN=<GITLAB_TOOL_POLICY_HIDDEN> -e NODE_TLS_REJECT_UNAUTHORIZED=<NODE_TLS_REJECT_UNAUTHORIZED> -e GITLAB_CA_CERT_PATH=<GITLAB_CA_CERT_PATH> -e GITLAB_MASKING_ENABLED=<GITLAB_MASKING_ENABLED> -e GITLAB_MASKING_CONFIG=<GITLAB_MASKING_CONFIG> -e GITLAB_MASKING_POLICY_FILE=<GITLAB_MASKING_POLICY_FILE> -e GITLAB_MASKING_WORKSPACE_DIR=<GITLAB_MASKING_WORKSPACE_DIR> -- npx -y @zereight/[email protected]
claude_desktop_config.json
{
  "mcpServers": {
    "gitlab-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "@zereight/[email protected]"
      ],
      "env": {
        "GITLAB_PERSONAL_ACCESS_TOKEN": "<GITLAB_PERSONAL_ACCESS_TOKEN>",
        "GITLAB_PERSONAL_ACCESS_TOKEN_FILE": "<GITLAB_PERSONAL_ACCESS_TOKEN_FILE>",
        "GITLAB_JOB_TOKEN": "<GITLAB_JOB_TOKEN>",
        "GITLAB_AUTH_COOKIE_PATH": "<GITLAB_AUTH_COOKIE_PATH>",
        "GITLAB_USE_OAUTH": "<GITLAB_USE_OAUTH>",
        "GITLAB_OAUTH_CLIENT_ID": "<GITLAB_OAUTH_CLIENT_ID>",
        "GITLAB_OAUTH_TOKEN_SCRIPT": "<GITLAB_OAUTH_TOKEN_SCRIPT>",
        "GITLAB_API_URL": "<GITLAB_API_URL>",
        "GITLAB_ALLOWED_PROJECT_IDS": "<GITLAB_ALLOWED_PROJECT_IDS>",
        "GITLAB_PERMISSION_MODE": "<GITLAB_PERMISSION_MODE>",
        "GITLAB_TOOLSETS": "<GITLAB_TOOLSETS>",
        "GITLAB_TOOLS": "<GITLAB_TOOLS>",
        "GITLAB_DENIED_TOOLS_REGEX": "<GITLAB_DENIED_TOOLS_REGEX>",
        "GITLAB_TOOL_POLICY_APPROVE": "<GITLAB_TOOL_POLICY_APPROVE>",
        "GITLAB_TOOL_POLICY_HIDDEN": "<GITLAB_TOOL_POLICY_HIDDEN>",
        "NODE_TLS_REJECT_UNAUTHORIZED": "<NODE_TLS_REJECT_UNAUTHORIZED>",
        "GITLAB_CA_CERT_PATH": "<GITLAB_CA_CERT_PATH>",
        "GITLAB_MASKING_ENABLED": "<GITLAB_MASKING_ENABLED>",
        "GITLAB_MASKING_CONFIG": "<GITLAB_MASKING_CONFIG>",
        "GITLAB_MASKING_POLICY_FILE": "<GITLAB_MASKING_POLICY_FILE>",
        "GITLAB_MASKING_WORKSPACE_DIR": "<GITLAB_MASKING_WORKSPACE_DIR>"
      }
    }
  }
}
~/.cursor/mcp.json
{
  "mcpServers": {
    "gitlab-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "@zereight/[email protected]"
      ],
      "env": {
        "GITLAB_PERSONAL_ACCESS_TOKEN": "<GITLAB_PERSONAL_ACCESS_TOKEN>",
        "GITLAB_PERSONAL_ACCESS_TOKEN_FILE": "<GITLAB_PERSONAL_ACCESS_TOKEN_FILE>",
        "GITLAB_JOB_TOKEN": "<GITLAB_JOB_TOKEN>",
        "GITLAB_AUTH_COOKIE_PATH": "<GITLAB_AUTH_COOKIE_PATH>",
        "GITLAB_USE_OAUTH": "<GITLAB_USE_OAUTH>",
        "GITLAB_OAUTH_CLIENT_ID": "<GITLAB_OAUTH_CLIENT_ID>",
        "GITLAB_OAUTH_TOKEN_SCRIPT": "<GITLAB_OAUTH_TOKEN_SCRIPT>",
        "GITLAB_API_URL": "<GITLAB_API_URL>",
        "GITLAB_ALLOWED_PROJECT_IDS": "<GITLAB_ALLOWED_PROJECT_IDS>",
        "GITLAB_PERMISSION_MODE": "<GITLAB_PERMISSION_MODE>",
        "GITLAB_TOOLSETS": "<GITLAB_TOOLSETS>",
        "GITLAB_TOOLS": "<GITLAB_TOOLS>",
        "GITLAB_DENIED_TOOLS_REGEX": "<GITLAB_DENIED_TOOLS_REGEX>",
        "GITLAB_TOOL_POLICY_APPROVE": "<GITLAB_TOOL_POLICY_APPROVE>",
        "GITLAB_TOOL_POLICY_HIDDEN": "<GITLAB_TOOL_POLICY_HIDDEN>",
        "NODE_TLS_REJECT_UNAUTHORIZED": "<NODE_TLS_REJECT_UNAUTHORIZED>",
        "GITLAB_CA_CERT_PATH": "<GITLAB_CA_CERT_PATH>",
        "GITLAB_MASKING_ENABLED": "<GITLAB_MASKING_ENABLED>",
        "GITLAB_MASKING_CONFIG": "<GITLAB_MASKING_CONFIG>",
        "GITLAB_MASKING_POLICY_FILE": "<GITLAB_MASKING_POLICY_FILE>",
        "GITLAB_MASKING_WORKSPACE_DIR": "<GITLAB_MASKING_WORKSPACE_DIR>"
      }
    }
  }
}
.vscode/mcp.json
{
  "servers": {
    "gitlab-mcp": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "@zereight/[email protected]"
      ],
      "env": {
        "GITLAB_PERSONAL_ACCESS_TOKEN": "<GITLAB_PERSONAL_ACCESS_TOKEN>",
        "GITLAB_PERSONAL_ACCESS_TOKEN_FILE": "<GITLAB_PERSONAL_ACCESS_TOKEN_FILE>",
        "GITLAB_JOB_TOKEN": "<GITLAB_JOB_TOKEN>",
        "GITLAB_AUTH_COOKIE_PATH": "<GITLAB_AUTH_COOKIE_PATH>",
        "GITLAB_USE_OAUTH": "<GITLAB_USE_OAUTH>",
        "GITLAB_OAUTH_CLIENT_ID": "<GITLAB_OAUTH_CLIENT_ID>",
        "GITLAB_OAUTH_TOKEN_SCRIPT": "<GITLAB_OAUTH_TOKEN_SCRIPT>",
        "GITLAB_API_URL": "<GITLAB_API_URL>",
        "GITLAB_ALLOWED_PROJECT_IDS": "<GITLAB_ALLOWED_PROJECT_IDS>",
        "GITLAB_PERMISSION_MODE": "<GITLAB_PERMISSION_MODE>",
        "GITLAB_TOOLSETS": "<GITLAB_TOOLSETS>",
        "GITLAB_TOOLS": "<GITLAB_TOOLS>",
        "GITLAB_DENIED_TOOLS_REGEX": "<GITLAB_DENIED_TOOLS_REGEX>",
        "GITLAB_TOOL_POLICY_APPROVE": "<GITLAB_TOOL_POLICY_APPROVE>",
        "GITLAB_TOOL_POLICY_HIDDEN": "<GITLAB_TOOL_POLICY_HIDDEN>",
        "NODE_TLS_REJECT_UNAUTHORIZED": "<NODE_TLS_REJECT_UNAUTHORIZED>",
        "GITLAB_CA_CERT_PATH": "<GITLAB_CA_CERT_PATH>",
        "GITLAB_MASKING_ENABLED": "<GITLAB_MASKING_ENABLED>",
        "GITLAB_MASKING_CONFIG": "<GITLAB_MASKING_CONFIG>",
        "GITLAB_MASKING_POLICY_FILE": "<GITLAB_MASKING_POLICY_FILE>",
        "GITLAB_MASKING_WORKSPACE_DIR": "<GITLAB_MASKING_WORKSPACE_DIR>"
      }
    }
  }
}

Replace the values in angle brackets with your own. Keys stay on your machine; we never see them.

Tools

This server runs locally, so its tools are listed by your MCP client once it starts.

Environment variables

NameDescription
GITLAB_PERSONAL_ACCESS_TOKEN
Optional, 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 nee…
GITLAB_PERSONAL_ACCESS_TOKEN_FILE
Optional
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
Optional, secret
Optional GitLab CI job token to use instead of a personal access token when running inside GitLab CI.
GITLAB_AUTH_COOKIE_PATH
Optional
Optional path to a GitLab authentication cookie file for cookie-based authentication.
GITLAB_USE_OAUTH
Optional
Set to true to start with GitLab OAuth instead of a personal access token, job token, or cookie file.
GITLAB_OAUTH_CLIENT_ID
Optional
GitLab OAuth application ID. When GITLAB_USE_OAUTH=true, set this or GITLAB_OAUTH_TOKEN_SCRIPT.
GITLAB_OAUTH_TOKEN_SCRIPT
Optional
Command that prints an OAuth access token. When GITLAB_USE_OAUTH=true, set this or GITLAB_OAUTH_CLIENT_ID.
GITLAB_API_URL
Optional
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
Optional comma-separated list of GitLab project IDs that this server is allowed to access.
GITLAB_PERMISSION_MODE
Optional
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
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
Optional comma-separated list of individual tool names to add on top of enabled toolsets.
GITLAB_DENIED_TOOLS_REGEX
Optional
Optional regular expression used to hide matching tools from the server.
GITLAB_TOOL_POLICY_APPROVE
Optional
Optional comma-separated list of tool names that require explicit approval before execution.
GITLAB_TOOL_POLICY_HIDDEN
Optional
Optional comma-separated list of tool names to hide from tools/list.
NODE_TLS_REJECT_UNAUTHORIZED
Optional
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
Optional path to a custom CA certificate file for self-managed GitLab instances.
GITLAB_MASKING_ENABLED
Optional
Set to true to mask text tool results and returned errors using built-in or configured rules.
GITLAB_MASKING_CONFIG
Optional
Optional path to a response-masking JSON configuration file.
GITLAB_MASKING_POLICY_FILE
Optional
Optional protected server-owned JSON file containing managed masking policies.
GITLAB_MASKING_WORKSPACE_DIR
Optional
Directory used to resolve response-masking configuration paths.

Details

Package@zereight/[email protected] (NPM, stdio)
Packagedocker.io/zereight050/gitlab-mcp:2.3.26 (OCI, stdio)
First published12 Nov 2026
Last updated12 Nov 2026
Registry nameio.github.zereight/gitlab-mcp

More developer tools servers See all

Listing data from the official MCP registry. Status and tools from NestDaddy's daily check. Browse all MCP servers.