Search / io.github.zereight/gitlab-mcp
GitLab MCP Server
L0· runs locallyGitLab MCP server for projects, merge requests, issues, pipelines, wiki, releases, and more.
v2.3.4 · active · repository · website · descriptor JSON · versions
Search / io.github.zereight/gitlab-mcp
L0· runs locallyGitLab MCP server for projects, merge requests, issues, pipelines, wiki, releases, and more.
v2.3.4 · active · repository · website · descriptor JSON · versions
{
"mcpServers": {
"gitlab-mcp": {
"command": "npx",
"args": [
"-y",
"@zereight/[email protected]"
],
"env": {
"GITLAB_PERSONAL_ACCESS_TOKEN": "${GITLAB_PERSONAL_ACCESS_TOKEN}",
"GITLAB_JOB_TOKEN": "${GITLAB_JOB_TOKEN}",
"GITLAB_API_URL": "https://gitlab.com/api/v4",
"GITLAB_MASKING_ENABLED": "false"
}
}
}
}claude mcp add gitlab-mcp -e "GITLAB_PERSONAL_ACCESS_TOKEN=${GITLAB_PERSONAL_ACCESS_TOKEN}" -e "GITLAB_JOB_TOKEN=${GITLAB_JOB_TOKEN}" -e "GITLAB_API_URL=https://gitlab.com/api/v4" -e "GITLAB_MASKING_ENABLED=false" -- npx -y @zereight/[email protected][mcp_servers.gitlab-mcp]
command = "npx"
args = ["-y", "@zereight/[email protected]"]
env = { "GITLAB_PERSONAL_ACCESS_TOKEN" = "${GITLAB_PERSONAL_ACCESS_TOKEN}", "GITLAB_JOB_TOKEN" = "${GITLAB_JOB_TOKEN}", "GITLAB_API_URL" = "https://gitlab.com/api/v4", "GITLAB_MASKING_ENABLED" = "false" }
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"gitlab-mcp": {
"type": "local",
"command": [
"npx",
"-y",
"@zereight/[email protected]"
],
"enabled": true,
"environment": {
"GITLAB_PERSONAL_ACCESS_TOKEN": "{env:GITLAB_PERSONAL_ACCESS_TOKEN}",
"GITLAB_JOB_TOKEN": "{env:GITLAB_JOB_TOKEN}",
"GITLAB_API_URL": "https://gitlab.com/api/v4",
"GITLAB_MASKING_ENABLED": "false"
}
}
}
}{
"mcpServers": {
"gitlab-mcp": {
"command": "npx",
"args": [
"-y",
"@zereight/[email protected]"
],
"env": {
"GITLAB_PERSONAL_ACCESS_TOKEN": "${GITLAB_PERSONAL_ACCESS_TOKEN}",
"GITLAB_JOB_TOKEN": "${GITLAB_JOB_TOKEN}",
"GITLAB_API_URL": "https://gitlab.com/api/v4",
"GITLAB_MASKING_ENABLED": "false"
}
}
},
"deeplink": "cursor://anysphere.cursor-deeplink/mcp/install?name=gitlab-mcp&config=eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyIteSIsIkB6ZXJlaWdodC9tY3AtZ2l0bGFiQDIuMy40Il0sImVudiI6eyJHSVRMQUJfUEVSU09OQUxfQUNDRVNTX1RPS0VOIjoiJHtHSVRMQUJfUEVSU09OQUxfQUNDRVNTX1RPS0VOfSIsIkdJVExBQl9KT0JfVE9LRU4iOiIke0dJVExBQl9KT0JfVE9LRU59IiwiR0lUTEFCX0FQSV9VUkwiOiJodHRwczovL2dpdGxhYi5jb20vYXBpL3Y0IiwiR0lUTEFCX01BU0tJTkdfRU5BQkxFRCI6ImZhbHNlIn19"
}{
"servers": {
"gitlab-mcp": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@zereight/[email protected]"
],
"env": {
"GITLAB_PERSONAL_ACCESS_TOKEN": "${GITLAB_PERSONAL_ACCESS_TOKEN}",
"GITLAB_JOB_TOKEN": "${GITLAB_JOB_TOKEN}",
"GITLAB_API_URL": "https://gitlab.com/api/v4",
"GITLAB_MASKING_ENABLED": "false"
}
}
}
}{
"mcpServers": {
"gitlab-mcp": {
"command": "npx",
"args": [
"-y",
"@zereight/[email protected]"
],
"env": {
"GITLAB_PERSONAL_ACCESS_TOKEN": "${GITLAB_PERSONAL_ACCESS_TOKEN}",
"GITLAB_JOB_TOKEN": "${GITLAB_JOB_TOKEN}",
"GITLAB_API_URL": "https://gitlab.com/api/v4",
"GITLAB_MASKING_ENABLED": "false"
}
}
}
}extensions:
"gitlab-mcp":
enabled: true
name: "gitlab-mcp"
type: stdio
cmd: "npx"
args:
- "-y"
- "@zereight/[email protected]"
envs:
"GITLAB_PERSONAL_ACCESS_TOKEN": "${GITLAB_PERSONAL_ACCESS_TOKEN}"
"GITLAB_JOB_TOKEN": "${GITLAB_JOB_TOKEN}"
"GITLAB_API_URL": "https://gitlab.com/api/v4"
"GITLAB_MASKING_ENABLED": "false"
timeout: 300
Placeholders to fill from your own secret store: ${GITLAB_PERSONAL_ACCESS_TOKEN}, ${GITLAB_JOB_TOKEN}. The registry never accepts secret values.
This is a local package: the command runs on your machine.
Not scored: fewer than three checks apply, usually because no remote answered a credential-free probe or the server is a local package.
protocol.modern, protocol.stateless, protocol.transport, protocol.list_ttlno remote answered a protocol handshake (not probed yet, unreachable, or local-only)auth.prm, auth.as_metadata, auth.cimdno remote uses OAuthauth.secret_in_urlno templated URLtools.descriptions, tools.description_length, tools.schemas, tools.annotations, tools.directory_hints, tools.token_cost, tools.api_dumptool list unknown (behind auth, not probed, or empty)stability.changes, stability.rug_pulltool list unknowndeps.known_vulns, deps.mcp_sdk_version, deps.resolvabledependencies not resolved yetNo tool definition changes recorded. A server's first observation is its baseline; later probes record what changes.
Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed. How it is computed.
+repository +namespace-matches-repo +website ~liveness-unmeasured +updated-0d-ago -unpinned-packages(1)
Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed. How it is computed.
@zereight/[email protected] npmnot resolved yet; dependencies are read once a day
Dependency graphs from deps.dev; advisories from OSV.dev, including the GitHub Advisory Database and the PyPI Advisory Database; all CC BY 4.0. The graph is what a clean install of this version resolves today; nothing was installed or run. How it is checked.
| package | registry | version | runtime | secrets |
|---|---|---|---|---|
@zereight/mcp-gitlab | npm | 2.3.4 | – | GITLAB_PERSONAL_ACCESS_TOKEN, GITLAB_JOB_TOKEN |
docker.io/zereight050/gitlab-mcp:2.3.4 | oci | unpinned | – | GITLAB_PERSONAL_ACCESS_TOKEN, GITLAB_JOB_TOKEN |
No tools observed. Local packages are never executed by the registry.
Schemas: list_tools.
{
"name": "io.github.zereight/gitlab-mcp",
"title": "GitLab MCP Server",
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
"version": "2.3.4",
"packages": [
{
"version": "2.3.4",
"transport": {
"type": "stdio"
},
"identifier": "@zereight/mcp-gitlab",
"registryType": "npm",
"environmentVariables": [
{
"name": "GITLAB_PERSONAL_ACCESS_TOKEN",
"format": "string",
"isSecret": true,
"description": "GitLab personal access token for local stdio use. A non-empty value overrides GITLAB_PERSONAL_ACCESS_TOKEN_FILE. One of this token, GITLAB_PERSONAL_ACCESS_TOKEN_FILE, GITLAB_JOB_TOKEN, GITLAB_AUTH_COOKIE_PATH, or GITLAB_USE_OAUTH=true must be set. Create a token with the GitLab scopes the tools need, such as api or read_api."
},
{
"name": "GITLAB_PERSONAL_ACCESS_TOKEN_FILE",
"format": "filepath",
"description": "Path to a file that contains the personal access token. Read once at startup and trimmed. Ignored when GITLAB_PERSONAL_ACCESS_TOKEN or --token is non-empty. A missing, unreadable, or empty file stops startup. Does not replace job token, OAuth, cookie, or remote authorization."
},
{
"name": "GITLAB_JOB_TOKEN",
"format": "string",
"isSecret": true,
"description": "Optional GitLab CI job token to use instead of a personal access token when running inside GitLab CI."
},
{
"name": "GITLAB_AUTH_COOKIE_PATH",
"format": "filepath",
"description": "Optional path to a GitLab authentication cookie file for cookie-based authentication."
},
{
"name": "GITLAB_USE_OAUTH",
"format": "boolean",
"description": "Set to true to start with GitLab OAuth instead of a personal access token, job token, or cookie file."
},
{
"name": "GITLAB_OAUTH_CLIENT_ID",
"format": "string",
"description": "GitLab OAuth application ID. When GITLAB_USE_OAUTH=true, set this or GITLAB_OAUTH_TOKEN_SCRIPT."
},
{
"name": "GITLAB_OAUTH_TOKEN_SCRIPT",
"format": "string",
"description": "Command that prints an OAuth access token. When GITLAB_USE_OAUTH=true, set this or GITLAB_OAUTH_CLIENT_ID."
},
{
"name": "GITLAB_API_URL",
"format": "string",
"default": "https://gitlab.com/api/v4",
"description": "GitLab API base URL. Use https://gitlab.com/api/v4 for GitLab.com or your self-managed GitLab API URL."
},
{
"name": "GITLAB_ALLOWED_PROJECT_IDS",
"format": "string",
"description": "Optional comma-separated list of GitLab project IDs that this server is allowed to access."
},
{
"name": "GITLAB_PERMISSION_MODE",
"format": "string",
"choices": [
"readonly",
"modify",
"full"
],
"description": "Tool exposure. Allowed values are readonly, modify, and full. Unset uses full. readonly keeps read-only tools. modify blocks delete and teardown tools."
},
{
"name": "GITLAB_TOOLSETS",
"format": "string",
"description": "Optional comma-separated list of toolsets to enable, such as projects, issues, merge_requests, pipelines, releases, users, groups, wiki, or search."
},
{
"name": "GITLAB_TOOLS",
"format": "string",
"description": "Optional comma-separated list of individual tool names to add on top of enabled toolsets."
},
{
"name": "GITLAB_DENIED_TOOLS_REGEX",
"format": "string",
"description": "Optional regular expression used to hide matching tools from the server."
},
{
"name": "GITLAB_TOOL_POLICY_APPROVE",
"format": "string",
"description": "Optional comma-separated list of tool names that require explicit approval before execution."
},
{
"name": "GITLAB_TOOL_POLICY_HIDDEN",
"format": "string",
"description": "Optional comma-separated list of tool names to hide from tools/list."
},
{
"name": "NODE_TLS_REJECT_UNAUTHORIZED",
"format": "string",
"description": "Set to 0 only when you intentionally need to connect to a GitLab instance with invalid or self-signed TLS certificates."
},
{
"name": "GITLAB_CA_CERT_PATH",
"format": "filepath",
"description": "Optional path to a custom CA certificate file for self-managed GitLab instances."
},
{
"name": "GITLAB_MASKING_ENABLED",
"format": "string",
"default": "false",
"description": "Set to true to mask text tool results and returned errors using built-in or configured rules."
},
{
"name": "GITLAB_MASKING_CONFIG",
"format": "filepath",
"description": "Optional path to a response-masking JSON configuration file."
},
{
"name": "GITLAB_MASKING_POLICY_FILE",
"format": "filepath",
"description": "Optional protected server-owned JSON file containing managed masking policies."
},
{
"name": "GITLAB_MASKING_WORKSPACE_DIR",
"format": "filepath",
"description": "Directory used to resolve response-masking configuration paths."
}
]
},
{
"transport": {
"type": "stdio"
},
"identifier": "docker.io/zereight050/gitlab-mcp:2.3.4",
"registryType": "oci",
"environmentVariables": [
{
"name": "GITLAB_PERSONAL_ACCESS_TOKEN",
"format": "string",
"isSecret": true,
"description": "GitLab personal access token for local stdio use. A non-empty value overrides GITLAB_PERSONAL_ACCESS_TOKEN_FILE. One of this token, GITLAB_PERSONAL_ACCESS_TOKEN_FILE, GITLAB_JOB_TOKEN, GITLAB_AUTH_COOKIE_PATH, or GITLAB_USE_OAUTH=true must be set. Create a token with the GitLab scopes the tools need, such as api or read_api."
},
{
"name": "GITLAB_PERSONAL_ACCESS_TOKEN_FILE",
"format": "filepath",
"description": "Path to a file that contains the personal access token. Read once at startup and trimmed. Ignored when GITLAB_PERSONAL_ACCESS_TOKEN or --token is non-empty. A missing, unreadable, or empty file stops startup. Does not replace job token, OAuth, cookie, or remote authorization."
},
{
"name": "GITLAB_JOB_TOKEN",
"format": "string",
"isSecret": true,
"description": "Optional GitLab CI job token to use instead of a personal access token when running inside GitLab CI."
},
{
"name": "GITLAB_AUTH_COOKIE_PATH",
"format": "filepath",
"description": "Optional path to a GitLab authentication cookie file for cookie-based authentication."
},
{
"name": "GITLAB_USE_OAUTH",
"format": "boolean",
"description": "Set to true to start with GitLab OAuth instead of a personal access token, job token, or cookie file."
},
{
"name": "GITLAB_OAUTH_CLIENT_ID",
"format": "string",
"description": "GitLab OAuth application ID. When GITLAB_USE_OAUTH=true, set this or GITLAB_OAUTH_TOKEN_SCRIPT."
},
{
"name": "GITLAB_OAUTH_TOKEN_SCRIPT",
"format": "string",
"description": "Command that prints an OAuth access token. When GITLAB_USE_OAUTH=true, set this or GITLAB_OAUTH_CLIENT_ID."
},
{
"name": "GITLAB_API_URL",
"format": "string",
"default": "https://gitlab.com/api/v4",
"description": "GitLab API base URL. Use https://gitlab.com/api/v4 for GitLab.com or your self-managed GitLab API URL."
},
{
"name": "GITLAB_ALLOWED_PROJECT_IDS",
"format": "string",
"description": "Optional comma-separated list of GitLab project IDs that this server is allowed to access."
},
{
"name": "GITLAB_PERMISSION_MODE",
"format": "string",
"choices": [
"readonly",
"modify",
"full"
],
"description": "Tool exposure. Allowed values are readonly, modify, and full. Unset uses full. readonly keeps read-only tools. modify blocks delete and teardown tools."
},
{
"name": "GITLAB_TOOLSETS",
"format": "string",
"description": "Optional comma-separated list of toolsets to enable, such as projects, issues, merge_requests, pipelines, releases, users, groups, wiki, or search."
},
{
"name": "GITLAB_TOOLS",
"format": "string",
"description": "Optional comma-separated list of individual tool names to add on top of enabled toolsets."
},
{
"name": "GITLAB_DENIED_TOOLS_REGEX",
"format": "string",
"description": "Optional regular expression used to hide matching tools from the server."
},
{
"name": "GITLAB_TOOL_POLICY_APPROVE",
"format": "string",
"description": "Optional comma-separated list of tool names that require explicit approval before execution."
},
{
"name": "GITLAB_TOOL_POLICY_HIDDEN",
"format": "string",
"description": "Optional comma-separated list of tool names to hide from tools/list."
},
{
"name": "NODE_TLS_REJECT_UNAUTHORIZED",
"format": "string",
"description": "Set to 0 only when you intentionally need to connect to a GitLab instance with invalid or self-signed TLS certificates."
},
{
"name": "GITLAB_CA_CERT_PATH",
"format": "filepath",
"description": "Optional path to a custom CA certificate file for self-managed GitLab instances."
},
{
"name": "GITLAB_MASKING_ENABLED",
"format": "string",
"default": "false",
"description": "Set to true to mask text tool results and returned errors using built-in or configured rules."
},
{
"name": "GITLAB_MASKING_CONFIG",
"format": "filepath",
"description": "Optional path to a response-masking JSON configuration file."
},
{
"name": "GITLAB_MASKING_POLICY_FILE",
"format": "filepath",
"description": "Optional protected server-owned JSON file containing managed masking policies."
},
{
"name": "GITLAB_MASKING_WORKSPACE_DIR",
"format": "filepath",
"description": "Directory used to resolve response-masking configuration paths."
}
]
}
],
"repository": {
"url": "https://github.com/zereight/gitlab-mcp",
"source": "github"
},
"websiteUrl": "https://zereight.github.io/gitlab-mcp/",
"description": "GitLab MCP server for projects, merge requests, issues, pipelines, wiki, releases, and more."
}