# @sumirati/mcp-gitlab

Modern 2026 AI-native Model Context Protocol (MCP) server for GitLab API v4 with dynamic 2-step action discovery, 5-tool lean surface, and 70%+ token-reduction output projection

- **Type:** MCP server
- **Trust:** 60/100 (B), scored on the package rubric
- **Verification:** community-indexed — nobody has claimed this listing
- **Version:** 3.0.1
- **Author:** sumirati@buggycode.net
- **License:** MIT
- **npm:** @sumirati/mcp-gitlab
- **Source:** https://github.com/sumirati/mcp-gitlab
- **Compatible clients:** claude-code, cursor, copilot, gemini (basis: transport)

## Trust

60/100 (B), scored on the package rubric
- Publisher verified: no
- Install scripts: nothing suspicious found
- Prompt-injection scan: not run
- Obfuscation scan: not run
- Evidence age: 0 days

## Security scan

- **Status:** clean
- **Scanned:** 2026-10-17T21:25:28.002Z
- **Version scanned:** 3.2.0
- **CVEs:** none found by OSV at scan time

## Tools

40 declared. Statically extracted from the shipped source — a floor on the surface, not a census.
- `list_branches` — List repository branches with latest commit summaries, default branch indicators, and protected status. Use to discover active development branches or check bra
- `get_branch` — Retrieve comprehensive details for a specific Git branch, including latest commit SHA, author info, and branch protection rules. Use to verify commit alignment 
- `create_branch` — Create a new Git branch starting from an existing branch, tag, or commit SHA. Use to initialize feature branches, bugfixes, or release branches. Side effect: cr
- `delete_branch` — Delete an existing Git branch from a project repository. Use to clean up merged or obsolete feature branches. Side effect: DESTRUCTIVE. Accidental deletion of t
- `list_protected_branches` — List protected branch rules configured in a GitLab project, showing push/merge access levels, force-push permission, and code owner approval requirements. Use t
- `protect_branch` — Configure branch protection rules for a branch or wildcard pattern (e.g. 'main', 'release/*'). Controls push access levels, merge access levels, force push perm
- `unprotect_branch` — Remove branch protection rules from a specified branch or wildcard pattern. Side effect: DESTRUCTIVE. Removes push and merge access restrictions from the target
- `list_commits` — List chronological commit history for a project, branch, or specific file path with author metadata and commit messages. Filter upstream by ref_name, author, pa
- `get_commit` — Retrieve comprehensive details for a specific Git commit SHA, including author info, statistics, modified files, and selective unified file diffs. Use to inspec
- `system_health_check` — Perform end-to-end connectivity, latency, and permission diagnostics against the GitLab instance. Verifies API availability, authentication identity, server ver
- `list_push_mirrors` — List remote push mirrors configured for a project, including synchronization status, target URLs, and last error diagnostics. Essential for verifying repository
- `trigger_push_mirror_sync` — Force an immediate push mirror synchronization for a designated project remote mirror. Use when code has been committed locally and immediate upstream replicati
- `list_runners` — List available GitLab CI/CD runners (instance, group, or project-level), detailing their online status, active/paused state, and executor types. Use to diagnose
- `get_runner_status` — Retrieve comprehensive details and health status for a specific CI/CD runner, including IP address, architecture, runner version, tags, and last contacted times
- `list_project_hooks` — List configured project webhooks and their subscribed triggers (push, merge requests, issues, pipeline events). Use to audit integration webhooks and verify CI/
- `gitlab_find_actions` — Search and discover available GitLab operations on-demand across the entire platform. Returns matching action names, purpose descriptions, and parameter schemas
- `gitlab_execute_action` — Execute any discovered GitLab platform action with input validation and token-optimized response projection. Dispatches directly to the corresponding API endpoi
- `list_issues` — List and filter project issues by state ('opened', 'closed', 'all'), milestone, labels, author, assignee, or keyword search pushed directly upstream to GitLab's
- `get_issue` — Retrieve comprehensive details for a specific issue by its project-scoped IID (#<iid>), including description, assignees, labels, milestone, and issue status. U
- `create_issue` — Create a new issue with a title, markdown description, milestone (by title or ID), labels, assignees, and optional due date. Use to report bugs, track user stor
- `update_issue` — Update an existing issue's title, description, state ('close' or 'reopen'), milestone, labels, or assignees. Use to transition issue lifecycle or update task st
- `list_issue_notes` — List the chronological discussion notes, user comments, and activity audit log for a specific issue by IID. Use to review problem discussion, past comments, or 
- `create_issue_note` — Post a new markdown comment, progress update, or verification note to an existing issue. Use to communicate findings, document test results, or ask questions on
- `list_issue_links` — List issue dependency links ('relates_to', 'blocks', 'is_blocked_by') associated with a specific issue. Use when analyzing task dependencies or release blockers
- `create_issue_link`
- `list_project_members`
- `get_project_member`
- `add_project_member`
- `update_project_member`
- `remove_project_member`
- `list_merge_requests`
- `get_merge_request`
- `create_merge_request`
- `update_merge_request`
- `get_merge_request_changes`
- `list_merge_request_discussions`
- `create_diff_discussion`
- `reply_merge_request_discussion`
- `update_merge_request_discussion_note`
- `resolve_merge_request_discussion`

## Install

**Verdict: review** — Installable, but 1 thing to check first: No publisher has proved control of this listing; it is indexed, not vouched for.
**Cautions** (coverage gaps and advisories — never blocking)
- No publisher has proved control of this listing; it is indexed, not vouched for.
**Config** (claude-code):
```json
"{\n  \"mcpServers\": {\n    \"mcp-gitlab\": {\n      \"command\": \"npx\",\n      \"args\": [\n        \"-y\",\n        \"@sumirati/mcp-gitlab\"\n      ],\n      \"env\": {\n        \"GITLAB_PERSONAL_ACCESS_TOKEN\": \"<YOUR_GITLAB_PERSONAL_ACCESS_TOKEN>\"\n      }\n    }\n  }\n}"
```
**Credentials it will ask for** (names only — Forge never holds a value):
- `GITLAB_PERSONAL_ACCESS_TOKEN` — GitLab Personal Access Token (required)
Placeholders only. Forge never holds, brokers, or transmits a credential value — replace each <YOUR_NAME> in your own config file. Do not send a value back to Forge; no Forge endpoint accepts one.
- This entry needs 1 credential (1 required). The generated config carries placeholders, so it will fail in the editor rather than at runtime if they are left unset.

## Blast radius

Extensive blast radius — deletes data; holds an api key.
- Floor 53, ceiling 53 (tier: extensive)
- This is impact, not likelihood. A high radius is not a defect: a filesystem server is supposed to write files. It is never part of the trust score.

## Machine-readable views of this entry

- Signed JSON: https://forgeregistry.com/api/v1/packages/%40sumirati%2Fmcp-gitlab
- Install plan: https://forgeregistry.com/api/v1/packages/%40sumirati%2Fmcp-gitlab/install-plan
- Alternatives: https://forgeregistry.com/api/v1/alternatives/%40sumirati%2Fmcp-gitlab
- HTML page: https://forgeregistry.com/registry/%40sumirati%2Fmcp-gitlab
- MCP: POST https://forgeregistry.com/api/mcp → `forge_get_package` / `forge_install_plan`

## About this document

Generated by Forge (https://forgeregistry.com) — a compact rendering of the same record served, signed, at the JSON URL above. Trust and scan facts are the registry's own measurements; anything Forge did not measure is named as unmeasured rather than omitted.
