Skip to content

Tools Overview

GitLab MCP Server exposes GitLab operations as MCP tools that AI assistants can invoke directly. The server offers three operating modes to balance capability with token efficiency.

All modes cover the same GitLab API surface. They differ in packaging: individual mode exposes one MCP tool per operation, meta-tool mode groups actions by domain, and dynamic mode searches and executes canonical domain.action IDs from the same action catalog.

In individual mode, the server registers one tool per GitLab operation: 867 tools for CE, 1027 tools for self-managed Enterprise/Premium, or 1033 tools on GitLab.com Enterprise/Premium when Orbit is available. This provides maximum granularity but consumes significant LLM context tokens for tool discovery.

In meta-tool mode (TOOL_SURFACE=meta), related operations are consolidated into domain-level meta-tools. Each meta-tool accepts an action parameter that routes to the appropriate handler. This reduces the tool count to 33 base meta-tools, 49 on self-managed Enterprise/Premium, or 50 on GitLab.com Enterprise/Premium when Orbit is available, dramatically improving LLM token efficiency while preserving full functionality.

{
"tool": "gitlab_issue",
"arguments": {
"action": "create",
"project": "my-group/my-project",
"title": "Fix login redirect",
"description": "Users are redirected to 404 after login",
"labels": "bug,priority::high"
}
}

Dynamic mode (TOOL_SURFACE=dynamic) is the low-token alternative. It exposes only two public tools: gitlab_find_action and gitlab_execute_action (the singular gitlab_execute_action name is intentional). The same GitLab actions remain available in the canonical action catalog. The assistant finds an action with its exact schema, then executes the canonical domain.action ID.

flowchart LR
	A[Find action and schema] --> B[Execute domain.action]
	B --> C[Existing GitLab handler]

Because meta-tools and dynamic mode share the canonical action catalog, safety behavior stays consistent across both modes. Safety behavior includes read-only filtering, safe-mode previews, token-scope filtering, destructive confirmations, schemas, and result formatting.

All tools follow a consistent naming pattern:

  • Individual tools: gitlab_{action}_{resource} (e.g., gitlab_create_issue, gitlab_list_projects)
  • Meta-tools: gitlab_{domain} (e.g., gitlab_issue, gitlab_project)
  • Dynamic actions: canonical domain.action IDs executed through gitlab_execute_action (e.g., issue.create, merge_request.list)

| Meta-tool | Description | Key Actions | | ---------------- | -------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------ | | gitlab_project | Project CRUD, configuration, hooks, labels, milestones, members, badges, access tokens, todo, upload, and more | list, get, create, update, delete, fork, star, archive, label_*, milestone_*, members, badge_*, upload | | gitlab_issue | Issue lifecycle, notes, discussions, links, work items (including work item types), time tracking, award emoji, and resource events | list, get, create, update, delete, note_*, link_*, discussion_*, work_item_*, time_* | | gitlab_group | Group CRUD, subgroups, members, badges, hooks, labels, milestones, transfer, and descendant projects | list, get, create, update, delete, label_*, milestone_*, member_*, badge_*, hook_* | | gitlab_user | User information, status, SSH keys, GPG keys, emails, activity, preferences, and instance service accounts (Enterprise) | get, current, list, ssh_key_*, gpg_key_*, email_*, status_*, service_account_* | | gitlab_wiki | Wiki page management and attachments | list, get, create, update, delete, upload_attachment |

| Meta-tool | Description | Key Actions | | ---------------------- | ------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | | gitlab_branch | Branch management and protection rules (including branch rule queries via GraphQL) | list, get, create, delete, protect, unprotect, branch_rule_* | | gitlab_tag | Tag management and protection rules with GPG signature verification | list, get, create, delete, protect, unprotect | | gitlab_release | Release management and release asset links | list, get, create, update, delete, link_* | | gitlab_repository | Repository tree, files, commits, diffs, blame, compare (including cross-project), cherry-pick, revert, contributors, archives, changelogs, markdown | tree, file_*, commit_*, compare, blame, archive, changelog, submodule_*, discussion_* | | gitlab_merge_request | MR lifecycle, approvals, approval rules, time tracking, subscriptions, context commits, award emoji, and resource events | list, get, create, update, merge, rebase, approve, approval_*, time_*, event_* |

| Meta-tool | Description | Key Actions | | ------------------ | -------------------------------------------------------------------------- | ---------------------------------------------------------- | | gitlab_mr_review | MR notes, threaded discussions, code diffs, draft notes, and diff versions | note_*, discussion_*, diff_*, draft_*, version_* |

| Meta-tool | Description | Key Actions | | -------------------- | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------- | | gitlab_pipeline | Pipeline management, resource groups, test reports, trigger tokens, pipeline bridges, and pipeline schedules | list, get, create, cancel, retry, delete, wait, schedule_*, trigger_* | | gitlab_job | CI job management, artifacts, logs, and Kubernetes agents (force cancel supported) | list, get, play, cancel, retry, erase, trace, artifacts, wait, k8s_* | | gitlab_runner | CI/CD runner management, runner controllers, controller scopes, and controller tokens | list, get, update, remove, jobs, controller_*, register, verify | | gitlab_ci_variable | CI/CD variables at instance, group, and project scope | list, get, create, update, delete (at each scope level) | | gitlab_environment | Environment management, protected environments, deployment freeze periods, and deployment records | list, get, create, update, delete, stop, deployment_*, freeze_* |

| Meta-tool | Description | Key Actions | | ---------------- | --------------------------------------------------------------- | ----------------------------------------------------------------------------------------- | | gitlab_search | Cross-resource search across projects, groups, and global scope | code, issues, merge_requests, commits, milestones, notes, projects, snippets, users, wiki | | gitlab_analyze | AI-powered sampling analysis (11 operations via LLM sampling) | analyze_mr_changes, summarize_issue, pipeline_failure, … |

| Meta-tool | Description | Key Actions | | --------------- | ---------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------- | | gitlab_access | Deploy keys, deploy tokens, project access tokens, group access tokens, and access requests | deploy_key_*, deploy_token_*, project_token_*, group_token_* | | gitlab_admin | Instance administration: Sidekiq, settings, license, broadcast messages, hooks, PATs, and more | sidekiq_*, setting_*, license_*, broadcast_*, hook_*, pat_* |

| Meta-tool | Description | Key Actions | | ----------------- | ----------------------------------------------------------------------------- | ----------------------------------------------------------- | | gitlab_package | Package registry management and generic package file upload/download | list, get, delete, upload, download, protection_rule_* | | gitlab_snippet | Project and personal snippets with discussions, notes, and award emoji | list, get, create, update, delete, discussion_*, note_* | | gitlab_template | Project templates (gitignores, CI YAML, Dockerfiles, licenses) and CI linting | gitignore_*, ci_*, dockerfile_*, license_*, lint |

| Meta-tool | Description | Key Actions | | ------------------------ | ----------------------------------------------------------------- | ------------------------------------------------ | | gitlab_feature_flags | Feature flag and feature flag user list management | list, get, create, update, delete, user_list_* | | gitlab_model_registry | ML model package file download from GitLab Model Registry | download | | gitlab_ci_catalog | CI/CD Catalog resource discovery (reusable components, templates) | list, get | | gitlab_custom_emoji | Group-level custom emoji management via GraphQL | list, get, create, delete | | gitlab_resolve_project | Resolve Git remote URLs to GitLab project IDs | resolve |

When the Enterprise/Premium catalog is enabled, the server registers 16 additional self-managed meta-tools for GitLab Premium and Ultimate features:

gitlab_merge_train, gitlab_audit_event, gitlab_dora_metrics, gitlab_dependency, gitlab_external_status_check, gitlab_group_scim, gitlab_member_role, gitlab_enterprise_user, gitlab_attestation, gitlab_compliance_policy, gitlab_project_alias, gitlab_geo, gitlab_vulnerability, gitlab_security_attribute, gitlab_security_category, gitlab_security_finding

On GitLab.com Enterprise/Premium, the catalog also registers gitlab_orbit with five read-only Knowledge Graph actions: status, schema, tools, query, and graph_status.