GitLab MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_runtime_infoA | Report this installed MCP runtime's versions, deployment mode, and deterministic registered-tool inventory fingerprint without exposing credentials or general environment values. |
| get_gitlab_capabilitiesA | Discover the connected GitLab instance, identity, token metadata, API support, permissions, licensing, and configuration evidence using read-only probes. |
| get_current_userA | Return the profile and identity associated with the connected GitLab token. |
| list_groupsC | List groups visible to the connected user, including membership, ownership, access-level, and search filters. |
| get_groupB | Get one GitLab group or namespace with visibility, project, sharing, and permission metadata. |
| list_group_projectsA | List projects in a GitLab group with subgroup, membership, visibility, archive, search, and ordering filters. |
| list_group_membersA | List direct, inherited, and invited members of a GitLab group. |
| get_group_memberA | Get one direct or inherited group member and their effective access level. |
| search_gitlabA | Search globally, within a group, or within a project. Supported scopes include projects, issues, merge requests, users, commits, blobs, notes, milestones, and work items; availability depends on GitLab tier and search configuration. |
| search_projectsA | Search accessible GitLab projects by name, path, or description. Use this to resolve an ambiguous project before other calls. |
| get_projectA | Get repository, namespace, default branch, visibility, permissions, and feature metadata for one GitLab project. |
| list_project_membersA | List direct and inherited project members, optionally filtering by username or name. |
| list_project_labelsA | List labels available in a GitLab project. |
| get_project_memberA | Get one direct or inherited project member and their effective access level. |
| list_global_issuesB | List recent issues across all projects visible to the connected user, with account-wide triage filters. |
| list_issuesB | List or search issues in one GitLab project with common triage filters. |
| get_issueA | Get one GitLab issue with labels, assignees, milestone, task status, and links. |
| create_issueA | Create a GitLab issue with optional description, assignees, labels, milestone, due date, and confidentiality. |
| update_issueC | Update issue metadata, assignees, labels, milestone, confidentiality, or open/closed state. |
| list_issue_notesA | List user and system notes on one GitLab issue in chronological or reverse order. |
| create_issue_noteA | Add a top-level comment to a GitLab issue as the authenticated user. |
| update_issue_noteB | Replace the body of an existing GitLab issue comment. |
| delete_issue_noteA | Permanently delete a GitLab issue comment. |
| list_issue_reactionsA | List emoji reactions on a GitLab issue or one of its comments. |
| add_issue_reactionA | Add an emoji reaction to a GitLab issue or to one of its comments. |
| remove_issue_reactionA | Remove an emoji reaction from a GitLab issue or issue comment by award ID. |
| list_merge_requestsC | List or search merge requests in one GitLab project with common review and triage filters. |
| get_merge_requestA | Get merge request metadata, branches, participants, mergeability, pipeline, approvals, and discussion status. |
| create_merge_requestB | Open a GitLab merge request from an existing source branch. Draft merge requests are supported. |
| update_merge_requestB | Update merge request metadata, branches, assignees, reviewers, labels, draft/ready title state, or open/closed state. |
| merge_merge_requestA | Merge a GitLab merge request now or when its pipeline succeeds. This changes the target branch. |
| rebase_merge_requestA | Enqueue a GitLab rebase for the merge request source branch. Use get_merge_request with include_rebase_in_progress to poll the result. Only available when the source branch is a fast-forward of the target. |
| get_merge_request_approvalsA | Get approval rules, approvals received, approvals still required, and eligible approvers. |
| approve_merge_requestB | Submit the authenticated user's approval for a GitLab merge request. |
| unapprove_merge_requestA | Remove the authenticated user's approval from a GitLab merge request. |
| list_merge_request_diffsA | Return changed files and patch hunks for a GitLab merge request. |
| get_merge_request_file_patchA | Find one exact changed path across paginated merge-request diffs and return its patch metadata and hunks. |
| list_merge_request_commitsB | List commits contained in a GitLab merge request. |
| list_merge_request_pipelinesA | List pipelines associated with a GitLab merge request. |
| list_merge_request_discussionsA | List complete GitLab merge request discussion threads, including resolution state and diff positions. |
| create_merge_request_discussionA | Create a top-level or inline review thread on a GitLab merge request. Inline comments require the latest diff version SHAs and file position. |
| reply_merge_request_discussionB | Reply to an existing GitLab merge request review thread. |
| resolve_merge_request_discussionC | Resolve or reopen a GitLab merge request review thread. |
| update_merge_request_noteA | Replace the body of a note or reply inside a GitLab merge request discussion. |
| delete_merge_request_noteA | Permanently delete a note or reply from a GitLab merge request discussion. |
| apply_merge_request_suggestionA | Apply a single GitLab code suggestion by its suggestion ID. Performs preflight validation: confirms the suggestion belongs to the specified project/MR, is still applicable, has not already been applied, and that the MR head SHA matches the caller's expected value. Uses the Suggestions API at PUT /suggestions/:id/apply. Returns the suggestion state including applicable and applied flags. An explicit acknowledgement is required to apply. Note: GitLab's apply endpoint does not accept an expected-head parameter, so a TOCTOU race is possible between preflight and mutation; the server remains authoritative at mutation time. |
| batch_apply_merge_request_suggestionsA | Apply multiple GitLab code suggestions in a single commit using the batch Suggestions API at PUT /suggestions/batch_apply. Performs preflight validation on every suggestion before any mutation: confirms each belongs to the specified project/MR, is still applicable, has not already been applied, and that the MR head SHA matches the caller's expected value. If any suggestion is invalid the entire batch is rejected before calling GitLab's batch-apply endpoint. Returns an array of suggestion states. An explicit acknowledgement is required. Note: GitLab's batch-apply endpoint does not accept an expected-head parameter, so a TOCTOU race is possible between preflight and mutation; the server remains authoritative at mutation time. |
| list_merge_request_reactionsA | List emoji reactions on a GitLab merge request or one of its notes. |
| add_merge_request_reactionA | Add an emoji reaction to a GitLab merge request or one of its notes. |
| remove_merge_request_reactionA | Remove an emoji reaction from a GitLab merge request or note by award ID. |
| list_repository_treeA | List files and directories in a GitLab repository at a branch, tag, or commit. |
| search_codeA | Search blobs in a specific GitLab project. Use plain code terms, filenames, symbols, or error text. |
| get_blobA | Fetch repository blob content by Git object SHA. UTF-8 text is decoded by default; binary content remains bounded base64. |
| get_fileA | Fetch one repository file at a ref. Text is decoded from base64 by default; binary or unusually large content stays base64. |
| fetch_gitlab_file_urlA | Fetch bounded UTF-8 repository-file content from a same-instance GitLab blob, raw, or repository-files API URL. |
| download_gitlab_attachmentA | Download a same-instance GitLab issue or merge-request upload as bounded base64 data. Only GitLab upload paths are accepted. |
| create_fileA | Create a new UTF-8 or base64 repository file and commit it to an existing branch. |
| update_fileA | Replace a repository file and commit the change. Supply last_commit_id to prevent overwriting a concurrent edit. |
| delete_fileA | Delete a repository file and commit the deletion. Supply last_commit_id to guard against concurrent edits. |
| list_branchesB | List or search branches in a GitLab project. |
| create_branchA | Create a branch from an existing branch, tag, or commit SHA. |
| delete_branchA | Delete a GitLab repository branch. Protected branches cannot be deleted through this operation. |
| list_commitsA | List commits for a project, optionally scoped to a ref, path, or time range. |
| get_commitA | Fetch a GitLab commit and its optional diff statistics. |
| compare_refsA | Compare two branches, tags, or commits and return commits plus per-file diffs. |
| list_commit_diffsA | Return the files and patch hunks changed by one GitLab commit. |
| create_commitA | Create one GitLab commit containing non-destructive atomic create, update, move, or chmod actions. update and move require a per-file last_commit_id to guard against concurrent overwrites. Do not supply both start_branch and start_sha; use start_branch for new-branch creation only. |
| create_destructive_commitA | Create one GitLab commit that can delete files or force a branch update. For ordinary updates, the branch tip must match start_sha before the commit is submitted; forced updates use start_sha as GitLab's explicit replacement parent. Delete actions also require last_commit_id. |
| list_pipelinesA | List project pipelines by status, ref, source, user, or update time. |
| create_pipelineA | Create a GitLab pipeline for a ref with bounded structured inputs or variables. Variable values are sent only to GitLab and are omitted from the normalized response. Input values may be strings, numbers, booleans, arrays, or objects — bounded by depth, length, and size limits. |
| get_latest_pipelineA | Get the latest pipeline for a project ref. |
| get_pipeline_test_reportB | Get bounded test-suite and test-case results for one pipeline. |
| get_pipeline_test_report_summaryA | Get aggregate test-report counts and pass/fail/error totals for one pipeline. |
| list_pipeline_bridgesA | List bridge jobs for a pipeline to discover downstream child or multi-project pipelines. |
| get_pipelineA | Get one pipeline with status, duration, coverage, ref, user, and timestamps. |
| list_pipeline_jobsB | List jobs in a GitLab pipeline, including stages, status, runner, artifacts, and failure reason. |
| get_jobA | Get detailed status, runner, artifacts, timestamps, commit, and pipeline information for one CI job. |
| list_project_jobsC | List recent jobs across all pipelines in a GitLab project. |
| get_job_logA | Retrieve the plain-text trace for a GitLab CI job, up to the configured response safety limit. |
| get_job_artifact_fileA | Download one file from a GitLab job artifact archive as base64, subject to a strict size limit. |
| get_job_artifact_archiveA | Download a GitLab job's complete artifact ZIP archive as bounded base64 data. |
| retry_pipelineB | Retry failed or canceled jobs in a GitLab pipeline. |
| cancel_pipelineC | Cancel all cancelable jobs in a running GitLab pipeline. |
| retry_jobB | Retry a failed or canceled GitLab CI job. |
| cancel_jobA | Cancel a pending or running GitLab CI job. |
| play_jobA | Start a manual GitLab CI job. |
| list_project_runnersA | List runners available to a project without returning runner authentication tokens or CI variables. |
| lint_ci_configurationA | Validate GitLab CI YAML in project context and return status, errors, warnings, and jobs without returning merged YAML or protected variables. |
| list_commit_statusesA | List CI and external status checks attached to a GitLab commit. |
| create_commit_statusA | Create or update an external GitLab commit status for a ref. |
| list_protected_branchesA | Inspect protected-branch access policy for a GitLab project. |
| get_protected_branchA | Inspect one protected branch and its push, merge, unprotect, and code-owner approval policy. |
| protect_branchA | Create protected-branch policy after a capability preflight. An explicit acknowledgement and unprotect rule are required to avoid accidental lockout. |
| update_protected_branchA | Update protected-branch policy only after reading the current policy. An explicit acknowledgement and unprotect rule are required. |
| unprotect_branchA | Remove protected-branch policy only after reading the current policy and explicitly acknowledging the destructive governance change. |
| list_protected_tagsA | Inspect protected-tag create-access policy for a GitLab project. |
| get_protected_tagA | Inspect one protected tag and its create-access policy. |
| protect_tagA | Create a protected-tag policy after a capability preflight. An explicit acknowledgement is required to prevent accidental governance changes. |
| unprotect_tagA | Remove a protected-tag policy only after reading the current policy and explicitly acknowledging the destructive governance change. |
| list_project_approval_rulesA | List project-level merge-request approval rules and eligible approvers. |
| get_project_approval_ruleA | Get one project-level merge-request approval rule by ID. |
| create_project_approval_ruleA | Create a merge-request approval rule after a capability preflight. The explicit acknowledgement prevents accidental governance changes. |
| update_project_approval_ruleA | Update a project approval rule only after reading the current rule and explicitly acknowledging the governance change. |
| delete_project_approval_ruleA | Delete a project approval rule only after reading it and explicitly acknowledging the destructive governance change. |
| list_tagsA | List Git tags and release metadata for a project. |
| get_tagA | Get one Git tag and its associated release metadata. |
| create_tagA | Create a Git tag from a branch, ref, or commit SHA. |
| delete_tagA | Delete a Git tag. This does not delete a release with the same tag name. |
| list_releasesB | List GitLab releases for a project. |
| get_releaseB | Get one GitLab release by tag name. |
| create_releaseA | Create a GitLab release and optionally create its tag from a ref. |
| update_releaseB | Update the metadata or assets of an existing GitLab release. |
| delete_releaseA | Delete release metadata without deleting the Git tag with the same name. |
| list_release_asset_linksA | List external asset links attached to a GitLab release. |
| get_release_asset_linkA | Get one external asset link attached to a GitLab release. |
| create_release_asset_linkC | Attach an external asset link to a GitLab release. |
| update_release_asset_linkB | Update an external asset link attached to a GitLab release. |
| delete_release_asset_linkC | Delete an external asset link from a GitLab release. |
| list_pipeline_schedulesA | List project pipeline schedules without exposing schedule variable values. |
| get_pipeline_scheduleA | Get one pipeline schedule without exposing schedule variable values. |
| create_pipeline_scheduleC | Create a project pipeline schedule. |
| update_pipeline_scheduleC | Update a project pipeline schedule. |
| create_pipeline_schedule_variableB | Create a pipeline schedule variable without returning its value. |
| update_pipeline_schedule_variableC | Update a pipeline schedule variable without returning its value. |
| delete_pipeline_schedule_variableC | Delete a pipeline schedule variable without returning its former value. |
| delete_pipeline_scheduleB | Delete a project pipeline schedule. |
| run_pipeline_scheduleB | Run a project pipeline schedule immediately. |
| take_ownership_pipeline_scheduleB | Make the current GitLab user the owner of a pipeline schedule. |
| list_project_ci_variablesA | List project CI/CD variable metadata without exposing variable values. |
| get_project_ci_variableA | Get project CI/CD variable metadata without exposing its value. |
| create_project_ci_variableA | Create a project CI/CD variable without returning its value. |
| update_project_ci_variableB | Update a project CI/CD variable without returning its value. |
| delete_project_ci_variableB | Delete a project CI/CD variable without returning its former value. |
| list_group_ci_variablesA | List group CI/CD variable metadata without exposing variable values. |
| get_group_ci_variableA | Get group CI/CD variable metadata without exposing its value. |
| create_group_ci_variableB | Create a group CI/CD variable without returning its value. |
| update_group_ci_variableA | Update a group CI/CD variable without returning its value. |
| delete_group_ci_variableB | Delete a group CI/CD variable without returning its former value. |
| list_environmentsA | List all environments for a project, optionally filtered by name, search term, or state (available, stopping, stopped). |
| get_environmentA | Retrieve a single environment by its numeric ID. |
| list_deploymentsA | List deployments for a project with status, environment, ordering, and time-range filters. Pagination is bounded to 100 per page. |
| get_deploymentA | Retrieve a single deployment with status, environment, deployable, pipeline, and (on Premium/Ultimate) approval summary information. |
| get_deployment_approval_statusA | Retrieve the approval status for a deployment, including approval rules and individual approval decisions. Requires GitLab Premium or Ultimate with protected-environment approval rules configured. On Free or non-protected environments the approval fields may be absent. |
| list_project_webhooksA | List project webhook configurations. Secret tokens and secret custom headers are never exposed. |
| get_project_webhookA | Get one project webhook configuration by ID. Secret tokens and secret custom headers are never exposed. |
| list_project_webhook_eventsA | List recent delivery events for a specific project webhook. Response body contents are never exposed; only presence and size metadata are returned. Header secrets are redacted. |
| get_project_webhook_eventA | Get one webhook delivery event by ID. Searches through GitLab's documented event-list endpoint (events from the past 7 days only). Inspects at most 10 pages (1,000 events). Not a direct event lookup — the event must appear in the paginated list. Response body contents are never exposed; only presence and size metadata are returned. Header secrets are redacted. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
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/CobolJunkie/gitlab-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server