Tools Reference¶
Complete catalog of every tool the GitLab MCP server exposes.
Setup first — if you haven't connected your Personal Access Token or OAuth credentials yet, follow one of the client setup guides or read Getting Started. Tools listed below will be unavailable until the server is authenticated.
Feature toggles¶
Toolsets are split into a default set (exposed automatically) and an
opt-in set (must be explicitly enabled). The lists below are derived
directly from TOOLSET_DEFINITIONS in
tools/registry.ts.
| Status | Groups |
|---|---|
| Default — always exposed | Projects & Namespaces, Projects & Files, Branches & Commits, Groups, Merge Requests, Issues, Labels, CI Lint, Users & Events |
| Opt-in — must be enabled | Work Items, Pipelines, Jobs & Deployments (also USE_PIPELINE=true), Milestones (also USE_MILESTONE=true), Wiki (also USE_GITLAB_WIKI=true), Releases, Tags, Variables, Webhooks, Search, Dependency Proxy, Meta & GraphQL |
How to enable opt-in groups (any one is sufficient):
GITLAB_TOOLSETS=<group,…>— comma-separated toolset IDs.GITLAB_TOOLSETS=all— enables every group.GITLAB_TOOLS=<tool,…>— enables individual tools regardless of group.USE_PIPELINE=true/USE_MILESTONE=true/USE_GITLAB_WIKI=true— legacy single-group flags (Pipelines, Milestones, Wiki only).- Call the
discover_toolsMCP tool at runtime to activate categories for the current session.
Read-only mode (GITLAB_READ_ONLY_MODE=true) hides every write tool
regardless of toggles. See Environment Variables
and CLI Arguments for the full list.
Legend¶
| Marker | Meaning |
|---|---|
| 📖 | Read-only — fetches data, does not modify GitLab state. Safe to invoke freely. |
| ✏️ | Writes — creates, updates, or deletes data on GitLab. Confirm intent before running. |
Browse by group¶
Each group has its own page with full parameter tables — click any tool name to jump to its details, or click the group title for the per-group view.
Projects & Namespaces¶
Project/namespace listing, member queries, group iterations, and server health. (9 tools)
| Tool | What it does | R/W |
|---|---|---|
get_project |
Get details of a specific project | 📖 |
list_projects |
List projects accessible by the current user | 📖 |
list_project_members |
List members of a GitLab project | 📖 |
list_namespaces |
List all namespaces (users and groups) available to the current user. Filter by kind='group' for groups only. | 📖 |
get_namespace |
Get details of a namespace (user or group) by ID or path. Groups are namespaces with kind='group'. | 📖 |
verify_namespace |
Verify if a namespace path exists | 📖 |
list_group_projects |
List projects in a group | 📖 |
list_group_iterations |
List group iterations with filtering options | 📖 |
health_check |
Verify server status and authentication | 📖 |
Projects & Files¶
Project search/creation/fork plus the Files API for reading and writing repository content without shelling out to git. (7 tools)
| Tool | What it does | R/W |
|---|---|---|
search_repositories |
Search for GitLab projects | 📖 |
create_repository |
Create a new GitLab project | ✏️ |
get_file_contents |
Get contents of a file or directory from a GitLab project | 📖 |
push_files |
Push multiple files in a single commit | ✏️ |
create_or_update_file |
Create or update a file in a GitLab project | ✏️ |
fork_repository |
Fork a project to your account or specified namespace | ✏️ |
get_repository_tree |
List files and directories in a repository | 📖 |
Branches & Commits¶
Branch management, commit listing/inspection, file blame, and CI commit-status manipulation. (10 tools)
| Tool | What it does | R/W |
|---|---|---|
create_branch |
Create a new branch | ✏️ |
get_branch |
Get branch details (commit, protection status) | 📖 |
list_branches |
List branches in project with search filter | 📖 |
delete_branch |
Delete branch from project | ✏️ |
list_commits |
List repository commits with filtering options | 📖 |
get_commit |
Get details of a specific commit | 📖 |
get_commit_diff |
Get changes/diffs of a specific commit | 📖 |
get_file_blame |
Get git blame for a file at a given ref. Each entry maps a contiguous range of source lines to the commit that last changed them (id, author, authored_date, message). Use range_start/range_end to limit blame to specific lines. | 📖 |
list_commit_statuses |
List statuses for a commit | 📖 |
create_commit_status |
Create or update the status of a commit | ✏️ |
Groups¶
Create new groups and subgroups. (1 tools)
| Tool | What it does | R/W |
|---|---|---|
create_group |
Create new group or subgroup | ✏️ |
Merge Requests¶
MR lifecycle — create, update, merge, approve, plus diff/conflict inspection and the full discussion/note/draft API. (43 tools)
| Tool | What it does | R/W |
|---|---|---|
merge_merge_request |
Merge a merge request | ✏️ |
approve_merge_request |
Approve a merge request | ✏️ |
unapprove_merge_request |
Unapprove a merge request | ✏️ |
get_merge_request_approval_state |
Get merge request approval details including approvers | 📖 |
get_branch |
Get branch details (commit, protection status) | 📖 |
list_branches |
List branches in project with search filter | 📖 |
get_merge_request_conflicts |
Get the conflicts of a merge request | 📖 |
list_merge_request_pipelines |
List pipelines for a merge request with pagination | 📖 |
get_merge_request |
Get details of a merge request (mergeRequestIid or branchName required) | 📖 |
get_merge_request_diffs |
Get the changes/diffs of a merge request (mergeRequestIid or branchName required) | 📖 |
list_merge_request_changed_files |
List changed file paths in a merge request without diff content (mergeRequestIid or branchName required) | 📖 |
list_merge_request_diffs |
List merge request diffs with pagination (mergeRequestIid or branchName required) | 📖 |
get_merge_request_file_diff |
Get diffs for specific files from a merge request (mergeRequestIid or branchName required) | 📖 |
list_merge_request_versions |
List all versions of a merge request | 📖 |
get_merge_request_version |
Get a specific version of a merge request | 📖 |
update_merge_request |
Update a merge request (mergeRequestIid or branchName required) | ✏️ |
create_merge_request |
Create a new merge request | ✏️ |
list_merge_requests |
List merge requests (without project_id: user's MRs; with project_id: project MRs) | 📖 |
get_branch_diffs |
Get diffs between two branches or commits | 📖 |
mr_discussions |
List discussion items for a merge request | 📖 |
create_merge_request_note |
Add a new note to a merge request | ✏️ |
update_merge_request_note |
Modify an existing merge request note | ✏️ |
delete_merge_request_note |
Delete an existing merge request note | ✏️ |
get_merge_request_note |
Get a specific note for a merge request | 📖 |
get_merge_request_notes |
List notes for a merge request | 📖 |
delete_merge_request_discussion_note |
Delete a discussion note on a merge request | ✏️ |
update_merge_request_discussion_note |
Update a discussion note on a merge request | ✏️ |
create_merge_request_discussion_note |
Add a new discussion note to an existing merge request thread | ✏️ |
get_draft_note |
Get a single draft note from a merge request | 📖 |
list_draft_notes |
List draft notes for a merge request | 📖 |
create_draft_note |
Create a draft note for a merge request | ✏️ |
update_draft_note |
Update an existing draft note | ✏️ |
delete_draft_note |
Delete a draft note | ✏️ |
publish_draft_note |
Publish a single draft note | ✏️ |
bulk_publish_draft_notes |
Publish all draft notes for a merge request | ✏️ |
create_merge_request_thread |
Create a new thread on a merge request | ✏️ |
resolve_merge_request_thread |
Resolve a thread on a merge request | ✏️ |
list_merge_request_emoji_reactions |
List all emoji reactions on a merge request | 📖 |
list_merge_request_note_emoji_reactions |
List all emoji reactions on a merge request note. Pass discussion_id for discussion thread replies. | 📖 |
create_merge_request_emoji_reaction |
Add an emoji reaction to a merge request (e.g. thumbsup, rocket, eyes) | ✏️ |
delete_merge_request_emoji_reaction |
Remove an emoji reaction from a merge request | ✏️ |
create_merge_request_note_emoji_reaction |
Add an emoji reaction to a merge request note. Pass discussion_id for discussion thread replies. | ✏️ |
delete_merge_request_note_emoji_reaction |
Remove an emoji reaction from a merge request note. Pass discussion_id for discussion thread replies. | ✏️ |
Issues¶
Issue CRUD, links, discussions and notes, todos, and emoji reactions. (24 tools)
| Tool | What it does | R/W |
|---|---|---|
create_issue |
Create a new issue | ✏️ |
list_issues |
List issues (default: created by current user; use scope='all' for all) | 📖 |
my_issues |
List issues assigned to the authenticated user | 📖 |
get_issue |
Get details of a specific issue | 📖 |
update_issue |
Update an issue | ✏️ |
update_issue_description_patch |
Apply a patch (search/replace or unified diff) to an issue description. Reduces token usage by allowing small changes without sending the full description. Supports dry_run to preview changes and create_note to summarize updates. | ✏️ |
delete_issue |
Delete an issue | ✏️ |
list_todos |
List GitLab to-do items for the current user | 📖 |
mark_todo_done |
Mark a GitLab to-do item as done | ✏️ |
mark_all_todos_done |
Mark all pending GitLab to-do items as done for the current user | ✏️ |
create_issue_note |
Add a note to an issue, optionally replying to a discussion thread | ✏️ |
update_issue_note |
Modify an existing issue thread note | ✏️ |
list_issue_links |
List all issue links for a specific issue | 📖 |
list_issue_discussions |
List discussions for an issue | 📖 |
get_issue_link |
Get a specific issue link | 📖 |
create_issue_link |
Create an issue link between two issues | ✏️ |
delete_issue_link |
Delete an issue link | ✏️ |
create_note |
Create a new note (comment) to an issue or merge request | ✏️ |
list_issue_emoji_reactions |
List all emoji reactions on an issue | 📖 |
list_issue_note_emoji_reactions |
List all emoji reactions on an issue note. Pass discussion_id for discussion thread replies. | 📖 |
create_issue_emoji_reaction |
Add an emoji reaction to an issue (e.g. thumbsup, rocket, eyes) | ✏️ |
delete_issue_emoji_reaction |
Remove an emoji reaction from an issue | ✏️ |
create_issue_note_emoji_reaction |
Add an emoji reaction to an issue note. Pass discussion_id for discussion thread replies. | ✏️ |
delete_issue_note_emoji_reaction |
Remove an emoji reaction from an issue note. Pass discussion_id for discussion thread replies. | ✏️ |
Labels¶
Project label CRUD. (5 tools)
| Tool | What it does | R/W |
|---|---|---|
list_labels |
List labels for a project | 📖 |
get_label |
Get a single label from a project | 📖 |
create_label |
Create a new label in a project | ✏️ |
update_label |
Update an existing label in a project | ✏️ |
delete_label |
Delete a label from a project | ✏️ |
Work Items¶
Modern unified API for issues, tasks, incidents, and other typed work items — including notes, emoji reactions, and incident timeline events. (18 tools)
Opt-in. Enable via
GITLAB_TOOLSETS=workitems(orGITLAB_TOOLSETS=all), list individual tools inGITLAB_TOOLS=, or activate at runtime with thediscover_toolsMCP tool.
| Tool | What it does | R/W |
|---|---|---|
get_work_item |
Get a work item with full details including status, hierarchy, type, and widgets | 📖 |
list_work_items |
List work items with filters (type, state, search, assignees, labels) | 📖 |
create_work_item |
Create a work item (issue, task, incident, epic, etc.) with full field support | ✏️ |
update_work_item |
Update a work item (title, description, labels, assignees, state, parent, custom fields, etc.) | ✏️ |
convert_work_item_type |
Convert a work item to a different type | ✏️ |
list_work_item_statuses |
List available statuses for a work item type (Premium/Ultimate) | 📖 |
list_custom_field_definitions |
List custom field definitions for a work item type | 📖 |
move_work_item |
Move a work item to a different project | ✏️ |
list_work_item_notes |
List notes and discussions on a work item | 📖 |
create_work_item_note |
Add a note to a work item (supports Markdown, internal notes, threads) | ✏️ |
list_work_item_emoji_reactions |
List all emoji reactions on a work item | 📖 |
list_work_item_note_emoji_reactions |
List all emoji reactions on a work item note (comment, thread, or thread reply) | 📖 |
create_work_item_emoji_reaction |
Add an emoji reaction to a work item (e.g. thumbsup, rocket, eyes) | ✏️ |
delete_work_item_emoji_reaction |
Remove an emoji reaction from a work item | ✏️ |
create_work_item_note_emoji_reaction |
Add an emoji reaction to a work item note (comment, thread, or thread reply) | ✏️ |
delete_work_item_note_emoji_reaction |
Remove an emoji reaction from a work item note (comment, thread, or thread reply) | ✏️ |
get_timeline_events |
List timeline events for an incident | 📖 |
create_timeline_event |
Create a timeline event on an incident | ✏️ |
CI Lint¶
Validate .gitlab-ci.yml snippets and project pipeline configs. (2 tools)
| Tool | What it does | R/W |
|---|---|---|
validate_ci_lint |
Validate provided GitLab CI/CD YAML content for a project | 📖 |
validate_project_ci_lint |
Validate an existing .gitlab-ci.yml configuration for a project | 📖 |
Pipelines, Jobs & Deployments¶
Pipeline + job control (trigger, retry, cancel, play manual jobs, fetch logs/artifacts), and the deployments/environments view. (19 tools)
Opt-in. Enable via
GITLAB_TOOLSETS=pipelines(orGITLAB_TOOLSETS=all), or use the legacyUSE_PIPELINE=trueflag for backward compatibility.
| Tool | What it does | R/W |
|---|---|---|
list_pipelines |
List pipelines with filtering options | 📖 |
get_pipeline |
Get details of a specific pipeline | 📖 |
list_deployments |
List deployments with filtering options | 📖 |
get_deployment |
Get details of a specific deployment | 📖 |
list_environments |
List environments in a project | 📖 |
get_environment |
Get details of a specific environment | 📖 |
list_pipeline_jobs |
List all jobs in a specific pipeline | 📖 |
list_pipeline_trigger_jobs |
List trigger jobs (bridges) in a pipeline | 📖 |
get_pipeline_job |
Get details of a GitLab pipeline job number | 📖 |
get_pipeline_job_output |
Get the output/trace of a pipeline job with optional pagination | 📖 |
create_pipeline |
Create a new pipeline for a branch or tag | ✏️ |
retry_pipeline |
Retry a failed or canceled pipeline | ✏️ |
cancel_pipeline |
Cancel a running pipeline | ✏️ |
play_pipeline_job |
Run a manual pipeline job | ✏️ |
retry_pipeline_job |
Retry a failed or canceled pipeline job | ✏️ |
cancel_pipeline_job |
Cancel a running pipeline job | ✏️ |
list_job_artifacts |
List artifact files in a job's archive | 📖 |
download_job_artifacts |
Download job artifact archive (zip) and save to a local path | 📖 |
get_job_artifact_file |
Get content of a single file from a job's artifacts | 📖 |
Milestones¶
Project milestone CRUD plus associated issues/MRs and burndown events. (9 tools)
Opt-in. Enable via
GITLAB_TOOLSETS=milestones(orGITLAB_TOOLSETS=all), or use the legacyUSE_MILESTONE=trueflag for backward compatibility.
| Tool | What it does | R/W |
|---|---|---|
list_milestones |
List milestones with filtering options | 📖 |
get_milestone |
Get details of a specific milestone | 📖 |
create_milestone |
Create a new milestone | ✏️ |
edit_milestone |
Edit an existing milestone | ✏️ |
delete_milestone |
Delete a milestone | ✏️ |
get_milestone_issue |
Get issues associated with a specific milestone | 📖 |
get_milestone_merge_requests |
Get merge requests associated with a specific milestone | 📖 |
promote_milestone |
Promote a milestone to the next stage | ✏️ |
get_milestone_burndown_events |
Get burndown events for a specific milestone | 📖 |
Wiki¶
Project and group wiki page CRUD. Attachment uploads where supported. (10 tools)
Opt-in. Enable via
GITLAB_TOOLSETS=wiki(orGITLAB_TOOLSETS=all), or use the legacyUSE_GITLAB_WIKI=trueflag for backward compatibility.
| Tool | What it does | R/W |
|---|---|---|
list_wiki_pages |
List wiki pages in a project | 📖 |
get_wiki_page |
Get details of a specific wiki page | 📖 |
create_wiki_page |
Create a wiki page in a project | ✏️ |
update_wiki_page |
Update a wiki page in a project | ✏️ |
delete_wiki_page |
Delete a wiki page from a project | ✏️ |
list_group_wiki_pages |
List wiki pages in a group | 📖 |
get_group_wiki_page |
Get details of a specific group wiki page | 📖 |
create_group_wiki_page |
Create a wiki page in a group | ✏️ |
update_group_wiki_page |
Update a wiki page in a group | ✏️ |
delete_group_wiki_page |
Delete a wiki page from a group | ✏️ |
Releases¶
Release lifecycle, release evidence, and asset download. (7 tools)
Opt-in. Enable via
GITLAB_TOOLSETS=releases(orGITLAB_TOOLSETS=all), list individual tools inGITLAB_TOOLS=, or activate at runtime with thediscover_toolsMCP tool.
| Tool | What it does | R/W |
|---|---|---|
list_releases |
List all releases for a project | 📖 |
get_release |
Get a release by tag name | 📖 |
create_release |
Create a new release | ✏️ |
update_release |
Update an existing release | ✏️ |
delete_release |
Delete a release (does not delete the tag) | ✏️ |
create_release_evidence |
Create release evidence (Premium/Ultimate) | ✏️ |
download_release_asset |
Download a release asset file by direct asset path | 📖 |
Tags¶
Tag listing, creation, deletion, and signature inspection. (5 tools)
Opt-in. Enable via
GITLAB_TOOLSETS=tags(orGITLAB_TOOLSETS=all), list individual tools inGITLAB_TOOLS=, or activate at runtime with thediscover_toolsMCP tool.
| Tool | What it does | R/W |
|---|---|---|
list_tags |
List repository tags for a project | 📖 |
get_tag |
Get a repository tag by name | 📖 |
create_tag |
Create a new repository tag | ✏️ |
delete_tag |
Delete a repository tag | ✏️ |
get_tag_signature |
Get the X.509 signature of a signed tag (404 if unsigned) | 📖 |
Users & Events¶
User lookup, the authenticated user (whoami), event streams, and markdown attachment upload/download. (7 tools)
| Tool | What it does | R/W |
|---|---|---|
get_users |
Get GitLab user details by usernames | 📖 |
get_user |
Get user details by ID | 📖 |
whoami |
Get current authenticated user details | 📖 |
list_events |
List events for the authenticated user (before/after: YYYY-MM-DD) | 📖 |
get_project_events |
List events for a project (before/after: YYYY-MM-DD) | 📖 |
upload_markdown |
Upload a file for use in markdown content | ✏️ |
download_attachment |
Download an uploaded file from a project (images returned as base64; use local_path to save to disk) | 📖 |
Variables¶
Project and group CI/CD variable CRUD. (10 tools)
Opt-in. Enable via
GITLAB_TOOLSETS=variables(orGITLAB_TOOLSETS=all), list individual tools inGITLAB_TOOLS=, or activate at runtime with thediscover_toolsMCP tool.
| Tool | What it does | R/W |
|---|---|---|
list_project_variables |
List CI/CD variables for a project | 📖 |
get_project_variable |
Get a single CI/CD variable from a project | 📖 |
create_project_variable |
Create a CI/CD variable for a project | ✏️ |
update_project_variable |
Update an existing CI/CD variable in a project | ✏️ |
delete_project_variable |
Delete a CI/CD variable from a project | ✏️ |
list_group_variables |
List CI/CD variables for a group | 📖 |
get_group_variable |
Get a single CI/CD variable from a group | 📖 |
create_group_variable |
Create a CI/CD variable for a group | ✏️ |
update_group_variable |
Update an existing CI/CD variable in a group | ✏️ |
delete_group_variable |
Delete a CI/CD variable from a group | ✏️ |
Webhooks¶
List webhooks configured on projects or groups, and inspect recent webhook events. (3 tools)
Opt-in. Enable via
GITLAB_TOOLSETS=webhooks(orGITLAB_TOOLSETS=all), list individual tools inGITLAB_TOOLS=, or activate at runtime with thediscover_toolsMCP tool.
| Tool | What it does | R/W |
|---|---|---|
list_webhooks |
List webhooks for a project or group | 📖 |
list_webhook_events |
List recent webhook events (past 7 days) | 📖 |
get_webhook_event |
Get full details of a specific webhook event | 📖 |
Search¶
Code search across all visible projects, a specific project, or a specific group. (3 tools)
Opt-in. Enable via
GITLAB_TOOLSETS=search(orGITLAB_TOOLSETS=all), list individual tools inGITLAB_TOOLS=, or activate at runtime with thediscover_toolsMCP tool.
| Tool | What it does | R/W |
|---|---|---|
search_code |
Search for code across all projects (requires advanced search or Zoekt) | 📖 |
search_project_code |
Search for code within a specific project (requires advanced search or Zoekt) | 📖 |
search_group_code |
Search for code within a specific group (requires advanced search or Zoekt) | 📖 |
Dependency Proxy¶
Inspect and manage the GitLab dependency proxy cache settings, blob storage, and purge operations. (4 tools)
Opt-in. Enable via
GITLAB_TOOLSETS=dependency_proxy(orGITLAB_TOOLSETS=all), list individual tools inGITLAB_TOOLS=, or activate at runtime with thediscover_toolsMCP tool.
| Tool | What it does | R/W |
|---|---|---|
get_dependency_proxy_settings |
Get dependency proxy settings for a group | 📖 |
update_dependency_proxy_settings |
Update dependency proxy settings for a group (enable/disable, credentials for authenticated Docker Hub pulls) | ✏️ |
list_dependency_proxy_blobs |
List cached dependency proxy blobs for a group | 📖 |
purge_dependency_proxy_cache |
Schedule purge of all cached dependency proxy blobs for a group | ✏️ |
Meta & GraphQL¶
Server diagnostics, tool discovery, and the GraphQL escape hatch. (2 tools)
Mixed availability.
discover_toolsis always exposed (the server re-adds it after every toolset filter).execute_graphqlis not part of any toolset — enable it explicitly withGITLAB_TOOLS=execute_graphql.
| Tool | What it does | R/W |
|---|---|---|
execute_graphql |
Execute a GitLab GraphQL query | 📖 |
discover_tools |
Discover and activate additional tool categories for this session. Available categories: merge_requests, issues, repositories, branches, projects, labels, ci, groups, pipelines, milestones, wiki, releases, tags, users, workitems, webhooks, search, variables, dependency_proxy. Already-active categories are listed in the response. | 📖 |
Argument schemas¶
Each group page includes a parameter table per tool, generated from
the authoritative Zod schemas in
schemas.ts.
For runtime schema inspection from a connected MCP client, call the
discover_tools tool.