Home › Version Control › GitLab MCP Server
GitLab MCP Server
Go MCP server for GitLab: 2 dynamic tools reach 1000+ REST/GraphQL actions. Free/CE, no paid tier.
Topics: Version Control
Connect
Review any command before running it. Package names and URLs come from the server's own registry entry.
Remote (streamable-http)
https://mcp.jmrp.io/gitlab Requires auth (checked 2026-09-24)
Claude Code:
claude mcp add --transport http gitlab-mcp-server https://mcp.jmrp.io/gitlab --header "Authorization: <YOUR_VALUE>"
Or add to your MCP client config:
{
"mcpServers": {
"gitlab-mcp-server": {
"url": "https://mcp.jmrp.io/gitlab",
"headers": {
"Authorization": "<YOUR_VALUE>"
}
}
}
}
Authorizationsecret — Bearer <token>. The endpoint runs in OAuth mode: a client that speaks the OAuth flow needs no header at all and discovers the authorization server from the 401 challenge. A GitLab personal access token also works here, sent as 'Bearer glpat-...', which keeps clients with no OAuth flow working. It travels per request and is never stored server-side.
Package (mcpb 3.0.0)
Package: mcpb https://github.com/jmrplens/gitlab-mcp-server/releases/download/v3.0.0/gitlab-mcp-server.mcpb
GITLAB_URL— GitLab instance URL (default: https://gitlab.com; set for self-managed instances)GITLAB_TOKENrequired secret — 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 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 booleanGITLAB_MCP_READ_ONLY— Read-only mode: disables all mutating tools (default: false)GITLAB_MCP_SAFE_MODE— Safe mode: intercepts mutating tools and returns a JSON preview instead of executing (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 to exclude from registration (e.g. gitlab_admin,gitlab_runner)GITLAB_MCP_IGNORE_SCOPES— Skip Personal Access Token scope detection and register all tools regardless of token permissions (default: false)GITLAB_MCP_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 archivesGITLAB_MCP_RATE_LIMIT_RPS— Per-server tools/call rate limit in requests per second; 0 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)
Package (oci)
docker run -i --rm ghcr.io/jmrplens/gitlab-mcp-server:3.0.0@sha256:80990c658d2ac1b95c98540fbd8fc2bcf300a86a9b18c73483ed7412441b2c04
Or add to your MCP client config:
{
"mcpServers": {
"gitlab-mcp-server": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"ghcr.io/jmrplens/gitlab-mcp-server:3.0.0@sha256:80990c658d2ac1b95c98540fbd8fc2bcf300a86a9b18c73483ed7412441b2c04"
],
"env": {
"GITLAB_URL": "<YOUR_VALUE>",
"GITLAB_TOKEN": "<YOUR_VALUE>",
"GITLAB_MCP_SKIP_TLS_VERIFY": "<YOUR_VALUE>",
"GITLAB_MCP_TOOL_SURFACE": "<YOUR_VALUE>",
"GITLAB_MCP_CAPABILITY_SURFACE": "<YOUR_VALUE>",
"GITLAB_MCP_META_PARAM_SCHEMA": "<YOUR_VALUE>",
"GITLAB_MCP_TIER": "<YOUR_VALUE>",
"GITLAB_MCP_READ_ONLY": "<YOUR_VALUE>",
"GITLAB_MCP_SAFE_MODE": "<YOUR_VALUE>",
"GITLAB_MCP_EMBEDDED_RESOURCES": "<YOUR_VALUE>",
"GITLAB_MCP_EXCLUDE_TOOLS": "<YOUR_VALUE>",
"GITLAB_MCP_IGNORE_SCOPES": "<YOUR_VALUE>",
"GITLAB_MCP_UPLOAD_MAX_FILE_SIZE": "<YOUR_VALUE>",
"GITLAB_MCP_ALLOWED_IMPORT_DIRS": "<YOUR_VALUE>",
"GITLAB_MCP_RATE_LIMIT_RPS": "<YOUR_VALUE>",
"GITLAB_MCP_RATE_LIMIT_BURST": "<YOUR_VALUE>",
"GITLAB_MCP_LOG_LEVEL": "<YOUR_VALUE>"
}
}
}
}
GITLAB_URL— GitLab instance URL (default: https://gitlab.com; set for self-managed instances)GITLAB_TOKENrequired secret — 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 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 booleanGITLAB_MCP_READ_ONLY— Read-only mode: disables all mutating tools (default: false)GITLAB_MCP_SAFE_MODE— Safe mode: intercepts mutating tools and returns a JSON preview instead of executing (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 to exclude from registration (e.g. gitlab_admin,gitlab_runner)GITLAB_MCP_IGNORE_SCOPES— Skip Personal Access Token scope detection and register all tools regardless of token permissions (default: false)GITLAB_MCP_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 archivesGITLAB_MCP_RATE_LIMIT_RPS— Per-server tools/call rate limit in requests per second; 0 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)
Package (npm 3.0.0)
npx -y @jmrp.io/gitlab-mcp-server@3.0.0
Or add to your MCP client config:
{
"mcpServers": {
"gitlab-mcp-server": {
"command": "npx",
"args": [
"-y",
"@jmrp.io/gitlab-mcp-server@3.0.0"
],
"env": {
"GITLAB_URL": "<YOUR_VALUE>",
"GITLAB_TOKEN": "<YOUR_VALUE>",
"GITLAB_MCP_SKIP_TLS_VERIFY": "<YOUR_VALUE>",
"GITLAB_MCP_TOOL_SURFACE": "<YOUR_VALUE>",
"GITLAB_MCP_CAPABILITY_SURFACE": "<YOUR_VALUE>",
"GITLAB_MCP_META_PARAM_SCHEMA": "<YOUR_VALUE>",
"GITLAB_MCP_TIER": "<YOUR_VALUE>",
"GITLAB_MCP_READ_ONLY": "<YOUR_VALUE>",
"GITLAB_MCP_SAFE_MODE": "<YOUR_VALUE>",
"GITLAB_MCP_EMBEDDED_RESOURCES": "<YOUR_VALUE>",
"GITLAB_MCP_EXCLUDE_TOOLS": "<YOUR_VALUE>",
"GITLAB_MCP_IGNORE_SCOPES": "<YOUR_VALUE>",
"GITLAB_MCP_UPLOAD_MAX_FILE_SIZE": "<YOUR_VALUE>",
"GITLAB_MCP_ALLOWED_IMPORT_DIRS": "<YOUR_VALUE>",
"GITLAB_MCP_RATE_LIMIT_RPS": "<YOUR_VALUE>",
"GITLAB_MCP_RATE_LIMIT_BURST": "<YOUR_VALUE>",
"GITLAB_MCP_LOG_LEVEL": "<YOUR_VALUE>"
}
}
}
}
GITLAB_URL— GitLab instance URL (default: https://gitlab.com; set for self-managed instances)GITLAB_TOKENrequired secret — 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 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 booleanGITLAB_MCP_READ_ONLY— Read-only mode: disables all mutating tools (default: false)GITLAB_MCP_SAFE_MODE— Safe mode: intercepts mutating tools and returns a JSON preview instead of executing (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 to exclude from registration (e.g. gitlab_admin,gitlab_runner)GITLAB_MCP_IGNORE_SCOPES— Skip Personal Access Token scope detection and register all tools regardless of token permissions (default: false)GITLAB_MCP_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 archivesGITLAB_MCP_RATE_LIMIT_RPS— Per-server tools/call rate limit in requests per second; 0 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)
Package (pypi 3.0.0)
uvx jmrplens-gitlab-mcp-server
Or add to your MCP client config:
{
"mcpServers": {
"gitlab-mcp-server": {
"command": "uvx",
"args": [
"jmrplens-gitlab-mcp-server"
],
"env": {
"GITLAB_URL": "<YOUR_VALUE>",
"GITLAB_TOKEN": "<YOUR_VALUE>",
"GITLAB_MCP_SKIP_TLS_VERIFY": "<YOUR_VALUE>",
"GITLAB_MCP_TOOL_SURFACE": "<YOUR_VALUE>",
"GITLAB_MCP_CAPABILITY_SURFACE": "<YOUR_VALUE>",
"GITLAB_MCP_META_PARAM_SCHEMA": "<YOUR_VALUE>",
"GITLAB_MCP_TIER": "<YOUR_VALUE>",
"GITLAB_MCP_READ_ONLY": "<YOUR_VALUE>",
"GITLAB_MCP_SAFE_MODE": "<YOUR_VALUE>",
"GITLAB_MCP_EMBEDDED_RESOURCES": "<YOUR_VALUE>",
"GITLAB_MCP_EXCLUDE_TOOLS": "<YOUR_VALUE>",
"GITLAB_MCP_IGNORE_SCOPES": "<YOUR_VALUE>",
"GITLAB_MCP_UPLOAD_MAX_FILE_SIZE": "<YOUR_VALUE>",
"GITLAB_MCP_ALLOWED_IMPORT_DIRS": "<YOUR_VALUE>",
"GITLAB_MCP_RATE_LIMIT_RPS": "<YOUR_VALUE>",
"GITLAB_MCP_RATE_LIMIT_BURST": "<YOUR_VALUE>",
"GITLAB_MCP_LOG_LEVEL": "<YOUR_VALUE>"
}
}
}
}
GITLAB_URL— GitLab instance URL (default: https://gitlab.com; set for self-managed instances)GITLAB_TOKENrequired secret — 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 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 booleanGITLAB_MCP_READ_ONLY— Read-only mode: disables all mutating tools (default: false)GITLAB_MCP_SAFE_MODE— Safe mode: intercepts mutating tools and returns a JSON preview instead of executing (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 to exclude from registration (e.g. gitlab_admin,gitlab_runner)GITLAB_MCP_IGNORE_SCOPES— Skip Personal Access Token scope detection and register all tools regardless of token permissions (default: false)GITLAB_MCP_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 archivesGITLAB_MCP_RATE_LIMIT_RPS— Per-server tools/call rate limit in requests per second; 0 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)
Package (nuget 3.0.0)
Package: nuget gitlab-mcp-server
GITLAB_URL— GitLab instance URL (default: https://gitlab.com; set for self-managed instances)GITLAB_TOKENrequired secret — 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 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 booleanGITLAB_MCP_READ_ONLY— Read-only mode: disables all mutating tools (default: false)GITLAB_MCP_SAFE_MODE— Safe mode: intercepts mutating tools and returns a JSON preview instead of executing (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 to exclude from registration (e.g. gitlab_admin,gitlab_runner)GITLAB_MCP_IGNORE_SCOPES— Skip Personal Access Token scope detection and register all tools regardless of token permissions (default: false)GITLAB_MCP_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 archivesGITLAB_MCP_RATE_LIMIT_RPS— Per-server tools/call rate limit in requests per second; 0 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)
Related servers
GitHub
Connect AI assistants to GitHub - manage repos, issues, PRs, and workflows through natural language.
mcp-server-azure-devops
Azure DevOps integration for repository management, work items, and pipelines.
mcp-git-ingest
Read and analyze GitHub repositories with your LLM
gitlab-mr-mcp
Interact seamlessly with issues and merge requests of your GitLab projects.
forgejo-mcp
An MCP server for managing your repositories on Forgejo/Gitea server.
Kin
A graph-native code repository for people and AI agents.
Listed in punkpeye/awesome-mcp-servers (MIT)
Data from the Official MCP Registry