PluginBench
MCP Server

GitLab MCP Server MCP Server

io.github.jmrplens/gitlab-mcp-server

What is the GitLab MCP Server MCP server?

Manage GitLab projects, issues, merge requests, pipelines, repositories, and admin workflows.

How to install GitLab MCP Server

Copy-paste configuration for popular MCP clients.

transport: stdio
Config generated by PluginBench — verify against the source before use.
Environment / auth
  • GITLAB_URL

    GitLab instance URL (default: https://gitlab.com; set for self-managed instances)

  • GITLAB_TOKEN
    required
    secret

    GitLab Personal Access Token (glpat-...)

  • GITLAB_SKIP_TLS_VERIFY

    Skip TLS certificate verification for self-signed certs (default: false)

  • TOOL_SURFACE

    Tool catalog selector: dynamic, meta, or individual (default: dynamic)

  • CAPABILITY_SURFACE

    Resource and prompt catalog selector: full or minimal (default: full)

  • META_PARAM_SCHEMA

    Meta-tool input schema detail: opaque, compact, or full (default: opaque)

  • GITLAB_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_READ_ONLY

    Read-only mode: disables all mutating tools (default: false)

  • GITLAB_SAFE_MODE

    Safe mode: intercepts mutating tools and returns a JSON preview instead of executing (default: false)

  • EMBEDDED_RESOURCES

    Append EmbeddedResource content blocks (clickable links to MCP resources) to get_* tool results (default: true)

  • EXCLUDE_TOOLS

    Comma-separated tool names to exclude from registration (e.g. gitlab_admin,gitlab_runner)

  • GITLAB_IGNORE_SCOPES

    Skip Personal Access Token scope detection and register all tools regardless of token permissions (default: false)

  • 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

  • RATE_LIMIT_RPS

    Per-server tools/call rate limit in requests per second; 0 disables it (default: 0)

  • RATE_LIMIT_BURST

    Token-bucket burst size when RATE_LIMIT_RPS is greater than 0 (default: 40)

  • LOG_LEVEL

    Logging verbosity (default: info)

  • AUTO_UPDATE

    Auto-update mode: true (auto-apply), check (log-only), false (disabled). Default: true

  • AUTO_UPDATE_REPO

    GitHub repository slug for release assets (default: jmrplens/gitlab-mcp-server)

  • AUTO_UPDATE_INTERVAL

    Periodic update check interval in HTTP mode (default: 1h)

  • AUTO_UPDATE_TIMEOUT

    Startup/background update timeout, range 5s-10m (default: 60s)

  • PRIVATE-TOKEN
    required
    secret

    GitLab Personal Access Token (glpat-...). Alternatively, send Authorization: Bearer <token>.

  • GITLAB-URL
    required

    Target GitLab instance URL (e.g. https://gitlab.com). Required in the public hosted multi-tenant instance.

Claude Desktop
~/Library/Application Support/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "gitlab-mcp-server": {
      "command": "https://github.com/jmrplens/gitlab-mcp-server/releases/download/v2.3.0/gitlab-mcp-server-linux-amd64",
      "args": [],
      "env": {
        "GITLAB_URL": "<YOUR_GITLAB_URL>",
        "GITLAB_TOKEN": "<YOUR_GITLAB_TOKEN>",
        "GITLAB_SKIP_TLS_VERIFY": "<YOUR_GITLAB_SKIP_TLS_VERIFY>",
        "TOOL_SURFACE": "<YOUR_TOOL_SURFACE>",
        "CAPABILITY_SURFACE": "<YOUR_CAPABILITY_SURFACE>",
        "META_PARAM_SCHEMA": "<YOUR_META_PARAM_SCHEMA>",
        "GITLAB_TIER": "<YOUR_GITLAB_TIER>",
        "GITLAB_READ_ONLY": "<YOUR_GITLAB_READ_ONLY>",
        "GITLAB_SAFE_MODE": "<YOUR_GITLAB_SAFE_MODE>",
        "EMBEDDED_RESOURCES": "<YOUR_EMBEDDED_RESOURCES>",
        "EXCLUDE_TOOLS": "<YOUR_EXCLUDE_TOOLS>",
        "GITLAB_IGNORE_SCOPES": "<YOUR_GITLAB_IGNORE_SCOPES>",
        "UPLOAD_MAX_FILE_SIZE": "<YOUR_UPLOAD_MAX_FILE_SIZE>",
        "GITLAB_MCP_ALLOWED_IMPORT_DIRS": "<YOUR_GITLAB_MCP_ALLOWED_IMPORT_DIRS>",
        "RATE_LIMIT_RPS": "<YOUR_RATE_LIMIT_RPS>",
        "RATE_LIMIT_BURST": "<YOUR_RATE_LIMIT_BURST>",
        "LOG_LEVEL": "<YOUR_LOG_LEVEL>",
        "AUTO_UPDATE": "<YOUR_AUTO_UPDATE>",
        "AUTO_UPDATE_REPO": "<YOUR_AUTO_UPDATE_REPO>",
        "AUTO_UPDATE_INTERVAL": "<YOUR_AUTO_UPDATE_INTERVAL>",
        "AUTO_UPDATE_TIMEOUT": "<YOUR_AUTO_UPDATE_TIMEOUT>",
        "PRIVATE-TOKEN": "<YOUR_PRIVATE_TOKEN>",
        "GITLAB-URL": "<YOUR_GITLAB_URL>"
      }
    }
  }
}
Cursor
~/.cursor/mcp.json
{
  "mcpServers": {
    "gitlab-mcp-server": {
      "command": "https://github.com/jmrplens/gitlab-mcp-server/releases/download/v2.3.0/gitlab-mcp-server-linux-amd64",
      "args": [],
      "env": {
        "GITLAB_URL": "<YOUR_GITLAB_URL>",
        "GITLAB_TOKEN": "<YOUR_GITLAB_TOKEN>",
        "GITLAB_SKIP_TLS_VERIFY": "<YOUR_GITLAB_SKIP_TLS_VERIFY>",
        "TOOL_SURFACE": "<YOUR_TOOL_SURFACE>",
        "CAPABILITY_SURFACE": "<YOUR_CAPABILITY_SURFACE>",
        "META_PARAM_SCHEMA": "<YOUR_META_PARAM_SCHEMA>",
        "GITLAB_TIER": "<YOUR_GITLAB_TIER>",
        "GITLAB_READ_ONLY": "<YOUR_GITLAB_READ_ONLY>",
        "GITLAB_SAFE_MODE": "<YOUR_GITLAB_SAFE_MODE>",
        "EMBEDDED_RESOURCES": "<YOUR_EMBEDDED_RESOURCES>",
        "EXCLUDE_TOOLS": "<YOUR_EXCLUDE_TOOLS>",
        "GITLAB_IGNORE_SCOPES": "<YOUR_GITLAB_IGNORE_SCOPES>",
        "UPLOAD_MAX_FILE_SIZE": "<YOUR_UPLOAD_MAX_FILE_SIZE>",
        "GITLAB_MCP_ALLOWED_IMPORT_DIRS": "<YOUR_GITLAB_MCP_ALLOWED_IMPORT_DIRS>",
        "RATE_LIMIT_RPS": "<YOUR_RATE_LIMIT_RPS>",
        "RATE_LIMIT_BURST": "<YOUR_RATE_LIMIT_BURST>",
        "LOG_LEVEL": "<YOUR_LOG_LEVEL>",
        "AUTO_UPDATE": "<YOUR_AUTO_UPDATE>",
        "AUTO_UPDATE_REPO": "<YOUR_AUTO_UPDATE_REPO>",
        "AUTO_UPDATE_INTERVAL": "<YOUR_AUTO_UPDATE_INTERVAL>",
        "AUTO_UPDATE_TIMEOUT": "<YOUR_AUTO_UPDATE_TIMEOUT>",
        "PRIVATE-TOKEN": "<YOUR_PRIVATE_TOKEN>",
        "GITLAB-URL": "<YOUR_GITLAB_URL>"
      }
    }
  }
}
Windsurf
~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "gitlab-mcp-server": {
      "command": "https://github.com/jmrplens/gitlab-mcp-server/releases/download/v2.3.0/gitlab-mcp-server-linux-amd64",
      "args": [],
      "env": {
        "GITLAB_URL": "<YOUR_GITLAB_URL>",
        "GITLAB_TOKEN": "<YOUR_GITLAB_TOKEN>",
        "GITLAB_SKIP_TLS_VERIFY": "<YOUR_GITLAB_SKIP_TLS_VERIFY>",
        "TOOL_SURFACE": "<YOUR_TOOL_SURFACE>",
        "CAPABILITY_SURFACE": "<YOUR_CAPABILITY_SURFACE>",
        "META_PARAM_SCHEMA": "<YOUR_META_PARAM_SCHEMA>",
        "GITLAB_TIER": "<YOUR_GITLAB_TIER>",
        "GITLAB_READ_ONLY": "<YOUR_GITLAB_READ_ONLY>",
        "GITLAB_SAFE_MODE": "<YOUR_GITLAB_SAFE_MODE>",
        "EMBEDDED_RESOURCES": "<YOUR_EMBEDDED_RESOURCES>",
        "EXCLUDE_TOOLS": "<YOUR_EXCLUDE_TOOLS>",
        "GITLAB_IGNORE_SCOPES": "<YOUR_GITLAB_IGNORE_SCOPES>",
        "UPLOAD_MAX_FILE_SIZE": "<YOUR_UPLOAD_MAX_FILE_SIZE>",
        "GITLAB_MCP_ALLOWED_IMPORT_DIRS": "<YOUR_GITLAB_MCP_ALLOWED_IMPORT_DIRS>",
        "RATE_LIMIT_RPS": "<YOUR_RATE_LIMIT_RPS>",
        "RATE_LIMIT_BURST": "<YOUR_RATE_LIMIT_BURST>",
        "LOG_LEVEL": "<YOUR_LOG_LEVEL>",
        "AUTO_UPDATE": "<YOUR_AUTO_UPDATE>",
        "AUTO_UPDATE_REPO": "<YOUR_AUTO_UPDATE_REPO>",
        "AUTO_UPDATE_INTERVAL": "<YOUR_AUTO_UPDATE_INTERVAL>",
        "AUTO_UPDATE_TIMEOUT": "<YOUR_AUTO_UPDATE_TIMEOUT>",
        "PRIVATE-TOKEN": "<YOUR_PRIVATE_TOKEN>",
        "GITLAB-URL": "<YOUR_GITLAB_URL>"
      }
    }
  }
}
VS Code
.vscode/mcp.json
{
  "servers": {
    "gitlab-mcp-server": {
      "type": "stdio",
      "command": "https://github.com/jmrplens/gitlab-mcp-server/releases/download/v2.3.0/gitlab-mcp-server-linux-amd64",
      "args": [],
      "env": {
        "GITLAB_URL": "<YOUR_GITLAB_URL>",
        "GITLAB_TOKEN": "<YOUR_GITLAB_TOKEN>",
        "GITLAB_SKIP_TLS_VERIFY": "<YOUR_GITLAB_SKIP_TLS_VERIFY>",
        "TOOL_SURFACE": "<YOUR_TOOL_SURFACE>",
        "CAPABILITY_SURFACE": "<YOUR_CAPABILITY_SURFACE>",
        "META_PARAM_SCHEMA": "<YOUR_META_PARAM_SCHEMA>",
        "GITLAB_TIER": "<YOUR_GITLAB_TIER>",
        "GITLAB_READ_ONLY": "<YOUR_GITLAB_READ_ONLY>",
        "GITLAB_SAFE_MODE": "<YOUR_GITLAB_SAFE_MODE>",
        "EMBEDDED_RESOURCES": "<YOUR_EMBEDDED_RESOURCES>",
        "EXCLUDE_TOOLS": "<YOUR_EXCLUDE_TOOLS>",
        "GITLAB_IGNORE_SCOPES": "<YOUR_GITLAB_IGNORE_SCOPES>",
        "UPLOAD_MAX_FILE_SIZE": "<YOUR_UPLOAD_MAX_FILE_SIZE>",
        "GITLAB_MCP_ALLOWED_IMPORT_DIRS": "<YOUR_GITLAB_MCP_ALLOWED_IMPORT_DIRS>",
        "RATE_LIMIT_RPS": "<YOUR_RATE_LIMIT_RPS>",
        "RATE_LIMIT_BURST": "<YOUR_RATE_LIMIT_BURST>",
        "LOG_LEVEL": "<YOUR_LOG_LEVEL>",
        "AUTO_UPDATE": "<YOUR_AUTO_UPDATE>",
        "AUTO_UPDATE_REPO": "<YOUR_AUTO_UPDATE_REPO>",
        "AUTO_UPDATE_INTERVAL": "<YOUR_AUTO_UPDATE_INTERVAL>",
        "AUTO_UPDATE_TIMEOUT": "<YOUR_AUTO_UPDATE_TIMEOUT>",
        "PRIVATE-TOKEN": "<YOUR_PRIVATE_TOKEN>",
        "GITLAB-URL": "<YOUR_GITLAB_URL>"
      }
    }
  }
}
Claude Code
claude mcp add gitlab-mcp-server --env GITLAB_URL=<YOUR_GITLAB_URL> --env GITLAB_TOKEN=<YOUR_GITLAB_TOKEN> --env GITLAB_SKIP_TLS_VERIFY=<YOUR_GITLAB_SKIP_TLS_VERIFY> --env TOOL_SURFACE=<YOUR_TOOL_SURFACE> --env CAPABILITY_SURFACE=<YOUR_CAPABILITY_SURFACE> --env META_PARAM_SCHEMA=<YOUR_META_PARAM_SCHEMA> --env GITLAB_TIER=<YOUR_GITLAB_TIER> --env GITLAB_READ_ONLY=<YOUR_GITLAB_READ_ONLY> --env GITLAB_SAFE_MODE=<YOUR_GITLAB_SAFE_MODE> --env EMBEDDED_RESOURCES=<YOUR_EMBEDDED_RESOURCES> --env EXCLUDE_TOOLS=<YOUR_EXCLUDE_TOOLS> --env GITLAB_IGNORE_SCOPES=<YOUR_GITLAB_IGNORE_SCOPES> --env UPLOAD_MAX_FILE_SIZE=<YOUR_UPLOAD_MAX_FILE_SIZE> --env GITLAB_MCP_ALLOWED_IMPORT_DIRS=<YOUR_GITLAB_MCP_ALLOWED_IMPORT_DIRS> --env RATE_LIMIT_RPS=<YOUR_RATE_LIMIT_RPS> --env RATE_LIMIT_BURST=<YOUR_RATE_LIMIT_BURST> --env LOG_LEVEL=<YOUR_LOG_LEVEL> --env AUTO_UPDATE=<YOUR_AUTO_UPDATE> --env AUTO_UPDATE_REPO=<YOUR_AUTO_UPDATE_REPO> --env AUTO_UPDATE_INTERVAL=<YOUR_AUTO_UPDATE_INTERVAL> --env AUTO_UPDATE_TIMEOUT=<YOUR_AUTO_UPDATE_TIMEOUT> --env PRIVATE-TOKEN=<YOUR_PRIVATE_TOKEN> --env GITLAB-URL=<YOUR_GITLAB_URL> -- https://github.com/jmrplens/gitlab-mcp-server/releases/download/v2.3.0/gitlab-mcp-server-linux-amd64

Related MCP servers

Give your AI agent stealth web scraping with Cloudflare bypass and CSS selection, powered by Scrapling.

67k
Python
BSD-3-Clause
View repository →

Give your AI coding agent full control of a live Chrome browser for automation, debugging, and performance analysis.

45k
TypeScript
Apache-2.0
View repository →

Let AI agents manage your Puter files, websites, and serverless workers over MCP.

43k
TypeScript
AGPL-3.0
View repository →

Browser automation for AI agents via MCP, powering ByteDance's Agent TARS hybrid GUI/DOM browser control.

37k
TypeScript
Apache-2.0
View repository →

Run arbitrary shell commands from an MCP-connected AI agent.

37k
TypeScript
Apache-2.0
View repository →

Filesystem access MCP server from ByteDance's UI-TARS/Agent TARS ecosystem.

37k
TypeScript
Apache-2.0
View repository →