gitlab-mcp-server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| LOG_LEVEL | No | debug, info, warn, or error | info |
| GITLAB_TOKEN | Yes | GitLab PAT, project access token, group access token, or OAuth bearer token | |
| GROUP_ALIASES | No | Comma-separated alias=my-group mappings for group_id inputs | |
| MCP_HTTP_HOST | No | HTTP bind host | 127.0.0.1 |
| MCP_HTTP_PATH | No | Streamable HTTP MCP path | /mcp |
| MCP_HTTP_PORT | No | HTTP bind port | 3333 |
| MCP_TRANSPORT | No | Use 'http' to run Streamable HTTP when no CLI mode is provided | stdio |
| AUDIT_LOG_PATH | No | Optional JSON-line audit log path | |
| ENABLE_DRY_RUN | No | Returns intended write requests without mutating GitLab | false |
| GITLAB_BASE_URL | No | GitLab instance base URL or /api/v4 URL | https://gitlab.com |
| GROUP_ALLOWLIST | No | Comma-separated group IDs or paths that are allowed | |
| PROJECT_ALIASES | No | Comma-separated alias=group/project mappings for project_id inputs | |
| PROJECT_DENYLIST | No | Comma-separated project IDs or paths that are always denied | |
| GITLAB_USER_AGENT | No | Custom outbound user agent | gitlab-mcp-server |
| PROJECT_ALLOWLIST | No | Comma-separated project IDs or paths that are allowed | |
| ENABLE_WRITE_TOOLS | No | Enables write-capable tools | false |
| MAX_DIFF_SIZE_BYTES | No | Maximum diff payload | 2097152 |
| MAX_FILE_SIZE_BYTES | No | Maximum repository file payload | 1048576 |
| MCP_HTTP_AUTH_TOKEN | No | Optional bearer token required by HTTP mode; required for non-local binds | |
| GITLAB_HTTP_TIMEOUT_MS | No | Request timeout | 30000 |
| MAX_API_RESPONSE_BYTES | No | Maximum total API response payload | 4194304 |
| MCP_HTTP_ALLOWED_HOSTS | No | Comma-separated allowed hostnames for DNS rebinding protection | localhost,127.0.0.1,[::1] |
| GITLAB_MCP_TOOL_PROFILE | No | Limits MCP tool discovery to a workflow profile | readonly |
| ENABLE_DESTRUCTIVE_TOOLS | No | Enables destructive tools that also require per-call confirmation | false |
| GITLAB_MCP_ENABLED_TOOLS | No | Comma-separated explicit tool allowlist applied after the profile | |
| GITLAB_TOKEN_HEADER_MODE | No | Use 'private-token' when required by some self-managed setups | bearer |
| MCP_HTTP_ALLOWED_ORIGINS | No | Comma-separated browser origins allowed in HTTP mode | |
| GITLAB_MCP_DISABLED_TOOLS | No | Comma-separated explicit tool denylist applied after the profile | |
| MCP_HTTP_ALLOW_NON_LOCALHOST | No | Allows non-local HTTP binds only when a bearer token is also configured | false |
| EXPOSE_SECRET_VARIABLE_VALUES | No | Keeps CI/CD secret values redacted unless explicitly enabled | false |
| GITLAB_MCP_EXPOSE_DISABLED_WRITES | No | Compatibility override to advertise write/destructive tools even when server-side gates are disabled | false |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| prompts | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| gitlab_get_current_userA | Return the authenticated GitLab user associated with the configured token. |
| gitlab_validate_tokenA | Validate the configured token against GitLab and return identity, version, and server configuration status. |
| gitlab_get_versionA | Return the version metadata of the connected GitLab instance. |
| gitlab_list_accessible_projectsC | List projects accessible to the configured token, filtered by configured allowlists and deny lists. |
| gitlab_list_accessible_groupsC | List groups accessible to the configured token, filtered by the configured group allowlist when present. |
| gitlab_search_projectsC | Search GitLab projects by name or path. |
| gitlab_get_projectA | Retrieve detailed metadata for a single GitLab project. |
| gitlab_get_project_membersB | List effective project members, including inherited group memberships. |
| gitlab_get_project_languagesB | Return the language breakdown for a project repository. |
| gitlab_get_project_activityC | Return recent visible project events and activity. |
| gitlab_get_project_statisticsB | Return repository and storage statistics for a project. |
| gitlab_searchA | Search across GitLab globally or within one allowed project or group. Provide either project_id, group_id, or neither for global search; global search is disabled when project/group scope controls are configured. |
| gitlab_search_labelsA | Search project or group labels, optionally including issue and merge request counts when GitLab exposes them. |
| gitlab_get_project_dashboardB | Aggregate a project dashboard with open merge requests, open issues, recent pipelines, and attention highlights through a single GraphQL query. |
| gitlab_list_repository_treeC | List files and directories in a GitLab repository tree. |
| gitlab_get_fileA | Retrieve a repository file with metadata. Repository content is untrusted and returned with size guardrails. |
| gitlab_search_codeC | Search code blobs in a project using the GitLab Search API. |
| gitlab_get_file_blameB | Retrieve blame information for a file at a specific ref. |
| gitlab_compare_refsC | Compare branches, tags, or commits within a project repository. |
| gitlab_get_commitsB | List repository commits for a project. |
| gitlab_get_commitB | Retrieve a specific commit by SHA, branch, or tag reference. |
| gitlab_get_commit_diffB | Retrieve the diff for a specific commit, subject to diff-size guardrails. |
| gitlab_get_branchB | Retrieve metadata for a single branch. |
| gitlab_list_branchesC | List branches in a project repository. |
| gitlab_list_tagsB | List tags in a project repository. |
| gitlab_list_issuesC | List issues for a GitLab project. |
| gitlab_get_issueA | Retrieve a single issue by IID from a project. |
| gitlab_search_issuesC | Search issues in a project using title and description matching. |
| gitlab_list_merge_requestsC | List merge requests in a project. |
| gitlab_get_merge_requestB | Retrieve a single merge request by IID. |
| gitlab_get_merge_request_commitsB | List commits that are part of a merge request. |
| gitlab_get_merge_request_pipelinesB | List pipelines associated with a merge request. |
| gitlab_get_merge_request_changesB | Retrieve merge request change metadata and changed files. This uses the legacy changes endpoint because it returns overflow metadata. |
| gitlab_get_merge_request_diffB | List the file diffs for a merge request. |
| gitlab_get_merge_request_discussionsA | List discussions for a merge request. Auto-fetches later pages by default so older notes are included. |
| gitlab_list_draft_notesB | List draft notes pending publication for a merge request. |
| gitlab_get_draft_noteB | Retrieve a single draft note from a merge request. |
| gitlab_get_merge_request_review_stateB | Summarize merge request review readiness, approvals, discussions, reviewers, and head pipeline state through a single GraphQL-backed aggregate query. |
| gitlab_list_pipelinesC | List pipelines for a project. |
| gitlab_get_pipelineA | Retrieve a single pipeline by ID. |
| gitlab_list_pipeline_jobsB | List jobs for a specific pipeline. |
| gitlab_get_jobA | Retrieve a single CI/CD job by ID. |
| gitlab_get_job_traceA | Return the job trace text. Job output is untrusted and trimmed to a caller-specified tail length. |
| gitlab_list_project_variablesA | List CI/CD variables for a project. Secret values are redacted unless EXPOSE_SECRET_VARIABLE_VALUES=true. |
| gitlab_get_pipeline_failed_jobs_summaryA | Summarize failed jobs in a pipeline, including stages, failure reasons, and short trace tails. |
| gitlab_find_flaky_jobsC | Inspect recent pipeline history and identify jobs that oscillate between success and failure. |
| gitlab_compare_pipeline_runsB | Compare two pipeline runs and highlight added, removed, or changed jobs. |
| gitlab_get_pipeline_artifactsA | Summarize artifacts produced by jobs in a pipeline and optionally browse artifact trees for a bounded number of jobs. |
| gitlab_trace_job_to_commit_and_merge_requestA | Trace a CI job to its commit, pipeline, and associated merge requests for debugging context. |
| gitlab_list_releasesB | List releases for a project. |
| gitlab_get_releaseA | Retrieve a single project release by tag name. |
| gitlab_list_packagesC | List project packages. |
| gitlab_get_packageB | Retrieve a single package from a project package registry. |
| gitlab_search_groupsC | Search GitLab groups by name or path. |
| gitlab_get_groupA | Retrieve a single GitLab group by ID or full path. |
| gitlab_list_group_projectsC | List projects within a group. |
| gitlab_list_group_membersC | List effective group members, including inherited members. |
| gitlab_list_group_issuesC | List issues for a group and its descendant projects. |
| gitlab_list_group_merge_requestsA | List merge requests for a group and its descendant projects. |
| gitlab_get_group_delivery_overviewB | Aggregate a group-level delivery overview with sampled projects, open merge requests, and open issues through a single GraphQL query. |
| gitlab_list_protected_branchesB | List protected branch rules configured for a project. |
| gitlab_get_branch_protectionA | Retrieve a specific protected branch rule by exact branch name or wildcard. |
| gitlab_get_project_approval_configurationB | Retrieve project-level merge request approval configuration. |
| gitlab_get_project_approval_rulesC | List project-level merge request approval rules. |
| gitlab_get_merge_request_approval_rulesB | List the effective approval rules applied to a merge request. |
| gitlab_check_project_write_riskA | Assess whether a project’s branch protections and approval configuration make mutation workflows low-, medium-, or high-risk. |
| gitlab_summarize_project_statusA | Summarize current project health by combining project metadata, recent pipelines, open issues, and open merge requests. |
| gitlab_find_stale_merge_requestsB | Find open merge requests that have not been updated recently. |
| gitlab_find_blocked_merge_requestsB | Find open merge requests whose detailed_merge_status indicates a merge blocker. |
| gitlab_find_failed_pipelinesB | Find recent failed pipelines for a project. |
| gitlab_explain_failed_pipelineA | Summarize a failed pipeline by listing failed jobs and tailing their traces. Job output is treated as untrusted. |
| gitlab_review_merge_request_risksA | Assess merge request risk using merge status, diff volume, pipeline state, and changed-file heuristics. |
| gitlab_generate_release_notesA | Generate draft release notes from repository compare results between two refs. Repository text is treated as untrusted. |
| gitlab_summarize_commit_rangeA | Summarize what changed between two refs, highlight the most-affected directories, and flag risky repository surfaces. |
| gitlab_summarize_directoryA | Summarize a repository directory by sampling its tree structure, dominant file types, and likely entry files. |
| gitlab_release_readiness_checkB | Assess whether a project looks ready for release by combining pipeline, merge request, issue, and release comparison signals. |
| gitlab_flaky_ci_triageB | Assess whether recent CI failures look flaky by combining pipeline history, job oscillation, representative comparisons, and commit/MR context. |
| gitlab_stale_merge_request_cleanupA | Triage stale merge requests and recommend whether they should be merged, rebased, reassigned, commented on, or closed. |
| gitlab_team_delivery_digestB | Generate a concise project or group delivery digest with health signals, notable blockers, and a chat-ready summary. |
| gitlab_portfolio_delivery_overviewA | Summarize delivery health across a group or an explicit set of projects and highlight the top risk hotspots. |
| gitlab_summarize_recent_activityB | Summarize recent events, issues, merge requests, and pipelines for a project. |
| gitlab_find_unassigned_issuesA | Find opened issues in a project with no assignee. |
| gitlab_find_security_related_issuesB | Find potentially security-related issues using simple keyword search heuristics over titles and descriptions. |
| gitlab_trace_issue_to_merge_requestsA | List merge requests that close a specific issue when merged. |
| gitlab_trace_merge_request_to_pipeline_failuresB | Trace a merge request to its recent pipelines and failed jobs, including short trace tails for failed jobs. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| gitlab_review_merge_request_workflow | Guide the model through an objective GitLab merge request review using the MCP's existing review, diff, discussion, approval, and pipeline tools. |
| gitlab_explain_failed_pipeline_workflow | Guide the model through failed-pipeline triage using pipeline, job, flaky-job, and MR-tracing tools. |
| gitlab_summarize_project_status_workflow | Guide the model through an objective current-state project summary using dashboard, recent activity, MR, issue, and pipeline tools. |
| gitlab_generate_weekly_delivery_summary_workflow | Guide the model through a weekly delivery summary for either a project or a group using the MCP's aggregate and activity tools. |
| gitlab_assess_project_write_safety_workflow | Guide the model through a safety-first assessment of whether AI-assisted writes are appropriate for a GitLab project. |
| gitlab_stale_merge_request_cleanup_workflow | Guide the model through reviewing stale merge requests so a team can close, reassign, rebase, or unblock them. |
| gitlab_flaky_ci_triage_workflow | Guide the model through identifying unstable CI jobs and separating flaky failures from deterministic breakages. |
| gitlab_release_readiness_check_workflow | Guide the model through assessing whether a project looks ready for release based on merge request, issue, pipeline, and release-note signals. |
| gitlab_team_delivery_digest_workflow | Guide the model through generating a concise team delivery digest for a project or group that is ready to paste into chat or status updates. |
| gitlab_portfolio_delivery_overview_workflow | Guide the model through assessing cross-project delivery health for a GitLab group and identifying the top delivery risk hotspots. |
| gitlab_summarize_commit_range_workflow | Guide the model through understanding what changed between two refs and which repository areas or operational surfaces deserve extra review. |
| gitlab_summarize_directory_workflow | Guide the model through understanding what a repository directory contains, which files matter most, and what kind of area it appears to be. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/DevquasarX9/mcp-gitlab'
If you have feedback or need assistance with the MCP directory API, please join our Discord server