Gitlab Mcp

215 tools. 101 can modify or destroy data without limits.

25 destructive tools with no built-in limits. Policy required.

Last updated:

101 can modify or destroy data
114 read-only
215 tools total

Community server · catalogue entry checked 26/06/2026

How to control Gitlab Mcp ↓

What Gitlab Mcp exposes to your agents

Read (114) Write / Execute (76) Destructive / Financial (25)
Critical Risk

The most dangerous Gitlab Mcp tools

101 of Gitlab Mcp's 215 tools can modify, destroy, or commit something on every call — and an agent calls them with no built-in limits.

How to control Gitlab Mcp

PolicyLayer is an MCP gateway — it sits between your AI agents and Gitlab Mcp, and nothing reaches the server without passing your rules. These are the rules we recommend:

Deny destructive operations
{
  "cancel_pipeline_job": {
    "deny_if": [
      {
        "conditions": [],
        "on_deny": "Blocked by default. Requires approval."
      }
    ]
  }
}

Destructive tools should never be available to autonomous agents without human approval.

Rate limit write operations
{
  "approve_merge_request": {
    "limits": [
      {
        "counter": "approve_merge_request_per_hour",
        "window": "hour",
        "max": 30,
        "scope": "grant"
      }
    ]
  }
}

Prevents bulk unintended modifications from agents caught in loops.

Cap read operations
{
  "discover_tools": {
    "limits": [
      {
        "counter": "discover_tools_per_minute",
        "window": "minute",
        "max": 60,
        "scope": "grant"
      }
    ]
  }
}

Controls API costs and prevents retry loops from exhausting upstream rate limits.

  1. Create a free account and register Gitlab Mcp — nothing to install.
  2. Add these rules — paste them, or build them visually. Tune the limits to your setup.
  3. Point your MCP client (Claude, Cursor, anything) at your gateway URL.
ENFORCE POLICY ON GITLAB →

Instant setup, no code required.

All 215 Gitlab Mcp tools

DESTRUCTIVE 25 tools
Destructive cancel_pipeline_job Cancel a running pipeline job Destructive delete_branch Delete branch from project Destructive delete_draft_note Delete a draft note Destructive delete_group_variable Delete a CI/CD variable from a group Destructive delete_group_wiki_page Delete a wiki page from a group Destructive delete_issue Delete an issue Destructive delete_issue_emoji_reaction Remove an emoji reaction from an issue Destructive delete_issue_link Delete an issue link Destructive delete_issue_note_emoji_reaction Remove an emoji reaction from an issue note. Pass discussion_id for discussion thread replies. Destructive delete_label Delete a label from a project Destructive delete_merge_request_discussion_note Delete a discussion note on a merge request Destructive delete_merge_request_emoji_reaction Remove an emoji reaction from a merge request Destructive delete_merge_request_note Delete an existing merge request note Destructive delete_merge_request_note_emoji_reaction Remove an emoji reaction from a merge request note. Pass discussion_id for discussion thread replies. Destructive delete_milestone Delete a milestone Destructive delete_project_variable Delete a CI/CD variable from a project Destructive delete_release Delete a release (does not delete the tag) Destructive delete_tag Delete a repository tag Destructive delete_wiki_page Delete a wiki page from a project Destructive delete_work_item_emoji_reaction Remove an emoji reaction from a work item Destructive delete_work_item_note_emoji_reaction Remove an emoji reaction from a work item note (comment, thread, or thread reply) Destructive omg_clear_state Clear state for a given OMG mode or all modes Destructive omg_delete_memory Delete a project memory entry by key Destructive purge_dependency_proxy_cache Schedule purge of all cached dependency proxy blobs for a group Destructive unprotect_branch Remove protection from a previously protected branch
WRITE 69 tools
Write approve_merge_request Approve a merge request Write bulk_publish_draft_notes Publish all draft notes for a merge request Write convert_work_item_type Convert a work item to a different type Write create_branch Create a new branch Write create_commit_status Create or update the status of a commit Write create_draft_note Create a draft note for a merge request Write create_group Create new group or subgroup Write create_group_variable Create a CI/CD variable for a group Write create_group_wiki_page Create a wiki page in a group Write create_issue Create a new issue Write create_issue_emoji_reaction Add an emoji reaction to an issue (e.g. thumbsup, rocket, eyes) Write create_issue_link Create an issue link between two issues Write create_issue_note Add a note to an issue, optionally replying to a discussion thread Write create_issue_note_emoji_reaction Add an emoji reaction to an issue note. Pass discussion_id for discussion thread replies. Write create_label Create a new label in a project Write create_merge_request Create a new merge request Write create_merge_request_discussion_note Add a new discussion note to an existing merge request thread Write create_merge_request_emoji_reaction Add an emoji reaction to a merge request (e.g. thumbsup, rocket, eyes) Write create_merge_request_note Add a new note to a merge request Write create_merge_request_note_emoji_reaction Add an emoji reaction to a merge request note. Pass discussion_id for discussion thread replies. Write create_merge_request_thread Create a new thread on a merge request Write create_milestone Create a new milestone Write create_note Create a new note (comment) to an issue or merge request Write create_or_update_file Create or update a file in a GitLab project Write create_project_variable Create a CI/CD variable for a project Write create_release Create a new release Write create_release_evidence Create release evidence (Premium/Ultimate) Write create_repository Create a new GitLab project Write create_tag Create a new repository tag Write create_timeline_event Create a timeline event on an incident Write create_wiki_page Create a wiki page in a project Write create_work_item Create a work item (issue, task, incident, epic, etc.) with full field support Write create_work_item_emoji_reaction Add an emoji reaction to a work item (e.g. thumbsup, rocket, eyes) Write create_work_item_note Add a note to a work item (supports Markdown, internal notes, threads) Write create_work_item_note_emoji_reaction Add an emoji reaction to a work item note (comment, thread, or thread reply) Write edit_milestone Edit an existing milestone Write fork_repository Fork a project to your account or specified namespace Write mark_all_todos_done Mark all pending GitLab to-do items as done for the current user Write mark_todo_done Mark a GitLab to-do item as done Write merge_merge_request Merge a merge request Write move_work_item Move a work item to a different project Write omg_create_prd Create a new PRD with title, description, and stories Write omg_select_model Recommend the best model for a task based on complexity analysis. Maps OMC model tiers (HIGH/MEDIUM/LOW) to av Write omg_update_story Update a story Write omg_write_memory Write or update a project memory entry Write omg_write_state Write or update state for a given OMG mode. Merges with existing state. Write promote_milestone Promote a milestone to the next stage Write protect_branch Protect a repository branch (set push/merge/unprotect access levels) Write publish_draft_note Publish a single draft note Write push_files Push multiple files in a single commit Write resolve_merge_request_thread Resolve a thread on a merge request Write unapprove_merge_request Unapprove a merge request Write update_default_branch Change the default branch of a project Write update_dependency_proxy_settings Update dependency proxy settings for a group (enable/disable, credentials for authenticated Docker Hub pulls) Write update_draft_note Update an existing draft note Write update_group_variable Update an existing CI/CD variable in a group Write update_group_wiki_page Update a wiki page in a group Write update_issue Update an issue Write update_issue_description_patch Apply a patch (search/replace or unified diff) to an issue description. Write update_issue_note Modify an existing issue thread note Write update_label Update an existing label in a project Write update_merge_request Update a merge request (mergeRequestIid or branchName required) Write update_merge_request_discussion_note Update a discussion note on a merge request Write update_merge_request_note Modify an existing merge request note Write update_project Update project settings such as description, visibility, default branch, and feature access levels Write update_project_variable Update an existing CI/CD variable in a project Write update_release Update an existing release Write update_wiki_page Update a wiki page in a project Write update_work_item Update a work item (title, description, labels, assignees, state, parent, custom fields, etc.)
READ 114 tools
Read discover_tools Discover and activate additional tool categories for this session. Call without arguments to see available cat Read get_branch Get branch details (commit, protection status) Read get_branch_diffs Get diffs between two branches or commits Read get_ci_catalog_resource Get details for a GitLab CI/CD Catalog resource, including versions and components Read get_commit Get details of a specific commit Read get_commit_diff Get changes/diffs of a specific commit Read get_dependency_proxy_settings Get dependency proxy settings for a group Read get_deployment Get details of a specific deployment Read get_draft_note Get a single draft note from a merge request Read get_environment Get details of a specific environment Read 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 Read get_file_contents Get contents of a file or directory from a GitLab project Read get_group_variable Get a single CI/CD variable from a group Read get_group_wiki_page Get details of a specific group wiki page Read get_issue Get details of a specific issue Read get_issue_link Get a specific issue link Read get_job_artifact_file Get content of a single file from a job Read get_label Get a single label from a project Read get_merge_request Get details of a merge request (mergeRequestIid or branchName required) Read get_merge_request_approval_state Get merge request approval details including approvers Read get_merge_request_conflicts Get the conflicts of a merge request Read get_merge_request_diffs Get the changes/diffs of a merge request (mergeRequestIid or branchName required) Read get_merge_request_file_diff Get diffs for specific files from a merge request (mergeRequestIid or branchName required) Read get_merge_request_note Get a specific note for a merge request Read get_merge_request_notes List notes for a merge request Read get_merge_request_version Get a specific version of a merge request Read get_milestone Get details of a specific milestone Read get_milestone_burndown_events Get burndown events for a specific milestone Read get_milestone_issue Get issues associated with a specific milestone Read get_milestone_merge_requests Get merge requests associated with a specific milestone Read get_namespace Get details of a namespace (user or group) by ID or path. Groups are namespaces with kind= Read get_pipeline Get details of a specific pipeline Read get_pipeline_job Get details of a GitLab pipeline job number Read get_pipeline_job_output Get the output/trace of a pipeline job with optional pagination Read get_project Get details of a specific project Read get_project_events List events for a project (before/after: YYYY-MM-DD) Read get_project_variable Get a single CI/CD variable from a project Read get_protected_branch Get details of a single protected branch (access levels, force push settings) Read get_release Get a release by tag name Read get_repository_tree List files and directories in a repository Read get_tag Get a repository tag by name Read get_tag_signature Get the X.509 signature of a signed tag (404 if unsigned) Read get_timeline_events List timeline events for an incident Read get_user Get user details by ID Read get_users Get GitLab user details by usernames Read get_webhook_event Get full details of a specific webhook event Read get_wiki_page Get details of a specific wiki page Read get_work_item Get a work item with full details including status, hierarchy, type, and widgets Read health_check Verify server status and authentication Read list_branches List branches in project with search filter Read list_ci_catalog_resources List GitLab CI/CD Catalog resources/components visible to the user Read list_commit_statuses List statuses for a commit Read list_commits List repository commits with filtering options Read list_custom_field_definitions List custom field definitions for a work item type Read list_dependency_proxy_blobs List cached dependency proxy blobs for a group Read list_deployments List deployments with filtering options Read list_draft_notes List draft notes for a merge request Read list_environments List environments in a project Read list_events List events for the authenticated user (before/after: YYYY-MM-DD) Read list_group_iterations List group iterations with filtering options Read list_group_projects List projects in a group Read list_group_variables List CI/CD variables for a group Read list_group_wiki_pages List wiki pages in a group Read list_issue_discussions List discussions for an issue Read list_issue_emoji_reactions List all emoji reactions on an issue Read list_issue_links List all issue links for a specific issue Read list_issue_note_emoji_reactions List all emoji reactions on an issue note. Pass discussion_id for discussion thread replies. Read list_issues List issues (default: created by current user; use scope= Read list_job_artifacts List artifact files in a job Read list_labels List labels for a project Read list_merge_request_changed_files List changed file paths in a merge request without diff content (mergeRequestIid or branchName required) Read list_merge_request_diffs List merge request diffs with pagination (mergeRequestIid or branchName required) Read list_merge_request_emoji_reactions List all emoji reactions on a merge request Read list_merge_request_note_emoji_reactions List all emoji reactions on a merge request note. Pass discussion_id for discussion thread replies. Read list_merge_request_pipelines List pipelines for a merge request with pagination Read list_merge_request_versions List all versions of a merge request Read list_merge_requests List merge requests (without project_id: user Read list_milestones List milestones with filtering options Read list_namespaces List all namespaces (users and groups) available to the current user. Filter by kind= Read list_pipeline_jobs List all jobs in a specific pipeline Read list_pipeline_trigger_jobs List trigger jobs (bridges) in a pipeline Read list_pipelines List pipelines with filtering options Read list_project_members List members of a GitLab project Read list_project_variables List CI/CD variables for a project Read list_projects List projects accessible by the current user Read list_protected_branches List protected branches in a project, supports search filter Read list_releases List all releases for a project Read list_tags List repository tags for a project Read list_todos List GitLab to-do items for the current user Read list_webhook_events List recent webhook events (past 7 days) Read list_webhooks List webhooks for a project or group Read list_wiki_pages List wiki pages in a project Read list_work_item_emoji_reactions List all emoji reactions on a work item Read list_work_item_note_emoji_reactions List all emoji reactions on a work item note (comment, thread, or thread reply) Read list_work_item_notes List notes and discussions on a work item Read list_work_item_statuses List available statuses for a work item type (Premium/Ultimate) Read list_work_items List work items with filters (type, state, search, assignees, labels) Read mr_discussions List discussion items for a merge request Read my_issues List issues assigned to the authenticated user Read omg_check_completion Check if the current workflow has incomplete tasks. Returns whether the agent should continue or can stop. Read omg_get_phase_info Get information about omg-autopilot phases Read omg_list_active List all currently active OMG modes Read omg_read_memory Read project memory entries. Optionally filter by category or key. Read omg_read_prd Read the current PRD (Product Requirements Document) with all stories and their status Read omg_read_state Read the current state for a given OMG mode (omg-autopilot, ralph, ultrawork, ultraqa, team, self-improve) Read omg_verify_story Get the next unverified story and its acceptance criteria for verification Read search_code Search for code across all projects (requires advanced search or Zoekt) Read search_group_code Search for code within a specific group (requires advanced search or Zoekt) Read search_project_code Search for code within a specific project (requires advanced search or Zoekt) Read search_repositories Search for GitLab projects Read validate_ci_lint Validate provided GitLab CI/CD YAML content for a project Read validate_project_ci_lint Validate an existing .gitlab-ci.yml configuration for a project Read verify_namespace Verify if a namespace path exists. Use parent_id to scope the check to a specific parent namespace — required Read whoami Get current authenticated user details

Related servers

Other MCP servers with similar tools — same risk classification, starter policies for each.

Questions about Gitlab Mcp

Can an AI agent delete data through the Gitlab MCP server? +

Yes. The Gitlab Mcp server exposes 25 destructive tools including cancel_pipeline_job, delete_branch, delete_draft_note. These permanently remove resources with no undo. PolicyLayer blocks destructive tools by default so they never reach the upstream server.

How do I prevent bulk modifications through Gitlab Mcp? +

The Gitlab Mcp server has 69 write tools including approve_merge_request, bulk_publish_draft_notes, convert_work_item_type. Set a rate limit in your policy -- for example, 10 calls per hour prevents an agent from making more than 10 modifications per hour. PolicyLayer enforces this at the gateway, before calls reach Gitlab Mcp.

How many tools does the Gitlab MCP server expose? +

215 tools across 4 categories: Destructive, Execute, Read, Write. 114 are read-only. 101 can modify, create, or delete data.

How do I enforce a policy on Gitlab Mcp? +

Register the Gitlab MCP server in PolicyLayer, apply the suggested rules above (adjust the limits to your use case), and point your AI client at the PolicyLayer proxy URL instead of the server directly. Your agents keep the same tools; PolicyLayer evaluates every call against policy before it executes. Nothing to install, live in minutes.

Enforce policy on every Gitlab Mcp tool call.

Deterministic rules across all 215 Gitlab Mcp tools. Per-identity grants. Full audit log. Live in minutes. Nothing to install.

Instant setup, no code required.

215 Gitlab Mcp tools catalogued and risk-classified — across an index of 46,500+ MCP servers.

// WHERE THIS COMES FROM

These policies come from Gitlab's registry record.

The record behind this page: verified identity, auth posture, risk grade, every tool classified, recommended policy — re-checked continuously.

Teams ship this data inside their own products. See what a licence covers →

// GET IN TOUCH

Have a question or want to learn more? Send us a message.

Message sent.

We'll get back to you soon.