{"server":{"$schema":"https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json","name":"io.github.jmrplens/gitlab-mcp-server","description":"Go MCP server for GitLab: 2 dynamic tools reach ~876 actions on Free/CE, up to ~1103 on Ultimate.","title":"GitLab MCP Server","repository":{"url":"https://github.com/jmrplens/gitlab-mcp-server","source":"github","id":"1208139072"},"version":"3.3.0","websiteUrl":"https://docs.jmrp.io/gitlab-mcp-server","icons":[{"src":"https://raw.githubusercontent.com/jmrplens/gitlab-mcp-server/main/site/public/favicon.svg","mimeType":"image/svg+xml","sizes":["any"]},{"src":"https://raw.githubusercontent.com/jmrplens/gitlab-mcp-server/main/site/public/logo-400.png","mimeType":"image/png","sizes":["400x400"]}],"packages":[{"registryType":"mcpb","identifier":"https://github.com/jmrplens/gitlab-mcp-server/releases/download/v3.3.0/gitlab-mcp-server-darwin.mcpb","version":"3.3.0","fileSha256":"dc326734177056761e058d6e7ec739c20f4e76e4ee3a3f789a4ce7b7650d4225","transport":{"type":"stdio"},"environmentVariables":[{"description":"GitLab instance URL (default: https://gitlab.com; set for self-managed instances)","default":"https://gitlab.com","placeholder":"https://gitlab.com","name":"GITLAB_URL"},{"description":"GitLab Personal Access Token (glpat-...)","isRequired":true,"isSecret":true,"placeholder":"glpat-xxxxxxxxxxxxxxxxxxxx","name":"GITLAB_TOKEN"},{"description":"Skip TLS certificate verification for self-signed certs (default: false)","format":"boolean","default":"false","name":"GITLAB_MCP_SKIP_TLS_VERIFY"},{"description":"Tool catalog selector: dynamic, meta, or individual (default: dynamic)","default":"dynamic","choices":["meta","individual","dynamic"],"name":"GITLAB_MCP_TOOL_SURFACE"},{"description":"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 tools","choices":["free","ce","premium","ultimate"],"name":"GITLAB_MCP_TIER"},{"description":"Read-only mode: removes every mutating action from the served surface; reads keep working (default: false)","format":"boolean","default":"false","name":"GITLAB_MCP_READ_ONLY"},{"description":"Safe mode: a mutating action returns a preview card naming the action and echoing its arguments instead of running; reads keep working (default: false)","format":"boolean","default":"false","name":"GITLAB_MCP_SAFE_MODE"},{"description":"Logging verbosity (default: info)","default":"info","choices":["debug","info","warn","error"],"name":"GITLAB_MCP_LOG_LEVEL"}]},{"registryType":"mcpb","identifier":"https://github.com/jmrplens/gitlab-mcp-server/releases/download/v3.3.0/gitlab-mcp-server-windows.mcpb","version":"3.3.0","fileSha256":"09ab3a46c88b10e5d09f3ab4bb89edf525a3d355cecd772c9f8a5b3d1ca1885d","transport":{"type":"stdio"},"environmentVariables":[{"description":"GitLab instance URL (default: https://gitlab.com; set for self-managed instances)","default":"https://gitlab.com","placeholder":"https://gitlab.com","name":"GITLAB_URL"},{"description":"GitLab Personal Access Token (glpat-...)","isRequired":true,"isSecret":true,"placeholder":"glpat-xxxxxxxxxxxxxxxxxxxx","name":"GITLAB_TOKEN"},{"description":"Skip TLS certificate verification for self-signed certs (default: false)","format":"boolean","default":"false","name":"GITLAB_MCP_SKIP_TLS_VERIFY"},{"description":"Tool catalog selector: dynamic, meta, or individual (default: dynamic)","default":"dynamic","choices":["meta","individual","dynamic"],"name":"GITLAB_MCP_TOOL_SURFACE"},{"description":"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 tools","choices":["free","ce","premium","ultimate"],"name":"GITLAB_MCP_TIER"},{"description":"Read-only mode: removes every mutating action from the served surface; reads keep working (default: false)","format":"boolean","default":"false","name":"GITLAB_MCP_READ_ONLY"},{"description":"Safe mode: a mutating action returns a preview card naming the action and echoing its arguments instead of running; reads keep working (default: false)","format":"boolean","default":"false","name":"GITLAB_MCP_SAFE_MODE"},{"description":"Logging verbosity (default: info)","default":"info","choices":["debug","info","warn","error"],"name":"GITLAB_MCP_LOG_LEVEL"}]},{"registryType":"mcpb","identifier":"https://github.com/jmrplens/gitlab-mcp-server/releases/download/v3.3.0/gitlab-mcp-server-linux.mcpb","version":"3.3.0","fileSha256":"d47b1be9a37bd5d76f862aeab77b036e25e142de13847d31f0342921fb7ae60f","transport":{"type":"stdio"},"environmentVariables":[{"description":"GitLab instance URL (default: https://gitlab.com; set for self-managed instances)","default":"https://gitlab.com","placeholder":"https://gitlab.com","name":"GITLAB_URL"},{"description":"GitLab Personal Access Token (glpat-...)","isRequired":true,"isSecret":true,"placeholder":"glpat-xxxxxxxxxxxxxxxxxxxx","name":"GITLAB_TOKEN"},{"description":"Skip TLS certificate verification for self-signed certs (default: false)","format":"boolean","default":"false","name":"GITLAB_MCP_SKIP_TLS_VERIFY"},{"description":"Tool catalog selector: dynamic, meta, or individual (default: dynamic)","default":"dynamic","choices":["meta","individual","dynamic"],"name":"GITLAB_MCP_TOOL_SURFACE"},{"description":"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 tools","choices":["free","ce","premium","ultimate"],"name":"GITLAB_MCP_TIER"},{"description":"Read-only mode: removes every mutating action from the served surface; reads keep working (default: false)","format":"boolean","default":"false","name":"GITLAB_MCP_READ_ONLY"},{"description":"Safe mode: a mutating action returns a preview card naming the action and echoing its arguments instead of running; reads keep working (default: false)","format":"boolean","default":"false","name":"GITLAB_MCP_SAFE_MODE"},{"description":"Logging verbosity (default: info)","default":"info","choices":["debug","info","warn","error"],"name":"GITLAB_MCP_LOG_LEVEL"}]},{"registryType":"oci","identifier":"ghcr.io/jmrplens/gitlab-mcp-server:3.3.0@sha256:88784f176a65d934c4a181eb832a525e94f106f49189cb9c6fde907dd00cf19c","transport":{"type":"stdio"},"environmentVariables":[{"description":"GitLab instance URL (default: https://gitlab.com; set for self-managed instances)","default":"https://gitlab.com","placeholder":"https://gitlab.com","name":"GITLAB_URL"},{"description":"GitLab Personal Access Token (glpat-...)","isRequired":true,"isSecret":true,"placeholder":"glpat-xxxxxxxxxxxxxxxxxxxx","name":"GITLAB_TOKEN"},{"description":"Skip TLS certificate verification for self-signed certs (default: false)","format":"boolean","default":"false","name":"GITLAB_MCP_SKIP_TLS_VERIFY"},{"description":"Tool catalog selector: dynamic, meta, or individual (default: dynamic)","default":"dynamic","choices":["meta","individual","dynamic"],"name":"GITLAB_MCP_TOOL_SURFACE"},{"description":"Resource and prompt catalog selector: full or minimal (default: full); resource subscriptions require full","default":"full","choices":["full","minimal"],"name":"GITLAB_MCP_CAPABILITY_SURFACE"},{"description":"Meta-tool input schema detail: opaque, compact, or full (default: opaque)","default":"opaque","choices":["opaque","compact","full"],"name":"GITLAB_MCP_META_PARAM_SCHEMA"},{"description":"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 tools","choices":["free","ce","premium","ultimate"],"name":"GITLAB_MCP_TIER"},{"description":"Read-only mode: removes every mutating action from the served surface; reads keep working (default: false)","format":"boolean","default":"false","name":"GITLAB_MCP_READ_ONLY"},{"description":"Safe mode: a mutating action returns a preview card naming the action and echoing its arguments instead of running; reads keep working (default: false)","format":"boolean","default":"false","name":"GITLAB_MCP_SAFE_MODE"},{"description":"Append EmbeddedResource content blocks (clickable links to MCP resources) to get_* tool results (default: true)","format":"boolean","default":"true","name":"GITLAB_MCP_EMBEDDED_RESOURCES"},{"description":"Comma-separated tool names, group names or canonical action IDs to exclude, on every surface (e.g. gitlab_admin,gitlab_runner)","placeholder":"gitlab_admin,gitlab_runner","name":"GITLAB_MCP_EXCLUDE_TOOLS"},{"description":"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)","format":"boolean","default":"false","name":"GITLAB_MCP_IGNORE_SCOPES"},{"description":"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)","default":"2147483648","name":"GITLAB_MCP_UPLOAD_MAX_FILE_SIZE"},{"description":"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 paths","placeholder":"/path/to/files:/another/path/to/files","name":"GITLAB_MCP_ALLOWED_UPLOAD_DIRS"},{"description":"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 paths","placeholder":"/path/to/downloads:/another/path/to/downloads","name":"GITLAB_MCP_ALLOWED_DOWNLOAD_DIRS"},{"description":"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 paths","placeholder":"/path/to/exports:/another/path/to/exports","name":"GITLAB_MCP_ALLOWED_IMPORT_DIRS"},{"description":"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)","format":"number","default":"0","name":"GITLAB_MCP_RATE_LIMIT_RPS"},{"description":"Token-bucket burst size when GITLAB_MCP_RATE_LIMIT_RPS is greater than 0 (default: 40)","format":"number","default":"40","name":"GITLAB_MCP_RATE_LIMIT_BURST"},{"description":"Logging verbosity (default: info)","default":"info","choices":["debug","info","warn","error"],"name":"GITLAB_MCP_LOG_LEVEL"}]},{"registryType":"oci","identifier":"docker.io/jmrplens/gitlab-mcp-server:3.3.0@sha256:88784f176a65d934c4a181eb832a525e94f106f49189cb9c6fde907dd00cf19c","transport":{"type":"stdio"},"environmentVariables":[{"description":"GitLab instance URL (default: https://gitlab.com; set for self-managed instances)","default":"https://gitlab.com","placeholder":"https://gitlab.com","name":"GITLAB_URL"},{"description":"GitLab Personal Access Token (glpat-...)","isRequired":true,"isSecret":true,"placeholder":"glpat-xxxxxxxxxxxxxxxxxxxx","name":"GITLAB_TOKEN"},{"description":"Skip TLS certificate verification for self-signed certs (default: false)","format":"boolean","default":"false","name":"GITLAB_MCP_SKIP_TLS_VERIFY"},{"description":"Tool catalog selector: dynamic, meta, or individual (default: dynamic)","default":"dynamic","choices":["meta","individual","dynamic"],"name":"GITLAB_MCP_TOOL_SURFACE"},{"description":"Resource and prompt catalog selector: full or minimal (default: full); resource subscriptions require full","default":"full","choices":["full","minimal"],"name":"GITLAB_MCP_CAPABILITY_SURFACE"},{"description":"Meta-tool input schema detail: opaque, compact, or full (default: opaque)","default":"opaque","choices":["opaque","compact","full"],"name":"GITLAB_MCP_META_PARAM_SCHEMA"},{"description":"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 tools","choices":["free","ce","premium","ultimate"],"name":"GITLAB_MCP_TIER"},{"description":"Read-only mode: removes every mutating action from the served surface; reads keep working (default: false)","format":"boolean","default":"false","name":"GITLAB_MCP_READ_ONLY"},{"description":"Safe mode: a mutating action returns a preview card naming the action and echoing its arguments instead of running; reads keep working (default: false)","format":"boolean","default":"false","name":"GITLAB_MCP_SAFE_MODE"},{"description":"Append EmbeddedResource content blocks (clickable links to MCP resources) to get_* tool results (default: true)","format":"boolean","default":"true","name":"GITLAB_MCP_EMBEDDED_RESOURCES"},{"description":"Comma-separated tool names, group names or canonical action IDs to exclude, on every surface (e.g. gitlab_admin,gitlab_runner)","placeholder":"gitlab_admin,gitlab_runner","name":"GITLAB_MCP_EXCLUDE_TOOLS"},{"description":"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)","format":"boolean","default":"false","name":"GITLAB_MCP_IGNORE_SCOPES"},{"description":"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)","default":"2147483648","name":"GITLAB_MCP_UPLOAD_MAX_FILE_SIZE"},{"description":"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 paths","placeholder":"/path/to/files:/another/path/to/files","name":"GITLAB_MCP_ALLOWED_UPLOAD_DIRS"},{"description":"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 paths","placeholder":"/path/to/downloads:/another/path/to/downloads","name":"GITLAB_MCP_ALLOWED_DOWNLOAD_DIRS"},{"description":"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 paths","placeholder":"/path/to/exports:/another/path/to/exports","name":"GITLAB_MCP_ALLOWED_IMPORT_DIRS"},{"description":"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)","format":"number","default":"0","name":"GITLAB_MCP_RATE_LIMIT_RPS"},{"description":"Token-bucket burst size when GITLAB_MCP_RATE_LIMIT_RPS is greater than 0 (default: 40)","format":"number","default":"40","name":"GITLAB_MCP_RATE_LIMIT_BURST"},{"description":"Logging verbosity (default: info)","default":"info","choices":["debug","info","warn","error"],"name":"GITLAB_MCP_LOG_LEVEL"}]},{"registryType":"npm","identifier":"@jmrp.io/gitlab-mcp-server","version":"3.3.0","runtimeHint":"npx","transport":{"type":"stdio"},"environmentVariables":[{"description":"GitLab instance URL (default: https://gitlab.com; set for self-managed instances)","default":"https://gitlab.com","placeholder":"https://gitlab.com","name":"GITLAB_URL"},{"description":"GitLab Personal Access Token (glpat-...)","isRequired":true,"isSecret":true,"placeholder":"glpat-xxxxxxxxxxxxxxxxxxxx","name":"GITLAB_TOKEN"},{"description":"Skip TLS certificate verification for self-signed certs (default: false)","format":"boolean","default":"false","name":"GITLAB_MCP_SKIP_TLS_VERIFY"},{"description":"Tool catalog selector: dynamic, meta, or individual (default: dynamic)","default":"dynamic","choices":["meta","individual","dynamic"],"name":"GITLAB_MCP_TOOL_SURFACE"},{"description":"Resource and prompt catalog selector: full or minimal (default: full); resource subscriptions require full","default":"full","choices":["full","minimal"],"name":"GITLAB_MCP_CAPABILITY_SURFACE"},{"description":"Meta-tool input schema detail: opaque, compact, or full (default: opaque)","default":"opaque","choices":["opaque","compact","full"],"name":"GITLAB_MCP_META_PARAM_SCHEMA"},{"description":"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 tools","choices":["free","ce","premium","ultimate"],"name":"GITLAB_MCP_TIER"},{"description":"Read-only mode: removes every mutating action from the served surface; reads keep working (default: false)","format":"boolean","default":"false","name":"GITLAB_MCP_READ_ONLY"},{"description":"Safe mode: a mutating action returns a preview card naming the action and echoing its arguments instead of running; reads keep working (default: false)","format":"boolean","default":"false","name":"GITLAB_MCP_SAFE_MODE"},{"description":"Append EmbeddedResource content blocks (clickable links to MCP resources) to get_* tool results (default: true)","format":"boolean","default":"true","name":"GITLAB_MCP_EMBEDDED_RESOURCES"},{"description":"Comma-separated tool names, group names or canonical action IDs to exclude, on every surface (e.g. gitlab_admin,gitlab_runner)","placeholder":"gitlab_admin,gitlab_runner","name":"GITLAB_MCP_EXCLUDE_TOOLS"},{"description":"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)","format":"boolean","default":"false","name":"GITLAB_MCP_IGNORE_SCOPES"},{"description":"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)","default":"2147483648","name":"GITLAB_MCP_UPLOAD_MAX_FILE_SIZE"},{"description":"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 paths","placeholder":"/path/to/files:/another/path/to/files","name":"GITLAB_MCP_ALLOWED_UPLOAD_DIRS"},{"description":"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 paths","placeholder":"/path/to/downloads:/another/path/to/downloads","name":"GITLAB_MCP_ALLOWED_DOWNLOAD_DIRS"},{"description":"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 paths","placeholder":"/path/to/exports:/another/path/to/exports","name":"GITLAB_MCP_ALLOWED_IMPORT_DIRS"},{"description":"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)","format":"number","default":"0","name":"GITLAB_MCP_RATE_LIMIT_RPS"},{"description":"Token-bucket burst size when GITLAB_MCP_RATE_LIMIT_RPS is greater than 0 (default: 40)","format":"number","default":"40","name":"GITLAB_MCP_RATE_LIMIT_BURST"},{"description":"Logging verbosity (default: info)","default":"info","choices":["debug","info","warn","error"],"name":"GITLAB_MCP_LOG_LEVEL"}]},{"registryType":"pypi","registryBaseUrl":"https://pypi.org","identifier":"jmrplens-gitlab-mcp-server","version":"3.3.0","runtimeHint":"uvx","transport":{"type":"stdio"},"environmentVariables":[{"description":"GitLab instance URL (default: https://gitlab.com; set for self-managed instances)","default":"https://gitlab.com","placeholder":"https://gitlab.com","name":"GITLAB_URL"},{"description":"GitLab Personal Access Token (glpat-...)","isRequired":true,"isSecret":true,"placeholder":"glpat-xxxxxxxxxxxxxxxxxxxx","name":"GITLAB_TOKEN"},{"description":"Skip TLS certificate verification for self-signed certs (default: false)","format":"boolean","default":"false","name":"GITLAB_MCP_SKIP_TLS_VERIFY"},{"description":"Tool catalog selector: dynamic, meta, or individual (default: dynamic)","default":"dynamic","choices":["meta","individual","dynamic"],"name":"GITLAB_MCP_TOOL_SURFACE"},{"description":"Resource and prompt catalog selector: full or minimal (default: full); resource subscriptions require full","default":"full","choices":["full","minimal"],"name":"GITLAB_MCP_CAPABILITY_SURFACE"},{"description":"Meta-tool input schema detail: opaque, compact, or full (default: opaque)","default":"opaque","choices":["opaque","compact","full"],"name":"GITLAB_MCP_META_PARAM_SCHEMA"},{"description":"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 tools","choices":["free","ce","premium","ultimate"],"name":"GITLAB_MCP_TIER"},{"description":"Read-only mode: removes every mutating action from the served surface; reads keep working (default: false)","format":"boolean","default":"false","name":"GITLAB_MCP_READ_ONLY"},{"description":"Safe mode: a mutating action returns a preview card naming the action and echoing its arguments instead of running; reads keep working (default: false)","format":"boolean","default":"false","name":"GITLAB_MCP_SAFE_MODE"},{"description":"Append EmbeddedResource content blocks (clickable links to MCP resources) to get_* tool results (default: true)","format":"boolean","default":"true","name":"GITLAB_MCP_EMBEDDED_RESOURCES"},{"description":"Comma-separated tool names, group names or canonical action IDs to exclude, on every surface (e.g. gitlab_admin,gitlab_runner)","placeholder":"gitlab_admin,gitlab_runner","name":"GITLAB_MCP_EXCLUDE_TOOLS"},{"description":"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)","format":"boolean","default":"false","name":"GITLAB_MCP_IGNORE_SCOPES"},{"description":"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)","default":"2147483648","name":"GITLAB_MCP_UPLOAD_MAX_FILE_SIZE"},{"description":"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 paths","placeholder":"/path/to/files:/another/path/to/files","name":"GITLAB_MCP_ALLOWED_UPLOAD_DIRS"},{"description":"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 paths","placeholder":"/path/to/downloads:/another/path/to/downloads","name":"GITLAB_MCP_ALLOWED_DOWNLOAD_DIRS"},{"description":"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 paths","placeholder":"/path/to/exports:/another/path/to/exports","name":"GITLAB_MCP_ALLOWED_IMPORT_DIRS"},{"description":"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)","format":"number","default":"0","name":"GITLAB_MCP_RATE_LIMIT_RPS"},{"description":"Token-bucket burst size when GITLAB_MCP_RATE_LIMIT_RPS is greater than 0 (default: 40)","format":"number","default":"40","name":"GITLAB_MCP_RATE_LIMIT_BURST"},{"description":"Logging verbosity (default: info)","default":"info","choices":["debug","info","warn","error"],"name":"GITLAB_MCP_LOG_LEVEL"}]},{"registryType":"nuget","registryBaseUrl":"https://api.nuget.org/v3/index.json","identifier":"gitlab-mcp-server","version":"3.3.0","runtimeHint":"dnx","transport":{"type":"stdio"},"environmentVariables":[{"description":"GitLab instance URL (default: https://gitlab.com; set for self-managed instances)","default":"https://gitlab.com","placeholder":"https://gitlab.com","name":"GITLAB_URL"},{"description":"GitLab Personal Access Token (glpat-...)","isRequired":true,"isSecret":true,"placeholder":"glpat-xxxxxxxxxxxxxxxxxxxx","name":"GITLAB_TOKEN"},{"description":"Skip TLS certificate verification for self-signed certs (default: false)","format":"boolean","default":"false","name":"GITLAB_MCP_SKIP_TLS_VERIFY"},{"description":"Tool catalog selector: dynamic, meta, or individual (default: dynamic)","default":"dynamic","choices":["meta","individual","dynamic"],"name":"GITLAB_MCP_TOOL_SURFACE"},{"description":"Resource and prompt catalog selector: full or minimal (default: full); resource subscriptions require full","default":"full","choices":["full","minimal"],"name":"GITLAB_MCP_CAPABILITY_SURFACE"},{"description":"Meta-tool input schema detail: opaque, compact, or full (default: opaque)","default":"opaque","choices":["opaque","compact","full"],"name":"GITLAB_MCP_META_PARAM_SCHEMA"},{"description":"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 tools","choices":["free","ce","premium","ultimate"],"name":"GITLAB_MCP_TIER"},{"description":"Read-only mode: removes every mutating action from the served surface; reads keep working (default: false)","format":"boolean","default":"false","name":"GITLAB_MCP_READ_ONLY"},{"description":"Safe mode: a mutating action returns a preview card naming the action and echoing its arguments instead of running; reads keep working (default: false)","format":"boolean","default":"false","name":"GITLAB_MCP_SAFE_MODE"},{"description":"Append EmbeddedResource content blocks (clickable links to MCP resources) to get_* tool results (default: true)","format":"boolean","default":"true","name":"GITLAB_MCP_EMBEDDED_RESOURCES"},{"description":"Comma-separated tool names, group names or canonical action IDs to exclude, on every surface (e.g. gitlab_admin,gitlab_runner)","placeholder":"gitlab_admin,gitlab_runner","name":"GITLAB_MCP_EXCLUDE_TOOLS"},{"description":"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)","format":"boolean","default":"false","name":"GITLAB_MCP_IGNORE_SCOPES"},{"description":"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)","default":"2147483648","name":"GITLAB_MCP_UPLOAD_MAX_FILE_SIZE"},{"description":"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 paths","placeholder":"/path/to/files:/another/path/to/files","name":"GITLAB_MCP_ALLOWED_UPLOAD_DIRS"},{"description":"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 paths","placeholder":"/path/to/downloads:/another/path/to/downloads","name":"GITLAB_MCP_ALLOWED_DOWNLOAD_DIRS"},{"description":"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 paths","placeholder":"/path/to/exports:/another/path/to/exports","name":"GITLAB_MCP_ALLOWED_IMPORT_DIRS"},{"description":"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)","format":"number","default":"0","name":"GITLAB_MCP_RATE_LIMIT_RPS"},{"description":"Token-bucket burst size when GITLAB_MCP_RATE_LIMIT_RPS is greater than 0 (default: 40)","format":"number","default":"40","name":"GITLAB_MCP_RATE_LIMIT_BURST"},{"description":"Logging verbosity (default: info)","default":"info","choices":["debug","info","warn","error"],"name":"GITLAB_MCP_LOG_LEVEL"}]}],"remotes":[{"type":"streamable-http","url":"https://mcp.jmrp.io/gitlab","headers":[{"description":"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.","isSecret":true,"placeholder":"Bearer glpat-xxxxxxxxxxxxxxxxxxxx","name":"Authorization"}]}]},"_meta":{"io.modelcontextprotocol.registry/official":{"status":"active","statusChangedAt":"2026-10-20T06:59:57.285403Z","publishedAt":"2026-10-20T06:59:57.285403Z","updatedAt":"2026-10-20T06:59:57.285403Z","isLatest":true}}}
