gitlab-mcp-server
2.7.5
{ "inputs": [ { "type": "promptString", "id": "GITLAB_URL", "description": "GitLab instance URL (default: https://gitlab.com; set for self-managed instances)", "default": "https://gitlab.com" }, { "type": "promptString", "id": "GITLAB_TOKEN", "description": "GitLab Personal Access Token (glpat-...)", "password": true }, { "type": "promptString", "id": "GITLAB_MCP_SKIP_TLS_VERIFY", "description": "Skip TLS certificate verification for self-signed certs (default: false)", "default": "false" }, { "type": "pickString", "id": "GITLAB_MCP_TOOL_SURFACE", "description": "Tool catalog selector: dynamic, meta, or individual (default: dynamic)", "default": "dynamic", "options": ["meta", "individual", "dynamic"] }, { "type": "pickString", "id": "GITLAB_MCP_CAPABILITY_SURFACE", "description": "Resource and prompt catalog selector: full or minimal (default: full); resource subscriptions require full", "default": "full", "options": ["full", "minimal"] }, { "type": "pickString", "id": "GITLAB_MCP_META_PARAM_SCHEMA", "description": "Meta-tool input schema detail: opaque, compact, or full (default: opaque)", "default": "opaque", "options": ["opaque", "compact", "full"] }, { "type": "pickString", "id": "GITLAB_MCP_TIER", "description": "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", "options": ["free", "ce", "premium", "ultimate"] }, { "type": "promptString", "id": "GITLAB_MCP_READ_ONLY", "description": "Read-only mode: disables all mutating tools (default: false)", "default": "false" }, { "type": "promptString", "id": "GITLAB_MCP_SAFE_MODE", "description": "Safe mode: intercepts mutating tools and returns a JSON preview instead of executing (default: false)", "default": "false" }, { "type": "promptString", "id": "GITLAB_MCP_EMBEDDED_RESOURCES", "description": "Append EmbeddedResource content blocks (clickable links to MCP resources) to get_* tool results (default: true)", "default": "true" }, { "type": "promptString", "id": "GITLAB_MCP_EXCLUDE_TOOLS", "description": "Comma-separated tool names to exclude from registration (e.g. gitlab_admin,gitlab_runner)" }, { "type": "promptString", "id": "GITLAB_MCP_IGNORE_SCOPES", "description": "Skip Personal Access Token scope detection and register all tools regardless of token permissions (default: false)", "default": "false" }, { "type": "promptString", "id": "GITLAB_MCP_UPLOAD_MAX_FILE_SIZE", "description": "Maximum attachment upload size in bytes or human-readable (e.g. 2GB). Default: 2147483648 (2 GB)", "default": "2147483648" }, { "type": "promptString", "id": "GITLAB_MCP_ALLOWED_IMPORT_DIRS", "description": "Extra OS path-list-separated directories allowed for local GitLab import archives" }, { "type": "promptString", "id": "GITLAB_MCP_RATE_LIMIT_RPS", "description": "Per-server tools/call rate limit in requests per second; 0 disables it (default: 0)", "default": "0" }, { "type": "promptString", "id": "GITLAB_MCP_RATE_LIMIT_BURST", "description": "Token-bucket burst size when GITLAB_MCP_RATE_LIMIT_RPS is greater than 0 (default: 40)", "default": "40" }, { "type": "pickString", "id": "GITLAB_MCP_LOG_LEVEL", "description": "Logging verbosity (default: info)", "default": "info", "options": ["debug", "info", "warn", "error"] } ], "servers": { "gitlab-mcp-server": { "type": "stdio", "command": "dnx", "args": ["gitlab-mcp-server@2.7.5", "--yes"], "env": { "GITLAB_URL": "${input:GITLAB_URL}", "GITLAB_TOKEN": "${input:GITLAB_TOKEN}", "GITLAB_MCP_SKIP_TLS_VERIFY": "${input:GITLAB_MCP_SKIP_TLS_VERIFY}", "GITLAB_MCP_TOOL_SURFACE": "${input:GITLAB_MCP_TOOL_SURFACE}", "GITLAB_MCP_CAPABILITY_SURFACE": "${input:GITLAB_MCP_CAPABILITY_SURFACE}", "GITLAB_MCP_META_PARAM_SCHEMA": "${input:GITLAB_MCP_META_PARAM_SCHEMA}", "GITLAB_MCP_TIER": "${input:GITLAB_MCP_TIER}", "GITLAB_MCP_READ_ONLY": "${input:GITLAB_MCP_READ_ONLY}", "GITLAB_MCP_SAFE_MODE": "${input:GITLAB_MCP_SAFE_MODE}", "GITLAB_MCP_EMBEDDED_RESOURCES": "${input:GITLAB_MCP_EMBEDDED_RESOURCES}", "GITLAB_MCP_EXCLUDE_TOOLS": "${input:GITLAB_MCP_EXCLUDE_TOOLS}", "GITLAB_MCP_IGNORE_SCOPES": "${input:GITLAB_MCP_IGNORE_SCOPES}", "GITLAB_MCP_UPLOAD_MAX_FILE_SIZE": "${input:GITLAB_MCP_UPLOAD_MAX_FILE_SIZE}", "GITLAB_MCP_ALLOWED_IMPORT_DIRS": "${input:GITLAB_MCP_ALLOWED_IMPORT_DIRS}", "GITLAB_MCP_RATE_LIMIT_RPS": "${input:GITLAB_MCP_RATE_LIMIT_RPS}", "GITLAB_MCP_RATE_LIMIT_BURST": "${input:GITLAB_MCP_RATE_LIMIT_BURST}", "GITLAB_MCP_LOG_LEVEL": "${input:GITLAB_MCP_LOG_LEVEL}" } } } }
.vscode/mcp.json settings file.
dotnet tool install --global gitlab-mcp-server --version 2.7.5
dotnet new tool-manifest
dotnet tool install --local gitlab-mcp-server --version 2.7.5
#tool dotnet:?package=gitlab-mcp-server&version=2.7.5
nuke :add-package gitlab-mcp-server --version 2.7.5
GitLab MCP Server
GitLab for your AI assistant: a Model Context Protocol server exposing GitLab REST API v4 and GraphQL operations as MCP tools. Projects, issues, merge requests, pipelines, CI/CD, wikis, releases, users, groups, search and more, against GitLab.com or any self-managed instance.
This package is a .NET tool whose entry point is the native gitlab-mcp-server binary (written in Go). It is a pointer package plus one package per runtime identifier, the layout the .NET 10 SDK uses for tools that ship a platform-specific executable: dotnet tool install and dnx resolve the package for your operating system and architecture and run the binary directly. No .NET runtime is involved once the server is running, nothing compiles, and nothing is downloaded at install time beyond the two packages.
Quick start
Run it directly with dnx (the .NET 10 SDK's tool runner):
GITLAB_TOKEN=glpat-xxxxxxxxxxxxxxxxxxxx dnx gitlab-mcp-server
Or install it on your PATH:
dotnet tool install -g gitlab-mcp-server
Either way the command is gitlab-mcp-server. Two things about dnx worth knowing: it reads its own options anywhere on the command line, so arguments meant for the server go after -- (dnx gitlab-mcp-server -- --version; without the separator, --version is read as dnx's own option and prints its usage); and the .NET 10 SDK's dnx installs the tool without asking when its standard input is not a terminal, which is how an MCP client starts it, so a client configuration needs no extra flag.
Typical MCP client configuration (stdio):
{
"mcpServers": {
"gitlab": {
"command": "dnx",
"args": ["gitlab-mcp-server"],
"env": {
"GITLAB_URL": "https://gitlab.com",
"GITLAB_TOKEN": "glpat-xxxxxxxxxxxxxxxxxxxx"
}
}
}
}
GITLAB_TOKEN is the only required setting. GITLAB_URL defaults to https://gitlab.com; point it at your own host for self-managed instances.
Configuration
Everything is configured through environment variables: GITLAB_MCP_TOOL_SURFACE (dynamic, meta or individual tool catalogs), GITLAB_MCP_READ_ONLY, GITLAB_MCP_SAFE_MODE, GITLAB_MCP_TIER, rate limiting, telemetry and more. See the configuration guide for the full reference.
Platform support
Packages are published for linux-x64, linux-arm64, osx-x64, osx-arm64, win-x64 and win-arm64. The Linux binaries need glibc; on musl systems such as Alpine, use the container image ghcr.io/jmrplens/gitlab-mcp-server instead. Installing or running the tool needs the .NET 10 SDK or newer; the tool manifest format the runtime-specific packages use does not exist in older SDKs.
Links
License
MIT
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
This package has no dependencies.
| Version | Downloads | Last Updated |
|---|---|---|
| 2.7.5 | 55 | 9/5/2026 |