GitLab MCP server (MCP 2026-07-28): projects, MRs, pipelines, CI/CD, issues; writes or read-only
Connect Runs on your machine
claude mcp add mcp-gitlab -e GITLAB_TOKEN=<GITLAB_TOKEN> -e GITLAB_URL=<GITLAB_URL> -e GITLAB_READ_ONLY=<GITLAB_READ_ONLY> -e MCP_READ_ONLY=<MCP_READ_ONLY> -e MCP_TOOLSETS=<MCP_TOOLSETS> -e GITLAB_AUTH=<GITLAB_AUTH> -e GITLAB_OAUTH_CLIENT_ID=<GITLAB_OAUTH_CLIENT_ID> -e GITLAB_OAUTH_CLIENT_SECRET=<GITLAB_OAUTH_CLIENT_SECRET> -e GITLAB_OAUTH_BASE_URL=<GITLAB_OAUTH_BASE_URL> -e GITLAB_OAUTH_SCOPES=<GITLAB_OAUTH_SCOPES> -e GITLAB_OAUTH_JWT_KEY=<GITLAB_OAUTH_JWT_KEY> -e GITLAB_HTTP_BEARER_TOKEN=<GITLAB_HTTP_BEARER_TOKEN> -- uvx mcp-gitlab==0.24.0
{
"mcpServers": {
"mcp-gitlab": {
"command": "uvx",
"args": [
"mcp-gitlab==0.24.0"
],
"env": {
"GITLAB_TOKEN": "<GITLAB_TOKEN>",
"GITLAB_URL": "<GITLAB_URL>",
"GITLAB_READ_ONLY": "<GITLAB_READ_ONLY>",
"MCP_READ_ONLY": "<MCP_READ_ONLY>",
"MCP_TOOLSETS": "<MCP_TOOLSETS>",
"GITLAB_AUTH": "<GITLAB_AUTH>",
"GITLAB_OAUTH_CLIENT_ID": "<GITLAB_OAUTH_CLIENT_ID>",
"GITLAB_OAUTH_CLIENT_SECRET": "<GITLAB_OAUTH_CLIENT_SECRET>",
"GITLAB_OAUTH_BASE_URL": "<GITLAB_OAUTH_BASE_URL>",
"GITLAB_OAUTH_SCOPES": "<GITLAB_OAUTH_SCOPES>",
"GITLAB_OAUTH_JWT_KEY": "<GITLAB_OAUTH_JWT_KEY>",
"GITLAB_HTTP_BEARER_TOKEN": "<GITLAB_HTTP_BEARER_TOKEN>"
}
}
}
}
{
"mcpServers": {
"mcp-gitlab": {
"command": "uvx",
"args": [
"mcp-gitlab==0.24.0"
],
"env": {
"GITLAB_TOKEN": "<GITLAB_TOKEN>",
"GITLAB_URL": "<GITLAB_URL>",
"GITLAB_READ_ONLY": "<GITLAB_READ_ONLY>",
"MCP_READ_ONLY": "<MCP_READ_ONLY>",
"MCP_TOOLSETS": "<MCP_TOOLSETS>",
"GITLAB_AUTH": "<GITLAB_AUTH>",
"GITLAB_OAUTH_CLIENT_ID": "<GITLAB_OAUTH_CLIENT_ID>",
"GITLAB_OAUTH_CLIENT_SECRET": "<GITLAB_OAUTH_CLIENT_SECRET>",
"GITLAB_OAUTH_BASE_URL": "<GITLAB_OAUTH_BASE_URL>",
"GITLAB_OAUTH_SCOPES": "<GITLAB_OAUTH_SCOPES>",
"GITLAB_OAUTH_JWT_KEY": "<GITLAB_OAUTH_JWT_KEY>",
"GITLAB_HTTP_BEARER_TOKEN": "<GITLAB_HTTP_BEARER_TOKEN>"
}
}
}
}
{
"servers": {
"mcp-gitlab": {
"type": "stdio",
"command": "uvx",
"args": [
"mcp-gitlab==0.24.0"
],
"env": {
"GITLAB_TOKEN": "<GITLAB_TOKEN>",
"GITLAB_URL": "<GITLAB_URL>",
"GITLAB_READ_ONLY": "<GITLAB_READ_ONLY>",
"MCP_READ_ONLY": "<MCP_READ_ONLY>",
"MCP_TOOLSETS": "<MCP_TOOLSETS>",
"GITLAB_AUTH": "<GITLAB_AUTH>",
"GITLAB_OAUTH_CLIENT_ID": "<GITLAB_OAUTH_CLIENT_ID>",
"GITLAB_OAUTH_CLIENT_SECRET": "<GITLAB_OAUTH_CLIENT_SECRET>",
"GITLAB_OAUTH_BASE_URL": "<GITLAB_OAUTH_BASE_URL>",
"GITLAB_OAUTH_SCOPES": "<GITLAB_OAUTH_SCOPES>",
"GITLAB_OAUTH_JWT_KEY": "<GITLAB_OAUTH_JWT_KEY>",
"GITLAB_HTTP_BEARER_TOKEN": "<GITLAB_HTTP_BEARER_TOKEN>"
}
}
}
}
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
| Name | Description |
|---|---|
GITLAB_TOKENOptional, secret | GitLab personal access token (token mode). Optional after `mcp-gitlab auth login`; also accepts GITLAB_PAT, GITLAB_PERSONAL_ACCESS_TOKEN, GITLAB_API_TOKEN |
GITLAB_URLRequired | GitLab instance URL (e.g. https://gitlab.com) |
GITLAB_READ_ONLYOptional | Alias for MCP_READ_ONLY. Any value other than false/0/no/off/empty locks the server read-only; --read-only can only raise the lock |
MCP_READ_ONLYOptional | Locks the server read-only: write tools and write-workflow prompts are not listed and nothing lifts the lock at runtime. Shared name across the mcp-* servers; set it in the deployer's env |
MCP_TOOLSETSOptional | Comma list of tool groups to expose (code, review, ci, issues, release, admin); unset or 'all' lists every tool. Shrinks tools/list for clients with a tool budget; MCP_READ_ONLY still applies after the selection |
GITLAB_AUTHOptional | Authentication mode: token (default) or oauth (OAuth 2.1 proxy; streamable-http only) |
GITLAB_OAUTH_CLIENT_IDOptional | Application ID of the GitLab OAuth app (oauth mode, or local sign-in on a self-managed instance) |
GITLAB_OAUTH_CLIENT_SECRETOptional, secret | Secret of the GitLab OAuth app (oauth mode) |
GITLAB_OAUTH_BASE_URLOptional | Public URL of this server, no trailing slash (oauth mode); redirect URI is <base>/auth/callback |
GITLAB_OAUTH_SCOPESOptional | Space-separated GitLab scopes required on every request (oauth mode; default api) |
GITLAB_OAUTH_JWT_KEYOptional, secret | FastMCP JWT signing key, >=32 random chars (oauth mode; defaults to one derived from the client secret) |
GITLAB_HTTP_BEARER_TOKENOptional, secret | Bearer token (min 16 chars) required to bind an HTTP transport to a non-loopback host; clients send it as 'Authorization: Bearer <token>' (token mode; --auth oauth has its own sign-in) |
Details
| Package | [email protected] (PYPI, stdio) |
| First published | 10 Nov 2026 |
| Last updated | 10 Nov 2026 |
| Registry name | io.github.vish288/mcp-gitlab |
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.
