efficient-gitlab-mcp-server
Production-ready GitLab MCP Server with progressive disclosure pattern
Versions
2.33.0latest2.32.02.31.02.30.02.29.0+ show 52 moreshow less
2.28.42.28.32.28.22.28.12.28.02.27.02.26.02.25.02.24.02.23.02.22.02.21.02.20.02.19.02.18.02.17.12.17.02.16.12.16.02.15.02.14.02.13.02.12.02.11.122.11.112.11.102.11.92.11.82.11.72.11.62.11.52.11.42.11.32.11.22.11.12.11.02.10.02.9.02.8.02.7.12.7.02.6.12.6.02.5.02.4.02.3.02.2.00.3.20.3.00.2.30.2.20.1.1Tools 172
list_merge_request_emoji_reactions List all emoji reactions on a merge request
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
list_merge_request_note_emoji_reactions List all emoji reactions on a merge request note. Pass discussion_id for replies inside a discussion thread.
list_webhooks List webhooks for a project or group
list_webhook_events List recent events for a specific webhook
get_webhook_event Get details of a specific webhook event
search_repositories Search for GitLab projects
get_file_contents Get the contents of a file from a GitLab project. Supports server-side trimming via head / tail / range (line-based, mutually exclusive) and max_bytes (final byte cap, composes with any line trim) to fit large files within a context budget.
create_repository Create a new GitLab project
fork_repository Fork a GitLab project to your account or specified namespace
create_branch Create a new branch in a GitLab project
get_repository_tree Get the repository tree for a GitLab project (list files and directories). Returns {items, pagination_note}. Pass pagination=keyset for keyset pagination on large trees.
create_or_update_file Create or update a single file in a GitLab project
push_files Push multiple files to a GitLab project in a single commit
get_branch_diffs Get the changes/diffs between two branches or commits in a GitLab project
list_branches List branches of a GitLab project repository
get_branch Get details of a single branch (commit SHA, default flag, protection state)
list_namespaces List all namespaces available to the current user
get_namespace Get details of a namespace by ID or path
verify_namespace Verify if a namespace path exists
create_issue Create a new issue in a GitLab project
get_milestone_issue Get issues assigned to a project milestone
list_issues List issues in a GitLab project. Returns a compact set of fields per issue by default; pass `fields: 'all'` for the raw GitLab response or `fields: ['id', 'title', ...]` to pick your own.
my_issues List issues assigned to the authenticated user. Returns a compact set of fields per issue by default; pass `fields: 'all'` for the raw GitLab response or `fields: [...]` to pick your own.
get_issue Get details of a specific issue in a GitLab project. Returns a compact set of fields by default; pass `fields: 'all'` for the raw GitLab response or `fields: ['iid', 'title', ...]` to pick your own.
update_issue Update an issue in a GitLab project
delete_issue Delete an issue from a GitLab project
list_issue_links List all issue links for a specific issue
create_issue_link Create an issue link between two issues
delete_issue_link Delete an issue link
list_issue_discussions List discussions for an issue in a GitLab project
create_issue_note Add a note to an issue, or reply to a discussion thread
update_issue_note Modify an existing issue note
get_issue_link Get a single issue link/relationship by ID
create_note Create a note/comment on an issue or merge request. Use notable_type to specify which.
list_milestones List project milestones with filtering options
get_milestone Get a single project milestone
create_milestone Create a new project milestone
edit_milestone Edit an existing project milestone
delete_milestone Delete a project milestone
get_milestone_merge_requests Get merge requests assigned to a project milestone
promote_milestone Promote a project milestone to a group milestone
get_milestone_burndown_events Get burndown chart events for a project milestone
list_commits List repository commits with filtering options. Returns a compact set of fields per commit by default; pass `fields: 'all'` for the raw GitLab response or `fields: [...]` to pick your own.
get_commit Get details of a specific commit. Returns a compact set of fields by default; pass `fields: 'all'` for the raw GitLab response or `fields: ['id', 'title', ...]` to pick your own.
get_commit_diff Get changes/diffs of a specific commit
get_merge_request Get details of a merge request. Returns a compact set of fields by default; pass `fields: 'all'` for the raw GitLab response or `fields: ['iid', 'title', ...]` to pick your own.
list_merge_requests List merge requests in a GitLab project with filtering options. Returns a compact set of fields per MR by default; pass `fields: 'all'` for the raw GitLab response or `fields: ['id', 'iid', ...]` to pick your own.
create_merge_request Create a new merge request in a GitLab project
update_merge_request Update a merge request
merge_merge_request Merge a merge request in a GitLab project
get_merge_request_diffs Get the changes/diffs of a merge request. Supports excluded_file_patterns filtering using regex.
mr_discussions List discussion items 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
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_notes List notes for a merge request
approve_merge_request Approve a merge request. Requires appropriate permissions.
unapprove_merge_request Unapprove a previously approved merge request. Requires appropriate permissions.
get_merge_request_approval_state Get merge request approval details including approvers (uses approval_state when available, falls back to approvals endpoint)
get_merge_request_conflicts Get the conflicts of a merge request in a GitLab project
list_merge_request_pipelines List pipelines attached to a merge request (GET /projects/:id/merge_requests/:iid/pipelines). Supports pagination.
list_merge_request_changed_files STEP 1 of code review workflow.
list_merge_request_diffs List merge request diffs with pagination support (uses the /diffs endpoint)
get_merge_request_file_diff STEP 2 of code review workflow.
list_merge_request_versions List all versions of a merge request
get_merge_request_version Get a specific version of a merge request
get_merge_request_note Get a specific note 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_note_emoji_reaction Add an emoji reaction to a merge request note. Pass discussion_id for replies inside a discussion thread.
get_users Get GitLab user details by usernames. Returns a compact set of fields per user by default; pass `fields: 'all'` for the raw GitLab response or `fields: ['id', 'username', ...]` to pick your own.
get_user Get details of a specific user by ID. Returns a compact set of fields by default; pass `fields: 'all'` for the raw GitLab response or `fields: ['id', 'username', ...]` to pick your own.
search_users Search for GitLab users. Returns a compact set of fields per user by default; pass `fields: 'all'` for the raw GitLab response or `fields: ['id', 'username', ...]` to pick your own.
list_events List all events for the currently authenticated user. Note: before/after parameters accept date format YYYY-MM-DD only
get_project_events List all visible events for a specified project. Note: before/after parameters accept date format YYYY-MM-DD only
upload_markdown Upload a file to a GitLab project for use in markdown content
download_attachment Download an uploaded file from a GitLab project by secret and filename. Returns the file content.
get_current_user Get details of the authenticated user (whoami). Returns the user identified by the configured PAT / OAuth token. Returns a compact set of identity fields by default; pass `fields: 'all'` for the raw GitLab response (including email, last_sign_in_at, is_admin, etc.) or `fields: ['id', 'username', 'email']` to pick your own.
health_check Verify GitLab server connectivity and authentication. Probes the /user endpoint and returns
list_releases List releases for a project. Returns a compact set of fields per release by default; pass `fields: 'all'` for the raw GitLab response (with assets, evidences, _links, milestones) or `fields: [...]` to pick your own.
get_release Get a specific release by tag name
create_release Create a new release for a project
update_release Update an existing release
delete_release Delete a release
create_release_evidence Create evidence for an existing release
download_release_asset Download an asset from a release by its direct asset path
get_work_item Get a single work item with full details including status, hierarchy (parent/children), type, labels, assignees, and all widgets.
list_work_items List work items in a project with filters (type, state, search, assignees, labels). Returns items with status and hierarchy info.
update_group_wiki_page Update an existing wiki page in a group
create_work_item Create a new work item (issue, task, incident, test_case, epic, key_result, objective, requirement, ticket). Supports setting title, description, labels, assignees, weight, parent, health status, start/due dates, milestone, and confidentiality.
update_work_item Update a work item. Can modify title, description, labels, assignees, weight, state, status, parent hierarchy, children, health status, start/due dates, milestone, confidentiality, linked items, and custom fields.
convert_work_item_type Convert a work item to a different type (e.g. issue to task, task to incident).
list_work_item_statuses List available statuses for a work item type in a project. Requires GitLab Premium/Ultimate with configurable statuses.
list_custom_field_definitions List available custom field definitions for a work item type in a project. Returns field names, types, and IDs needed for setting custom fields via update_work_item.
move_work_item Move a work item (issue, task, etc.) to a different project. Uses GitLab GraphQL issueMove mutation.
list_work_item_notes List notes and discussions on a work item. Returns threaded discussions with author, body, timestamps, and system/internal flags.
create_work_item_note Add a note/comment to a work item. Supports Markdown, internal notes, and threaded replies.
get_timeline_events List timeline events for an incident. Returns chronological events with notes, timestamps, and tags.
create_timeline_event Create a timeline event on an incident. Supports tags: 'Start time', 'End time', 'Impact detected', 'Response initiated', 'Impact mitigated', 'Cause identified'.
list_wiki_pages List wiki pages for a project
get_wiki_page Get a specific wiki page by its slug
create_wiki_page Create a new wiki page in a project
update_wiki_page Update an existing wiki page in a project
delete_wiki_page Delete a wiki page from a project
list_group_wiki_pages List wiki pages for a group
get_group_wiki_page Get a specific wiki page from a group by its slug
create_group_wiki_page Create a new wiki page in a group
delete_group_wiki_page Delete a wiki page from a group
delete_merge_request_note_emoji_reaction Remove an emoji reaction from a merge request note. Pass discussion_id for replies inside a discussion thread.
list_issue_emoji_reactions List all emoji reactions on an issue
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
list_issue_note_emoji_reactions List all emoji reactions on an issue note. Pass discussion_id for replies inside a discussion thread.
create_issue_note_emoji_reaction Add an emoji reaction to an issue note. Pass discussion_id for replies inside a discussion thread.
delete_issue_note_emoji_reaction Remove an emoji reaction from an issue note. Pass discussion_id for replies inside a discussion thread.
list_work_item_emoji_reactions List all emoji reactions on a work item
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 by name (GraphQL deletes by name, not by award_id).
list_work_item_note_emoji_reactions List all emoji reactions on a work item note. note_id is the GraphQL GID (e.g. 'gid://gitlab/Note/123' from list_work_item_notes).
create_work_item_note_emoji_reaction Add an emoji reaction to a work item note. note_id is the GraphQL GID from list_work_item_notes.
delete_work_item_note_emoji_reaction Remove an emoji reaction from a work item note by name (GraphQL deletes by name, not by award_id).
list_pipelines List pipelines in a GitLab project. Returns a compact set of fields per pipeline by default; pass `fields: 'all'` for the raw GitLab response or `fields: [...]` to pick your own.
get_pipeline Get details of a specific pipeline in a GitLab project. Returns a compact set of fields by default; pass `fields: 'all'` for the raw GitLab response or `fields: ['id', 'status', ...]` to pick your own.
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
list_pipeline_jobs List all jobs in a specific pipeline
get_pipeline_job_output Get the output/trace of a GitLab pipeline job
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_deployments List deployments in a GitLab project with filtering options
get_deployment Get details of a specific deployment in a GitLab project
list_environments List environments in a GitLab project
get_environment Get details of a specific environment in a GitLab project
list_pipeline_trigger_jobs List all trigger jobs (bridges) in a specific pipeline that trigger downstream pipelines
get_pipeline_job Get details of a GitLab pipeline job number
list_job_artifacts List artifact files in a job's artifacts archive. Returns file names, paths, types, and sizes.
download_job_artifacts Download the entire artifact archive (zip) for a job. Returns the artifact archive content.
get_job_artifact_file Get the content of a single file from a job's artifacts by its path within the archive
execute_graphql Execute a GraphQL query against the GitLab GraphQL API
global_search Search across the entire GitLab instance. Scopes: projects, issues, merge_requests, milestones, snippet_titles, users. Premium/Ultimate adds: wiki_blobs, commits, blobs (code), notes.
project_search Search within a specific project. Scopes: issues, merge_requests, milestones, users. Premium/Ultimate adds: wiki_blobs, commits, blobs (code), notes.
group_search Search within a specific group. Scopes: projects, issues, merge_requests, milestones, users. Premium/Ultimate adds: wiki_blobs, commits, blobs (code), notes.
search_code Search for code across the entire GitLab instance using scope=blobs. Returns matching file content with line numbers. Supports Zoekt advanced syntax on compatible instances.
search_project_code Search for code within a specific project using scope=blobs. Returns matching file content with line numbers.
search_group_code Search for code within a specific group using scope=blobs. Returns matching file content with line numbers.
get_project Get details of a specific project. Returns a compact set of fields by default; pass `fields: 'all'` for the raw GitLab response or `fields: ['id', 'name', ...]` to pick your own. Pass `include_secrets: true` to expose `runners_token`; that implies `fields: 'all'` unless overridden.
list_projects List projects accessible by the current user. Returns a compact set of fields per project by default; pass `fields: 'all'` for the raw GitLab response or `fields: ['id', 'name', ...]` to pick your own.
list_project_members List members of a GitLab project
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
list_group_projects List projects in a GitLab group. Returns a compact set of fields per project by default; pass `fields: 'all'` for the raw GitLab response or `fields: [...]` to pick your own.
list_group_iterations List group iterations with filtering options
list_categories List all available GitLab tool categories. Start here to discover what operations are available, then use activate_tools to enable a category.
activate_tools Enable all tools in one or more categories. After activation, the tools will appear in your tool list automatically. Note: in Claude Code, freshly-activated tools become callable starting in the next turn, not the same turn that activated them — other clients may behave differently.
deactivate_tools Disable all tools in one or more categories. After deactivation, those tools are removed from the active set and stop appearing in tools/list. Useful for reclaiming context-window budget on long sessions when a category is no longer needed. Note: in Claude Code, the deactivated tools stop being callable starting in the next turn — other clients may behave differently.
Permissions 3
network medium filesystem low env_vars low