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.
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 fullGITLAB_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 toolsGITLAB_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 pathsGITLAB_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 pathsGITLAB_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 pathsGITLAB_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 fullGITLAB_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 toolsGITLAB_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 pathsGITLAB_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 pathsGITLAB_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 pathsGITLAB_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 fullGITLAB_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 toolsGITLAB_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 pathsGITLAB_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 pathsGITLAB_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 pathsGITLAB_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 fullGITLAB_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 toolsGITLAB_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 pathsGITLAB_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 pathsGITLAB_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 pathsGITLAB_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
- Corvi CareersSearch remote and onsite jobs through the public Corvi Careers MCPβ¦
- Slidev MCPGenerate, render, and host Slidev presentations from markdown
- The Cracks IndexRead-only MCP server for The Cracks Index: ranks countries andβ¦
- Proximo β the governed client for ProxmoxThe governed client for Proxmox (PVE, PBS, PMG, PDM): plans, keepsβ¦
- PropFΓ‘cilSearch authorized real estate in Mexico and manage favorites andβ¦
- WorkflowCreate, browse, remix, collaborate on, and run durable AI workflowβ¦
- whichlibDependency picker for coding agents: recommends, compares and scoresβ¦
- Lacuna MusicGenerate AI music via the Lacuna Music API from MCP clients likeβ¦