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.
Operating modes
Section titled “Operating modes”Individual mode
Section titled “Individual mode”In individual mode, the server registers one tool per GitLab operation: 863 tools for CE, 1006 tools for self-managed Enterprise/Premium, or 1011 tools on GitLab.com Enterprise/Premium when Orbit is available. This provides maximum granularity but consumes significant LLM context tokens for tool discovery.
Meta-tool mode (default)
Section titled “Meta-tool mode (default)”In meta-tool mode (META_TOOLS=true), 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 32 base meta-tools, 47 on self-managed Enterprise/Premium, or 48 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 toolset
Section titled “Dynamic toolset”Dynamic mode (TOOL_SURFACE=dynamic or TOOL_SURFACE=dynamic-3) is the low-token alternative. It exposes only three public tools: gitlab_search_tools, gitlab_describe_tools, and gitlab_execute_tool (the singular gitlab_execute_tool name is intentional). The same GitLab actions remain available in the canonical action catalog. The assistant searches for an action, describes the exact schema, then executes the canonical domain.action ID.
flowchart LR
A[Search tools] --> B[Describe action]
B --> C[Execute domain.action]
C --> D[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.
Tool naming convention
Section titled “Tool naming convention”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.actionIDs executed throughgitlab_execute_tool(e.g.,issue.create,merge_request.list)
Base meta-tools (32)
Section titled “Base meta-tools (32)”Project management
Section titled “Project management”| 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, 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, and preferences | get, current, list, ssh_key_*, gpg_key_*, email_*, status_* |
gitlab_wiki | Wiki page management and attachments | list, get, create, update, delete, upload_attachment |
Code & repository
Section titled “Code & repository”| 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, 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_* |
Code review
Section titled “Code review”| 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 | 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_* |
Search & analysis
Section titled “Search & analysis”| 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, … |
Access & credentials
Section titled “Access & credentials”| 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_* |
Packages & content
Section titled “Packages & content”| 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 |
Discovery & utilities
Section titled “Discovery & utilities”| 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 |
Enterprise-only tools
Section titled “Enterprise-only tools”When the Enterprise/Premium catalog is enabled, the server registers 15 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_storage_move, gitlab_vulnerability, 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.
Further reading
Section titled “Further reading”- Meta-tools — detailed meta-tool architecture and usage
- Dynamic toolset — low-token search/describe/execute mode
- Orbit — GitLab.com Enterprise/Premium Knowledge Graph tools
- Analysis Tools — AI-powered sampling tools
- Resources & Prompts — read-only context and prompt templates