# Advanced GitLab MCP server (npm · @structured-world/gitlab-mcp)

58 CQRS tools exposing 230 GitLab operations across 26 entity types

- Trust score: 69/100 (medium)
- Change this week: +28
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-03

## Components

- mcpb · `gitlab-mcp-9.1.1.mcpb`: 34/100, [markdown](https://verifymcp.io/servers/structured-world-gitlab-mcp/https-github-com-structured-world-gitlab-mcp-releases-download-gitlab-mcp-v9-1-1.md), [page](https://verifymcp.io/servers/structured-world-gitlab-mcp/https-github-com-structured-world-gitlab-mcp-releases-download-gitlab-mcp-v9-1-1)
- npm · `@structured-world/gitlab-mcp`: 69/100 (this document), [markdown](https://verifymcp.io/servers/structured-world-gitlab-mcp/structured-world-gitlab-mcp.md), [page](https://verifymcp.io/servers/structured-world-gitlab-mcp/structured-world-gitlab-mcp)

## Channel facts

- Registry: `npm`
- Package: `@structured-world/gitlab-mcp`
- Version: `9.1.1`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-03.

- **Supply Chain Security**: 88/100
  - No malware found by supply-chain analysis.
  - Only part of the dependency tree could be resolved (146 of 147), so this covers what we could see, not the whole tree.
  - No install/post-install scripts declared.
  - Only part of the dependency tree could be resolved (146 of 147), so this covers what we could see, not the whole tree.
- **Provenance & Transparency**: 97/100
  - Source repository is publicly reachable at the declared URL.
  - Cryptographically verified build provenance (signed, bound to structured-world/gitlab-mcp).
  - Clear OSI-approved license (Apache-2.0).
  - Actively maintained (last published 41 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 26/100
  - AI-judged instruction clarity (poor).
  - Context-footprint check failed: tool/resource definitions use about 21809 tokens (~376/item across 58 items; 58 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 23/100
  - Stability observed for 7 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### Claude

```bash
claude mcp add structured-world-gitlab-mcp -- npx -y @structured-world/gitlab-mcp
```

### Codex

```bash
codex mcp add structured-world-gitlab-mcp -- npx -y @structured-world/gitlab-mcp
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "structured-world-gitlab-mcp": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "@structured-world/gitlab-mcp"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add structured-world-gitlab-mcp --command npx --arg -y --arg @structured-world/gitlab-mcp
```

### Hermes

```yaml
mcp_servers:
  structured-world-gitlab-mcp:
    command: "npx"
    args: ["-y", "@structured-world/gitlab-mcp"]
```

### Other

```json
{
  "mcpServers": {
    "structured-world-gitlab-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "@structured-world/gitlab-mcp"
      ]
    }
  }
}
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-03 (score 69, +3)

- [functional improvement] Stability: unverified → 0.23

### 2026-08-02 (score 66, +49)

- [security improvement] Known CVEs: unverified → partial
- [security improvement] Provenance: unverified → pass
- [security improvement] Install scripts: unverified → pass
- [security improvement] Malware scan: unverified → pass
- [security] Stability: Stability not yet verified: not enough scan history yet (needs a 30-day window).
- [security] The attested source repository moved: structured-world/gitlab-mcp
- [functional regression] Tool coverage: 100 → unverified
- [functional improvement] Schema quality: unverified → poor
- [functional improvement] License: unverified → pass
- [functional improvement] MCP protocol: unverified → pass
- [functional improvement] Maintenance: unverified → pass
- [functional improvement] Dependency health: unverified → partial
- [functional] Licence: Apache-2.0

### 2026-08-01 (score 17, +12)

- [functional improvement] Tool coverage: unverified → 100

### 2026-07-31 (score 5, −1)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-30 (score 6, −35)

- [security regression] Malware scan: pass → unverified
- [functional regression] Tool coverage: 100 → unverified
- [functional] First check of Schema quality: unverified

### 2026-07-27 (score 41)

First indexed and scored.

## MCP tools (58)

### `browse_projects` (~764 tokens)

Find, list, or inspect GitLab projects. Actions: search (find by name/topic across GitLab), list (browse accessible projects or group projects), get (retrieve full project details). Related: manage_project to create/update/delete projects.

Input parameters:

- `action` (string, required): Action to perform: search, list, get
- `active` (boolean): Filter by active status. true = exclude archived AND pending-deletion projects; false = only archived/pending-deletion. Uses the native GitLab 18.5+ filter; on older instances it falls back to the ar…
- `archived` (boolean): Filter by archive status. true=archived only, false=active only. Required for 'search', 'list' action(s).
- `group_id` (string): Group ID to list projects within. If omitted, lists YOUR accessible projects. Required for 'list' action(s).
- `include_deleted` (boolean): Include projects pending deletion (soft-deleted, within the cooldown window). Admin only: lists projects scheduled for purge so they can be reviewed or restored. Ignored for group_id scope. Required…
- `include_subgroups` (boolean): Include projects from subgroups (requires group_id). Required for 'list' action(s).
- `license` (boolean): Include license information. Required for 'get' action(s).
- `marked_for_deletion_on` (string): Filter projects scheduled for deletion on this exact date (YYYY-MM-DD). Premium/Ultimate only. Combine with include_deleted to review projects purging on a given day. Ignored for group_id scope. Requ…
- `membership` (boolean): Show only projects where you have membership. Required for 'list' action(s).
- `order_by` (string): Sort field for results. Required for 'search', 'list' action(s).
- `owned` (boolean): Show only projects you own (not just member of). Required for 'list' action(s).
- `page` (integer): Page number Required for 'search', 'list' action(s).
- `per_page` (integer, required): Number of items per page (default: 20, max: 100) Required for 'search', 'list' action(s).
- `project_id` (string): Project identifier. Numeric ID or URL-encoded path (e.g., "42" or "gitlab-org%2Fgitlab"). Required for 'get' action(s).
- `q` (string): Global search query. Searches project names, paths, descriptions. Required for 'search' action(s).
- `search` (string): Text filter for list action (filters results by name/description). Required for 'list' action(s).
- `simple` (boolean): Return minimal fields for faster response. Default: true. Required for 'list' action(s).
- `sort` (string): Sort direction: asc or desc. Required for 'search', 'list' action(s).
- `starred` (boolean): Show only starred/favorited projects. Required for 'list' action(s).
- `statistics` (boolean): Include repository statistics. Required for 'get' action(s).
- `visibility` (string): Filter by visibility: public, internal, or private. Required for 'search', 'list' action(s).
- `with_programming_language` (string): Filter by programming language (e.g., "javascript", "python"). Required for 'search', 'list' action(s).
- `with_shared` (boolean): Include shared projects (requires group_id). Required for 'list' action(s).

### `browse_namespaces` (~265 tokens)

Explore GitLab groups and user namespaces. Actions: list (discover available namespaces), get (retrieve details with storage stats), verify (check if path exists). Related: manage_namespace to create/update/delete groups.

Input parameters:

- `action` (string, required): Action to perform: list, get, verify
- `min_access_level` (number): Minimum access level: 10=Guest, 20=Reporter, 30=Developer, 40=Maintainer, 50=Owner. Required for 'list' action(s).
- `namespace_id` (string): Namespace ID or path. Required for 'get', 'verify' action(s).
- `owned_only` (boolean): Show only namespaces you own. Required for 'list' action(s).
- `page` (integer): Page number Required for 'list' action(s).
- `per_page` (integer, required): Number of items per page (default: 20, max: 100) Required for 'list' action(s).
- `search` (string): Search namespaces by name/path. Required for 'list' action(s).
- `top_level_only` (boolean): Show only root-level namespaces. Required for 'list' action(s).
- `with_statistics` (boolean): Include storage/count statistics. Required for 'list' action(s).

### `browse_commits` (~430 tokens)

Explore repository commit history and diffs. Actions: list (browse commits with filters), get (retrieve commit metadata and stats), diff (view code changes). Related: browse_refs for branch/tag info.

Input parameters:

- `action` (string, required): Action to perform: list, get, diff
- `all` (boolean): Include commits from all branches. Required for 'list' action(s).
- `author` (string): Filter by author name or email. Required for 'list' action(s).
- `first_parent` (boolean): Follow only first parent (linear history). Required for 'list' action(s).
- `order` (string): Commit ordering: default or topo. Required for 'list' action(s).
- `page` (integer): Page number Required for 'list', 'diff' action(s).
- `path` (string): Filter commits affecting this file/directory path. Required for 'list' action(s).
- `per_page` (integer, required): Number of items per page (default: 20, max: 100) Required for 'list', 'diff' action(s).
- `project_id` (string, required): Project ID or URL-encoded path.
- `ref_name` (string): Branch/tag name. Defaults to default branch. Required for 'list' action(s).
- `sha` (string): Commit SHA. Can be full SHA, short hash, or ref name. Required for 'get', 'diff' action(s).
- `since` (string): Start date filter (ISO 8601 format). Required for 'list' action(s).
- `stats` (boolean): Include file change statistics. Required for 'get' action(s).
- `trailers` (boolean): Include Git trailers (Signed-off-by, etc.). Required for 'list' action(s).
- `unidiff` (boolean): Return unified diff format. Required for 'diff' action(s).
- `until` (string): End date filter (ISO 8601 format). Required for 'list' action(s).
- `with_stats` (boolean): Include stats for each commit. Required for 'list' action(s).

### `browse_events` (~184 tokens)

Track GitLab activity and events. Actions: user (your activity across all projects), project (specific project activity feed). Filter by date range, action type, or target type.

Input parameters:

- `action` (string, required): Action to perform: user, project
- `after` (string): Show events after this date (YYYY-MM-DD).
- `before` (string): Show events before this date (YYYY-MM-DD).
- `event_action` (string): Filter by event action.
- `page` (integer): Page number
- `per_page` (integer, required): Number of items per page (default: 20, max: 100)
- `project_id` (string): Project ID. Required for 'project' action(s).
- `sort` (string): Sort order: asc=oldest first, desc=newest first.
- `target_type` (string): Filter by target type.

### `browse_users` (~485 tokens)

Find GitLab users with smart pattern detection. Actions: search (find users by name/email/username with transliteration support), get (retrieve specific user by ID). Related: browse_members for project/group membership.

Input parameters:

- `action` (string, required): Action to perform: search, get
- `active` (boolean): Filter for active (true) or inactive (false) users. Required for 'search' action(s).
- `blocked` (boolean): Filter for blocked users. Required for 'search' action(s).
- `created_after` (string): Filter users created after this date (ISO 8601). Required for 'search' action(s).
- `created_before` (string): Filter users created before this date (ISO 8601). Required for 'search' action(s).
- `exclude_active` (boolean): Exclude active users. Required for 'search' action(s).
- `exclude_external` (boolean): Exclude external users. Required for 'search' action(s).
- `exclude_humans` (boolean): Exclude human users. Required for 'search' action(s).
- `exclude_internal` (boolean): Exclude internal system users. Required for 'search' action(s).
- `external` (boolean): Filter for external users with limited access. Required for 'search' action(s).
- `humans` (boolean): Filter for human users only (exclude bots). Required for 'search' action(s).
- `page` (integer): Page number Required for 'search' action(s).
- `per_page` (integer, required): Number of items per page (default: 20, max: 100) Required for 'search' action(s).
- `public_email` (string): Find user by exact public email address. Required for 'search' action(s).
- `search` (string): Partial text search across name, username, and email. Required for 'search' action(s).
- `smart_search` (boolean): Enable smart search with auto-detection and transliteration. Auto-enabled for search parameter. Required for 'search' action(s).
- `user_id` (string): User ID to retrieve. Required for 'get' action(s).
- `username` (string): Exact username to search for. Case-sensitive. Required for 'search' action(s).
- `without_project_bots` (boolean): Exclude project bot users. Required for 'search' action(s).

### `browse_todos` (~182 tokens)

View your GitLab todo queue (notifications requiring action). Actions: list (filter by state, action type, target type). Todos are auto-created for assignments, mentions, reviews, and pipeline failures. Related: manage_todos to mark done/restore.

Input parameters:

- `action` (string, required): Action to perform: list
- `author_id` (number): Filter by author ID.
- `group_id` (number): Filter by group ID.
- `page` (integer): Page number
- `per_page` (integer, required): Number of items per page (default: 20, max: 100)
- `project_id` (number): Filter by project ID.
- `state` (string): Filter todos by state: pending=active, done=completed.
- `todo_action` (string): Filter by action type.
- `type` (string): Filter by target type.

### `manage_project` (~775 tokens)

Create, update, or manage GitLab projects. Actions: create (new project with settings), fork (copy existing project), update (modify settings), delete (remove permanently), restore (recover a soft-deleted project before purge), archive/unarchive (toggle read-only), transfer (move to different namespace). Related: browse_projects for discovery.

Input parameters:

- `action` (string, required): Action to perform: create, fork, update, delete, archive, unarchive, transfer, restore
- `default_branch` (string): Set default branch name. Required for 'update' action(s).
- `description` (string): New project description. Required for 'create', 'update' action(s).
- `fork_name` (string): New name for forked project (maps to API 'name' parameter). Required for 'fork' action(s).
- `fork_path` (string): New path for forked project (maps to API 'path' parameter). Required for 'fork' action(s).
- `initialize_with_readme` (boolean): Create initial README.md file. Required for 'create' action(s).
- `issues_enabled` (boolean): Enable issue tracking. Required for 'create', 'fork', 'update' action(s).
- `issues_template` (string): Premium+: default description template for new issues. Required for 'update' action(s).
- `jobs_enabled` (boolean): Enable CI/CD jobs. Required for 'create', 'fork', 'update' action(s).
- `lfs_enabled` (boolean): Enable Git LFS. Required for 'create', 'fork', 'update' action(s).
- `merge_pipelines_enabled` (boolean): Premium+: enable merged results pipelines. Required for 'update' action(s).
- `merge_requests_enabled` (boolean): Enable merge requests. Required for 'create', 'fork', 'update' action(s).
- `merge_requests_template` (string): Premium+: default description template for new merge requests. Required for 'update' action(s).
- `merge_trains_enabled` (boolean): Premium+: enable merge trains (requires merge_pipelines_enabled). Required for 'update' action(s).
- `name` (string): New project name. Required for 'create', 'update' action(s).
- `namespace` (string): Target namespace path. Omit for current user namespace. Required for 'create', 'fork', 'transfer' action(s).
- `namespace_path` (string): Target namespace path for fork. Required for 'fork' action(s).
- `only_allow_merge_if_all_discussions_are_resolved` (boolean): Require resolved discussions for merge. Required for 'create', 'fork', 'update' action(s).
- `only_allow_merge_if_all_status_checks_passed` (boolean): Ultimate: block merge until all external status checks pass. Required for 'update' action(s).
- `only_allow_merge_if_pipeline_succeeds` (boolean): Require passing pipelines for merge. Required for 'create', 'fork', 'update' action(s).
- `project_id` (string): Project ID or URL-encoded path of the project to restore. Required for 'fork', 'update', 'delete', 'archive', 'unarchive', 'transfer', 'restore' action(s).
- `request_access_enabled` (boolean): Allow access requests. Required for 'create', 'fork', 'update' action(s).
- `requirements_access_level` (string): Ultimate: requirements management access level. Required for 'update' action(s).
- `snippets_enabled` (boolean): Enable code snippets. Required for 'create', 'fork', 'update' action(s).
- `visibility` (string): Project visibility level. Required for 'create', 'update' action(s).
- `wiki_enabled` (boolean): Enable project wiki. Required for 'create', 'fork', 'update' action(s).

### `manage_namespace` (~482 tokens)

Create, update, or delete GitLab groups/namespaces. Actions: create (new group with visibility/settings), update (modify group settings), delete (remove permanently), restore (recover a soft-deleted group before purge; requires GitLab 18.0+). Related: browse_namespaces for discovery.

Input parameters:

- `action` (string, required): Action to perform: create, update, delete, restore
- `allowed_email_domains_list` (string): Premium+: comma-separated email domains allowed for group membership. Required for 'update' action(s).
- `avatar` (string): Group avatar URL. Required for 'create' action(s).
- `default_branch_protection` (number): Branch protection level: 0=none, 1=partial, 2=full. Required for 'create', 'update' action(s).
- `description` (string): New group description. Required for 'create', 'update' action(s).
- `group_id` (string): Group ID or URL-encoded path of the group to restore. Required for 'update', 'delete', 'restore' action(s).
- `ip_restriction_ranges` (string): Premium+: comma-separated CIDR ranges that may access the group. Required for 'update' action(s).
- `lfs_enabled` (boolean): Enable Git LFS. Required for 'create', 'update' action(s).
- `membership_lock` (boolean): Premium+: prevent members from being added directly to projects in this group. Required for 'create', 'update' action(s).
- `name` (string): Group display name. Required for 'create', 'update' action(s).
- `parent_id` (number): Parent group ID for subgroup. Required for 'create' action(s).
- `path` (string): Group path for URLs (URL-safe). Required for 'create', 'update' action(s).
- `request_access_enabled` (boolean): Allow access requests. Required for 'create', 'update' action(s).
- `unique_project_download_limit` (number): Ultimate: max unique project downloads per user before action is taken. Required for 'update' action(s).
- `visibility` (string): Group visibility level. Required for 'create', 'update' action(s).
- `wiki_access_level` (string): Premium+: group wiki access level. Required for 'create', 'update' action(s).

### `manage_todos` (~93 tokens)

Manage your GitLab todo queue. Actions: mark_done (complete a single todo), mark_all_done (clear entire queue), restore (undo completion). Related: browse_todos to view your todo list.

Input parameters:

- `action` (string, required): Action to perform: mark_done, mark_all_done, restore
- `id` (integer, required): Todo ID to mark as done Required for 'mark_done', 'restore' action(s).

### `manage_context` (~243 tokens)

View and manage runtime session configuration. Actions: show (current host/preset/scope/mode), list_presets (available tool configurations), list_profiles (OAuth users), whoami (token introspection with live refresh - detects permission changes and updates available tools), switch_preset (change active preset), switch_profile (change OAuth user), set_scope (restrict to namespace), reset (restore initial state). Use whoami to diagnose access issues and verify token permissions.

Input parameters:

- `action` (string, required): Action to perform: show, list_presets, list_profiles, switch_preset, switch_profile, set_scope, reset, whoami
- `includeSubgroups` (boolean): Include subgroups when scope is a group (default: true) Required for 'set_scope' action(s).
- `namespace` (string): Namespace path (e.g., 'my-group' or 'group/project') - type is auto-detected Required for 'set_scope' action(s).
- `preset` (string): Name of the preset to activate Required for 'switch_preset' action(s).
- `profile` (string): Name of the profile to activate Required for 'switch_profile' action(s).

### `browse_labels` (~198 tokens)

List and inspect project or group labels. Actions: list (all labels with search filtering), get (single label by ID or name). Related: manage_label to create/update/delete.

Input parameters:

- `action` (string, required): Action to perform: list, get
- `include_ancestor_groups` (boolean): Include ancestor groups when listing or getting labels
- `label_id` (string): The ID or title of the label Required for 'get' action(s).
- `namespace` (string, required): Namespace path (group or project)
- `page` (integer): Page number Required for 'list' action(s).
- `per_page` (integer, required): Number of items per page (default: 20, max: 100) Required for 'list' action(s).
- `search` (string): Keyword to filter labels by Required for 'list' action(s).
- `with_counts` (boolean): Include issue and merge request counts Required for 'list' action(s).

### `manage_label` (~244 tokens)

Create, update, or delete project/group labels. Actions: create (name + hex color required), update (modify properties), delete (remove permanently). Related: browse_labels for discovery.

Input parameters:

- `action` (string, required): Action to perform: create, update, delete
- `color` (string): The color of the label in 6-digit hex notation with leading '#' (e.g. #FFAABB) or CSS color name Required for 'create', 'update' action(s).
- `description` (string): The description of the label Required for 'create', 'update' action(s).
- `label_id` (string): The ID or title of the label Required for 'update', 'delete' action(s).
- `name` (string): The name of the label Required for 'create', 'update' action(s).
- `namespace` (string, required): Namespace path (group or project)
- `new_name` (string): The new name of the label Required for 'update' action(s).
- `priority` (number): The priority of the label. Must be greater or equal than zero or null to remove the priority. Required for 'create', 'update' action(s).

### `browse_merge_requests` (~1205 tokens)

Find and inspect merge requests. Actions: list (filter by state/author/reviewer/labels/branch), get (MR details by IID or source branch), diffs (file-level changes with inline suggestions), compare (diff between any two refs), versions (list diff versions from pushes), version (get specific version with diffs). Related: manage_merge_request to create/update/merge.

Input parameters:

- `action` (string, required): Action to perform: list, get, diffs, compare, versions, version
- `approved_by_ids` (array): Filter MRs approved by user IDs Required for 'list' action(s).
- `approved_by_usernames` (array): Filter MRs approved by usernames Required for 'list' action(s).
- `assignee_id` (number): Filter by assignee's user ID Required for 'list' action(s).
- `assignee_username` (string): Filter by assignee's username Required for 'list' action(s).
- `author_id` (number): Filter by author's user ID Required for 'list' action(s).
- `author_username` (string): Filter by author's username Required for 'list' action(s).
- `branch_name` (string): Find MR by its source branch name Required for 'get' action(s).
- `created_after` (string): Filter MRs created after (ISO 8601) Required for 'list' action(s).
- `created_before` (string): Filter MRs created before (ISO 8601) Required for 'list' action(s).
- `deployed_after` (string): Filter MRs deployed after Required for 'list' action(s).
- `deployed_before` (string): Filter MRs deployed before Required for 'list' action(s).
- `environment` (string): Filter by deployment environment Required for 'list' action(s).
- `exclude_generated` (boolean): Exclude build output and minified files: dist/**, **/*.min.js, **/*.map, etc. (default: false) Required for 'diffs' action(s).
- `exclude_lockfiles` (boolean): Exclude common lock files: yarn.lock, package-lock.json, Cargo.lock, etc. (default: false) Required for 'diffs' action(s).
- `exclude_patterns` (array): Custom glob patterns to exclude (e.g., ['vendor/**', '*.generated.ts']) Required for 'diffs' action(s).
- `from` (string): Source reference: branch name or commit SHA Required for 'compare' action(s).
- `in` (string): Search scope Required for 'list' action(s).
- `include_diverged_commits_count` (boolean): Include count of commits the source branch is behind target Required for 'get', 'diffs' action(s).
- `include_rebase_in_progress` (boolean): Check if MR is currently being rebased Required for 'get', 'diffs' action(s).
- `labels`: Filter by labels Required for 'list' action(s).
- `merge_request_iid` (string): Internal MR ID. Required unless branch_name provided. Required for 'get', 'diffs', 'versions', 'version' action(s).
- `milestone` (string): Filter by milestone title. Use "None" or "Any". Required for 'list' action(s).
- `min_access_level` (number): Minimum access level filter (10-50) Required for 'list' action(s).
- `my_reaction_emoji` (string): Filter MRs you've reacted to Required for 'list' action(s).
- `not` (object): Exclusion filters Required for 'list' action(s).
- `order_by` (string): Sort field Required for 'list' action(s).
- `page` (integer): Page number Required for 'list', 'diffs', 'versions' action(s).
- `per_page` (integer, required): Number of items per page (default: 20, max: 100) Required for 'list', 'diffs', 'versions' action(s).
- `project_id` (string): Project ID or URL-encoded path. Optional for cross-project search.
- `reviewer_id` (number): Filter by reviewer user ID Required for 'list' action(s).
- `reviewer_username` (string): Filter by reviewer username Required for 'list' action(s).
- `scope` (string): Filter scope Required for 'list' action(s).
- `search` (string): Text search in title/description Required for 'list' action(s).
- `sort` (string): Sort direction Required for 'list' action(s).
- `source_branch` (string): Filter by source branch Required for 'list' action(s).
- `state` (string): MR state filter Required for 'list' action(s).
- `straight` (boolean): true=straight diff, false=three-way diff from common ancestor Required for 'compare' action(s).
- `target_branch` (string): Filter by target branch Required for 'list' action(s).
- `to` (string): Target reference: branch name or commit SHA Required for 'compare' action(s).
- `updated_after` (string): Filter MRs modified after (ISO 8601) Required for 'list' action(s).
- `updated_before` (string): Filter MRs modified before (ISO 8601) Required for 'list' action(s).
- `version_id` (string): Diff version ID from versions list Required for 'version' action(s).
- `view` (string): Response detail level Required for 'list' action(s).
- `wip` (string): Draft/WIP filter Required for 'list' action(s).
- `with_api_entity_associations` (boolean): Include extra API associations Required for 'list' action(s).
- `with_labels_details` (boolean): Return full label objects Required for 'list' action(s).
- `with_merge_status_recheck` (boolean): Trigger async recheck of merge status Required for 'list' action(s).

### `browse_mr_discussions` (~179 tokens)

Read discussion threads and draft review notes on merge requests. Actions: list (all threads with resolution status), drafts (unpublished draft notes), draft (single draft details). Related: manage_mr_discussion to comment, manage_draft_notes to create drafts.

Input parameters:

- `action` (string, required): Action to perform: list, drafts, draft
- `draft_note_id` (string): Unique identifier of the draft note Required for 'draft' action(s).
- `merge_request_iid` (string, required): Internal MR ID unique to project
- `page` (integer): Page number Required for 'list' action(s).
- `per_page` (integer, required): Number of items per page (default: 20, max: 100) Required for 'list' action(s).
- `project_id` (string, required): Project ID or URL-encoded path

### `manage_merge_request` (~661 tokens)

Create, update, merge, or approve merge requests. Actions: create (new MR from source to target), update (title/description/assignees/reviewers/labels), merge (into target branch), approve/unapprove (review approval), get_approval_state (current approvals). Related: browse_merge_requests for discovery.

Input parameters:

- `action` (string, required): Action to perform: create, update, merge, approve, unapprove, get_approval_state
- `add_labels`: Labels to add Required for 'update' action(s).
- `allow_collaboration` (boolean): Let maintainers push to source branch Required for 'create', 'update' action(s).
- `allow_maintainer_to_push` (boolean): Deprecated - use allow_collaboration Required for 'create', 'update' action(s).
- `assignee_id` (string): Single assignee user ID Required for 'create', 'update' action(s).
- `assignee_ids` (array): Multiple assignee IDs Required for 'create', 'update' action(s).
- `description` (string): MR description (Markdown) Required for 'create', 'update' action(s).
- `discussion_locked` (boolean): Lock discussion thread Required for 'update' action(s).
- `labels`: Labels to categorize MR Required for 'create', 'update' action(s).
- `merge_commit_message` (string): Custom merge commit message Required for 'merge' action(s).
- `merge_request_iid` (string): Internal MR ID unique to project Required for 'update', 'merge', 'approve', 'unapprove', 'get_approval_state' action(s).
- `merge_when_pipeline_succeeds` (boolean): Merge when pipeline succeeds Required for 'merge' action(s).
- `milestone_id` (string): Associate MR with milestone Required for 'create', 'update' action(s).
- `project_id` (string, required): Project ID or URL-encoded path
- `remove_labels`: Labels to remove Required for 'update' action(s).
- `remove_source_branch` (boolean): Auto-delete source branch after merge Required for 'create', 'update' action(s).
- `reviewer_ids` (array): User IDs for code reviewers Required for 'create', 'update' action(s).
- `sha` (string): SHA of head commit to approve specific version Required for 'merge', 'approve' action(s).
- `should_remove_source_branch` (boolean): Remove source branch after merge Required for 'merge' action(s).
- `source_branch` (string, required): Branch containing changes to merge Required for 'create' action(s).
- `squash` (boolean): Combine all commits into one when merging Required for 'create', 'update', 'merge' action(s).
- `squash_commit_message` (string): Custom squash commit message Required for 'merge' action(s).
- `state_event` (string): State event: close or reopen Required for 'update' action(s).
- `target_branch` (string): Branch to merge into Required for 'create', 'update' action(s).
- `target_project_id` (string): Target project for cross-project MRs Required for 'create' action(s).
- `title` (string): MR title/summary Required for 'create', 'update' action(s).

### `manage_mr_discussion` (~600 tokens)

Post comments, start threads, and suggest code changes on merge requests. Actions: comment (simple note), thread (line-level discussion), reply (to existing thread), update (edit note text), resolve (toggle thread resolution), suggest (code suggestion block), apply_suggestion/apply_suggestions (accept code suggestions). Related: browse_mr_discussions to read threads.

Input parameters:

- `action` (string, required): Action to perform: comment, thread, reply, update, apply_suggestion, apply_suggestions, resolve, suggest
- `body` (string, required): New content/text for the note Required for 'comment', 'thread', 'reply', 'update' action(s).
- `comment` (string): Optional explanation comment before the suggestion Required for 'suggest' action(s).
- `commit_id` (string): SHA of commit to start discussion on Required for 'thread' action(s).
- `commit_message` (string): Custom commit message for the apply commit Required for 'apply_suggestion', 'apply_suggestions' action(s).
- `confidential` (boolean): Confidential note flag Required for 'comment' action(s).
- `created_at` (string): Date time string (ISO 8601) Required for 'comment', 'reply' action(s).
- `discussion_id` (string): ID of the discussion thread to resolve/unresolve Required for 'reply', 'resolve' action(s).
- `lines_above` (integer): Lines to include above (default: 0) Required for 'suggest' action(s).
- `lines_below` (integer): Lines to include below (default: 0) Required for 'suggest' action(s).
- `merge_request_iid` (string): Internal MR ID unique to project Required for 'thread', 'reply', 'update', 'apply_suggestion', 'apply_suggestions', 'resolve', 'suggest' action(s).
- `note_id` (string): ID of the note to update Required for 'update' action(s).
- `noteable_id` (string, required): ID of the noteable object Required for 'comment' action(s).
- `noteable_type` (string, required): Type of noteable: issue or merge_request Required for 'comment' action(s).
- `position` (object): Position in diff for the suggestion (requires base_sha, head_sha, start_sha, new_path, new_line) Required for 'thread', 'suggest' action(s).
- `project_id` (string, required): Project ID or URL-encoded path
- `resolved` (boolean): true to resolve, false to unresolve Required for 'resolve' action(s).
- `suggestion` (string): The suggested code (raw code, no markdown formatting needed) Required for 'suggest' action(s).
- `suggestion_id` (number): ID of the suggestion to apply Required for 'apply_suggestion' action(s).
- `suggestion_ids` (array): Array of suggestion IDs to apply Required for 'apply_suggestions' action(s).

### `manage_draft_notes` (~237 tokens)

Create and manage unpublished review comments on merge requests. Actions: create (new draft), update (modify text), publish (make single draft visible), publish_all (submit entire review), delete (discard draft). Related: browse_mr_discussions action 'drafts' to list existing drafts.

Input parameters:

- `action` (string, required): Action to perform: create, update, publish, publish_all, delete
- `commit_id` (string): SHA of commit to start discussion on Required for 'create' action(s).
- `draft_note_id` (string): ID of the draft note Required for 'update', 'publish', 'delete' action(s).
- `in_reply_to_discussion_id` (string): Discussion ID to reply to Required for 'create' action(s).
- `merge_request_iid` (string, required): Internal MR ID unique to project
- `note` (string, required): New content for the draft note Required for 'create', 'update' action(s).
- `position` (object): Position for diff note Required for 'create', 'update' action(s).
- `project_id` (string, required): Project ID or URL-encoded path

### `browse_files` (~261 tokens)

Explore project file structure and read source code. Actions: tree (list directory contents with recursive depth control), content (read file at specific ref/branch), download_attachment (get uploaded file by secret+filename). Related: manage_files to create/update files.

Input parameters:

- `action` (string, required): Action to perform: tree, content, download_attachment
- `file_path` (string): Path to the file to read Required for 'content' action(s).
- `filename` (string): Original filename of the attachment. Required for 'download_attachment' action(s).
- `page` (integer): Page number Required for 'tree' action(s).
- `path` (string): Directory path to list Required for 'tree' action(s).
- `per_page` (integer, required): Number of items per page (default: 20, max: 100) Required for 'tree' action(s).
- `project_id` (string, required): Project ID or URL-encoded path
- `recursive` (boolean): Include nested directories Required for 'tree' action(s).
- `ref` (string): Branch, tag, or commit SHA Required for 'tree', 'content' action(s).
- `secret` (string): Security token from the attachment URL. Required for 'download_attachment' action(s).

### `manage_files` (~440 tokens)

Create, update, or upload repository files. Actions: single (create/update one file with commit message), batch (atomic multi-file commit), upload (add attachment returning markdown link). Related: browse_files to read existing files.

Input parameters:

- `action` (string, required): Action to perform: single, batch, upload
- `author_email` (string): Commit author email Required for 'single', 'batch' action(s).
- `author_name` (string): Commit author name Required for 'single', 'batch' action(s).
- `branch` (string, required): Target branch name Required for 'single', 'batch' action(s).
- `commit_message` (string, required): Commit message Required for 'single', 'batch' action(s).
- `content` (string, required): File content (text or base64 encoded) Required for 'single' action(s).
- `encoding` (string): Content encoding (default: text) Required for 'single' action(s).
- `execute_filemode` (boolean): Set executable permission Required for 'single' action(s).
- `file` (string): Base64 encoded file content Required for 'upload' action(s).
- `file_path` (string, required): Path to the file Required for 'single' action(s).
- `filename` (string): Name of the file Required for 'upload' action(s).
- `files` (array): Files to commit (at least one required) Required for 'batch' action(s).
- `last_commit_id` (string): Last known commit ID for conflict detection Required for 'single' action(s).
- `overwrite` (boolean): If true, automatically detect which files exist and update them, create others (requires pre-check for each file via GET requests). If false or omitted, only create new files (fails if any file exist…
- `project_id` (string, required): Project ID or URL-encoded path
- `start_branch` (string): Base branch to start from Required for 'single', 'batch' action(s).

### `browse_milestones` (~384 tokens)

Track milestone progress with associated issues and MRs. Actions: list (filter by state/title/search), get (milestone details), issues (items in milestone), merge_requests (MRs targeting milestone), burndown (chart data for sprint tracking). Related: manage_milestone to create/update.

Input parameters:

- `action` (string, required): Action to perform: list, get, issues, merge_requests, burndown
- `iids` (array): Return only the milestones having the given iid Required for 'list' action(s).
- `include_ancestors` (boolean): Include ancestor groups Required for 'list' action(s).
- `milestone_id` (string): The ID of a project or group milestone. Required for 'get', 'issues', 'merge_requests', 'burndown' action(s).
- `namespace` (string, required): Namespace path (group or project)
- `page` (integer): Page number Required for 'list', 'issues', 'merge_requests', 'burndown' action(s).
- `per_page` (integer, required): Number of items per page (default: 20, max: 100) Required for 'list', 'issues', 'merge_requests', 'burndown' action(s).
- `search` (string): Return only milestones with a title or description matching the provided string Required for 'list' action(s).
- `state` (string): Return only active or closed milestones Required for 'list' action(s).
- `title` (string): Return only milestones with a title matching the provided string Required for 'list' action(s).
- `updated_after` (string): Return milestones updated after the specified date (ISO 8601 format) Required for 'list' action(s).
- `updated_before` (string): Return milestones updated before the specified date (ISO 8601 format) Required for 'list' action(s).

### `manage_milestone` (~258 tokens)

Create, update, or delete project/group milestones. Actions: create (title + optional dates/description), update (modify properties or close/activate), delete (remove permanently), promote (elevate project milestone to group). Related: browse_milestones for progress tracking.

Input parameters:

- `action` (string, required): Action to perform: create, update, delete, promote
- `description` (string): The new description of the milestone Required for 'create', 'update' action(s).
- `due_date` (string): The due date of the milestone (YYYY-MM-DD) Required for 'create', 'update' action(s).
- `milestone_id` (string): The ID of a project or group milestone. Required for 'update', 'delete', 'promote' action(s).
- `namespace` (string, required): Namespace path (group or project)
- `start_date` (string): The start date of the milestone (YYYY-MM-DD) Required for 'create', 'update' action(s).
- `state_event` (string): State event to apply: 'close' or 'activate' Required for 'update' action(s).
- `title` (string): The new title of the milestone Required for 'create', 'update' action(s).

### `browse_pipelines` (~591 tokens)

Monitor CI/CD pipelines and read job logs. Actions: list (filter by status/ref/source/username), get (pipeline details), jobs (list pipeline jobs), triggers (bridge/trigger jobs), job (single job details), logs (job console output). Related: manage_pipeline to trigger/retry/cancel pipelines and play/retry/cancel individual jobs.

Input parameters:

- `action` (string, required): Action to perform: list, get, jobs, triggers, job, logs
- `include_retried` (boolean): Include retried jobs in the response Required for 'jobs', 'triggers' action(s).
- `job_id` (string): The ID of the job Required for 'job', 'logs' action(s).
- `job_scope` (array): Scope of jobs to show Required for 'jobs' action(s).
- `name` (string): Filter by name of user who triggered pipeline Required for 'list' action(s).
- `order_by` (string): Order pipelines by Required for 'list' action(s).
- `page` (integer): Page number Required for 'list', 'jobs', 'triggers' action(s).
- `per_page` (integer): Maximum number of lines to return (default: 200, max: 10000). Use with start for pagination Required for 'list', 'jobs', 'triggers', 'logs' action(s).
- `pipeline_id` (string): The ID of the pipeline Required for 'get', 'jobs', 'triggers' action(s).
- `project_id` (string, required): Project ID or URL-encoded path
- `ref` (string): Filter by branch or tag ref Required for 'list' action(s).
- `scope` (string): Pipeline scope filter Required for 'list' action(s).
- `sha` (string): Filter by SHA Required for 'list' action(s).
- `sort` (string): Sort order Required for 'list' action(s).
- `source` (string): Pipeline source filter Required for 'list' action(s).
- `start` (number): Start from specific line number (0-based). Positive from beginning, negative from end (e.g., -100 = last 100 lines). Use nextStart from previous response to paginate Required for 'logs' action(s).
- `status` (string): Pipeline status filter Required for 'list' action(s).
- `trigger_scope` (array): Scope of trigger jobs to show Required for 'triggers' action(s).
- `updated_after` (string): ISO 8601 datetime to filter by updated_after Required for 'list' action(s).
- `updated_before` (string): ISO 8601 datetime to filter by updated_before Required for 'list' action(s).
- `username` (string): Filter by username who triggered pipeline Required for 'list' action(s).
- `yaml_errors` (boolean): Filter by YAML errors Required for 'list' action(s).

### `manage_pipeline` (~328 tokens)

Trigger, retry, or cancel CI/CD pipelines and individual jobs. Pipeline actions: create (run pipeline on ref with variables or typed inputs), retry (re-run failed jobs), cancel (stop running pipeline). Job actions: play_job (trigger a manual/delayed job with variables), retry_job (re-run a single job), cancel_job (stop a running job). Related: browse_pipelines actions 'job'/'logs' for job details.

Input parameters:

- `action` (string, required): Action to perform: create, retry, cancel, play_job, retry_job, cancel_job
- `force` (boolean): Force cancellation of the job Required for 'cancel_job' action(s).
- `inputs` (object): Typed pipeline inputs defined in .gitlab-ci.yml spec (GitLab 15.5+). Keys must match input names in pipeline spec. Required for 'create' action(s).
- `job_id` (string): The ID of the job Required for 'play_job', 'retry_job', 'cancel_job' action(s).
- `job_variables_attributes` (array): Variables to pass to the job Required for 'play_job' action(s).
- `pipeline_id` (string): The ID of the pipeline Required for 'retry', 'cancel' action(s).
- `project_id` (string, required): Project ID or URL-encoded path
- `ref` (string, required): The branch or tag to run the pipeline on Required for 'create' action(s).
- `variables` (array): Legacy variables to pass to the pipeline (key-value pairs with optional type) Required for 'create' action(s).

### `browse_variables` (~174 tokens)

List and inspect CI/CD variables for projects or groups. Actions: list (all variables with pagination), get (single variable by key with environment scope filter). Related: manage_variable to create/update/delete.

Input parameters:

- `action` (string, required): Action to perform: list, get
- `filter` (object): Filter parameters for variable lookup Required for 'get' action(s).
- `key` (string): The key of the CI/CD variable. Maximum 255 characters, alphanumeric and underscore only. Required for 'get' action(s).
- `namespace` (string, required): Namespace path (group or project)
- `page` (integer): Page number Required for 'list' action(s).
- `per_page` (integer, required): Number of items per page (default: 20, max: 100) Required for 'list' action(s).

### `manage_variable` (~427 tokens)

Create, update, or delete CI/CD variables with environment scoping. Actions: create (key + value, set scope/protection/masking), update (modify value or settings), delete (remove permanently). Related: browse_variables for discovery.

Input parameters:

- `action` (string, required): Action to perform: create, update, delete
- `description` (string): Optional description explaining the purpose of this variable (GitLab 16.2+). Required for 'create', 'update' action(s).
- `environment_scope` (string): The environment scope. Use "*" for all environments (default), or specify like "production", "staging". Required for 'create', 'update' action(s).
- `filter` (object): Filter parameters to identify the specific variable Required for 'update', 'delete' action(s).
- `key` (string, required): The key of the CI/CD variable. Maximum 255 characters, only alphanumeric and underscore characters allowed.
- `masked` (boolean): Whether this variable should be masked in job logs. MASKING REQUIREMENTS: Value must be at least 8 characters, single line with no spaces, only A-Z a-z 0-9 + / = . ~ - _ @ : characters. Required for…
- `namespace` (string, required): Namespace path (group or project)
- `protected` (boolean): Whether this variable is protected. Protected variables are only available to protected branches/tags. Required for 'create', 'update' action(s).
- `raw` (boolean): Whether variable expansion is disabled. When true, variables like $OTHER_VAR in the value will NOT be expanded. Required for 'create', 'update' action(s).
- `value` (string): The value of the CI/CD variable. For file type variables, this is the file content. Required for 'create', 'update' action(s).
- `variable_type` (string): The type of variable: "env_var" for environment variables (default) or "file" for file variables. Required for 'create', 'update' action(s).

### `browse_wiki` (~160 tokens)

Read wiki pages in projects or groups. Actions: list (all pages with metadata), get (page content by slug). Related: manage_wiki to create/update/delete.

Input parameters:

- `action` (string, required): Action to perform: list, get
- `namespace` (string, required): Namespace path (group or project)
- `page` (integer): Page number Required for 'list' action(s).
- `per_page` (integer, required): Number of items per page (default: 20, max: 100) Required for 'list' action(s).
- `slug` (string): URL-encoded slug of the wiki page Required for 'get' action(s).
- `with_content` (boolean): Include content of the wiki pages Required for 'list' action(s).

### `manage_wiki` (~186 tokens)

Create, update, or delete wiki pages. Actions: create (new page with title/content/format), update (modify content or title), delete (remove permanently). Related: browse_wiki to read pages.

Input parameters:

- `action` (string, required): Action to perform: create, update, delete
- `content` (string): New content of the wiki page Required for 'create', 'update' action(s).
- `format` (string): Content format (markdown, rdoc, asciidoc, org). Defaults to markdown. Required for 'create', 'update' action(s).
- `namespace` (string, required): Namespace path (group or project)
- `slug` (string): URL-encoded slug of the wiki page Required for 'update', 'delete' action(s).
- `title` (string): New title of the wiki page Required for 'create', 'update' action(s).

### `browse_work_items` (~309 tokens)

Find and inspect issues, epics, tasks, and other work items. Actions: list (groups return epics, projects return issues/tasks, filter by type/state/labels), get (by numeric ID or namespace+iid from URL path). Related: manage_work_item to create/update/delete.

Input parameters:

- `action` (string, required): Action to perform: list, get
- `after` (string): Cursor for pagination (use endCursor from previous response) Required for 'list' action(s).
- `first` (number, required): Number of items to return Required for 'list' action(s).
- `id` (string): Work item ID to retrieve - use numeric ID from list results (e.g., '5953') Required for 'get' action(s).
- `iid` (string): Internal ID from URL (e.g., '95' from /issues/95). Use with namespace parameter. Required for 'get' action(s).
- `namespace` (string): Namespace path (group or project). Groups return epics, projects return issues/tasks.
- `simple` (boolean, required): Return simplified structure with essential fields only. RECOMMENDED: Use default true for most cases. Required for 'list' action(s).
- `state` (array, required): Filter by work item state. Defaults to OPEN items only. Use ["OPEN", "CLOSED"] for all items. Required for 'list' action(s).
- `types` (array): Filter by work item types Required for 'list' action(s).

### `manage_work_item` (~1101 tokens)

Create, update, delete, or link work items (issues, epics, tasks). Actions: create (epics need GROUP namespace, issues/tasks need PROJECT), update (widgets: dates, time tracking, weight, iterations, health, progress, hierarchy), delete (permanent), delete_timelog (remove a time tracking entry by its global ID), add_link/remove_link (BLOCKS/BLOCKED_BY/RELATED). Related: browse_work_items for discovery.

Input parameters:

- `action` (string, required): Action to perform: create, update, delete, delete_timelog, add_link, remove_link
- `addLabelIds` (array): Array of label IDs to ADD to existing labels. Can be used with removeLabelIds. Cannot be used with labelIds. Required for 'update' action(s).
- `assigneeIds` (array): Array of assignee user IDs Required for 'create', 'update' action(s).
- `childrenIds` (array): Array of child work item IDs to add Required for 'create', 'update' action(s).
- `color` (string): Custom hex color for epics (Ultimate tier) Required for 'create', 'update' action(s).
- `description` (string): Description of the work item Required for 'create', 'update' action(s).
- `dueDate` (string): Due date in YYYY-MM-DD format (null to clear) Required for 'create', 'update' action(s).
- `healthStatus` (string): Health status indicator, null to clear (Ultimate tier) Required for 'create', 'update' action(s).
- `id` (string): Work item ID - use numeric ID from list results (e.g., '5953') Required for 'update', 'delete', 'add_link', 'remove_link' action(s).
- `isFixed` (boolean): Fixed dates - not inherited from children (Premium tier) Required for 'create', 'update' action(s).
- `iterationId` (string): Iteration/sprint ID, null to unassign (Premium tier) Required for 'create', 'update' action(s).
- `labelIds` (array): Array of label IDs to SET (replaces all existing labels). Cannot be used with addLabelIds or removeLabelIds. Required for 'create', 'update' action(s).
- `linkType` (string): Relationship type to create. Use with targetId to link work items during update. Applied via separate mutation after the main update. Required for 'update', 'add_link' action(s).
- `milestoneId` (string): Milestone ID Required for 'create', 'update' action(s).
- `namespace` (string, required): CRITICAL: Namespace path (group OR project). For Epics use GROUP path (e.g. "my-group"). For Issues/Tasks use PROJECT path (e.g. "my-group/my-project"). Required for 'create' action(s).
- `parentId` (string): Parent work item ID to set hierarchy relationship Required for 'create', 'update' action(s).
- `progressCurrentValue` (integer): Current progress value 0-100 for OKR key results (Premium tier) Required for 'create', 'update' action(s).
- `removeLabelIds` (array): Array of label IDs to REMOVE from existing labels. Can be used with addLabelIds. Cannot be used with labelIds. Required for 'update' action(s).
- `startDate` (string): Start date in YYYY-MM-DD format (null to clear) Required for 'create', 'update' action(s).
- `state` (string): State event for the work item (CLOSE, REOPEN) Required for 'update' action(s).
- `targetId` (string): Target work item ID to link to. Use with linkType to create a relationship during update. Required for 'update', 'add_link', 'remove_link' action(s).
- `timeEstimate` (string): Time estimate (e.g. "1h 30m", "2d"). Applied via update after create. Check _warning in response if application failed. Required for 'create', 'update' action(s).
- `timeSpent` (string): Time spent to log as timelog entry (e.g. "2h", "1h 30m") Required for 'update' action(s).
- `timeSpentAt` (string): When time was spent in ISO 8601 format (defaults to now) Required for 'update' action(s).
- `timeSpentSummary` (string): Summary/description of work done for the timelog entry Required for 'update' action(s).
- `timelogId` (string): Global ID of the timelog entry (gid://gitlab/Timelog/N) — obtain from work item's TIME_TRACKING widget via browse_work_items get action Required for 'delete_timelog' action(s).
- `title` (string): Title of the work item Required for 'create', 'update' action(s).
- `verificationStatus` (string): Set verification status for requirement work items: PASSED or FAILED (Ultimate tier). Creates a test report internally. Required for 'update' action(s).
- `weight` (integer): Story points / weight value, null to clear (Premium tier) Required for 'create', 'update' action(s).
- `workItemType` (string, required): Type of work item Required for 'create' action(s).

### `browse_snippets` (~342 tokens)

Find and read code snippets with versioning support. Actions: list (personal/project/public scope with filtering), get (snippet metadata or raw file content). Related: manage_snippet to create/update.

Input parameters:

- `action` (string, required): Action to perform: list, get
- `created_after` (string): Return snippets created after this date (ISO 8601). Example: '2024-01-01T00:00:00Z' Required for 'list' action(s).
- `created_before` (string): Return snippets created before this date (ISO 8601). Example: '2024-12-31T23:59:59Z' Required for 'list' action(s).
- `id` (string): The ID of the snippet to retrieve Required for 'get' action(s).
- `page` (integer): Page number Required for 'list' action(s).
- `per_page` (integer, required): Number of items per page (default: 20, max: 100) Required for 'list' action(s).
- `projectId` (string): Project ID or URL-encoded path. Required for project snippets, leave empty for personal snippets
- `raw` (boolean): Return raw content of snippet files instead of metadata Required for 'get' action(s).
- `scope` (string, required): Scope of snippets: "personal" for current user, "project" for project-specific (requires projectId), "public" for all public snippets Required for 'list' action(s).
- `visibility` (string): Filter by visibility: private (author only), internal (authenticated users), public (everyone) Required for 'list' action(s).

### `manage_snippet` (~274 tokens)

Create, update, or delete code snippets with multi-file support. Actions: create (new snippet with files and visibility), update (modify content/metadata, file operations), delete (remove permanently). Related: browse_snippets for discovery.

Input parameters:

- `action` (string, required): Action to perform: create, update, delete
- `description` (string): Optional description explaining the snippet purpose. Supports markdown Required for 'create', 'update' action(s).
- `files` (array): Array of file operations. Each file must specify 'action': create/update/delete/move. Move requires previous_path Required for 'create', 'update' action(s).
- `id` (string): The ID of the snippet to delete. This operation cannot be undone Required for 'update', 'delete' action(s).
- `projectId` (string): Project ID or URL-encoded path to create a project snippet. Leave empty for personal snippet
- `title` (string): The title of the snippet. Displayed in snippet list and as page title. Max 255 chars Required for 'create', 'update' action(s).
- `visibility` (string): Visibility: 'private' (author only), 'internal' (authenticated users), 'public' (everyone). Defaults to 'private' Required for 'create', 'update' action(s).

### `browse_webhooks` (~183 tokens)

List and inspect webhook configurations for projects or groups. Actions: list (all webhooks with event types and status), get (webhook details by ID). Related: manage_webhook to create/update/delete/test.

Input parameters:

- `action` (string, required): Action to perform: list, get
- `groupId` (string): Group ID or path (required if scope=group)
- `hookId` (string): Webhook ID (required) Required for 'get' action(s).
- `page` (integer): Page number Required for 'list' action(s).
- `per_page` (integer, required): Number of items per page (default: 20, max: 100) Required for 'list' action(s).
- `projectId` (string): Project ID or path (required if scope=project)
- `scope` (string, required): Scope of webhook (project or group)

### `manage_webhook` (~742 tokens)

Create, update, delete, or test webhooks for event-driven automation. Actions: create (URL + event types + optional secret), update (modify settings), delete (remove), test (trigger delivery for specific event). Related: browse_webhooks for inspection.

Input parameters:

- `action` (string, required): Action to perform: create, update, delete, test
- `confidential_issues_events` (boolean): Enable confidential issue events Required for 'create', 'update' action(s).
- `confidential_note_events` (boolean): Enable confidential note events Required for 'create', 'update' action(s).
- `deployment_events` (boolean): Enable deployment events Required for 'create', 'update' action(s).
- `description` (string): Webhook description (GitLab 16.11+) Required for 'create', 'update' action(s).
- `emoji_events` (boolean): Enable emoji events Required for 'create', 'update' action(s).
- `enable_ssl_verification` (boolean): Enable SSL certificate verification Required for 'create', 'update' action(s).
- `feature_flag_events` (boolean): Enable feature flag events Required for 'create', 'update' action(s).
- `groupId` (string): Group ID or path (required if scope=group)
- `hookId` (string): Webhook ID (required) Required for 'update', 'delete', 'test' action(s).
- `issues_events` (boolean): Enable issue events Required for 'create', 'update' action(s).
- `job_events` (boolean): Enable job/build events Required for 'create', 'update' action(s).
- `member_events` (boolean): Enable member events Required for 'create', 'update' action(s).
- `merge_requests_events` (boolean): Enable merge request events Required for 'create', 'update' action(s).
- `name` (string): Human-readable webhook name (GitLab 16.11+) Required for 'create', 'update' action(s).
- `note_events` (boolean): Enable note/comment events Required for 'create', 'update' action(s).
- `pipeline_events` (boolean): Enable pipeline events Required for 'create', 'update' action(s).
- `projectId` (string): Project ID or path (required if scope=project)
- `project_events` (boolean): Enable project events (group webhooks only) Required for 'create', 'update' action(s).
- `push_events` (boolean): Enable push events Required for 'create', 'update' action(s).
- `push_events_branch_filter` (string): Branch filter for push events (wildcard supported) Required for 'create', 'update' action(s).
- `releases_events` (boolean): Enable release events Required for 'create', 'update' action(s).
- `resource_access_token_events` (boolean): Enable resource access token events Required for 'create', 'update' action(s).
- `scope` (string, required): Scope of webhook (project or group)
- `subgroup_events` (boolean): Enable subgroup events (group webhooks only) Required for 'create', 'update' action(s).
- `tag_push_events` (boolean): Enable tag push events Required for 'create', 'update' action(s).
- `token` (string): Secret token for webhook validation Required for 'create', 'update' action(s).
- `trigger` (string): Event type to test (required) Required for 'test' action(s).
- `url` (string): Webhook URL (required) Required for 'create', 'update' action(s).
- `wiki_page_events` (boolean): Enable wiki page events Required for 'create', 'update' action(s).

### `browse_integrations` (~180 tokens)

Discover active project integrations and their configuration. Actions: list (all active: Slack, Jira, Discord, Teams, Jenkins, etc.), get (specific integration settings by slug). Related: manage_integration to configure/disable.

Input parameters:

- `action` (string, required): Action to perform: list, get
- `integration` (string): Integration type slug (e.g., slack, jira, discord). Note: gitlab-slack-application cannot be created via API - it requires OAuth installation from GitLab UI. Required for 'get' action(s).
- `page` (integer): Page number Required for 'list' action(s).
- `per_page` (integer, required): Number of items per page (default: 20, max: 100) Required for 'list' action(s).
- `project_id` (string, required): Project ID or URL-encoded path

### `manage_integration` (~449 tokens)

Configure or disable project integrations (50+ supported). Actions: update (enable/modify with integration-specific config), disable (deactivate integration). Note: gitlab-slack-application requires OAuth install from GitLab UI. Related: browse_integrations for discovery.

Input parameters:

- `action` (string, required): Action to perform: update, disable
- `active` (boolean): Enable or disable the integration without full configuration Required for 'update' action(s).
- `confidential_issues_events` (boolean): Trigger integration on confidential issue events Required for 'update' action(s).
- `config` (object): Integration-specific configuration parameters. Pass as key-value pairs. Examples: webhook_url, token, channel, etc. See GitLab API documentation for integration-specific fields. Required for 'update'…
- `deployment_events` (boolean): Trigger integration on deployment events Required for 'update' action(s).
- `integration` (string, required): Integration type slug (e.g., slack, jira, discord). Note: gitlab-slack-application cannot be created via API - it requires OAuth installation from GitLab UI.
- `issues_events` (boolean): Trigger integration on issue events Required for 'update' action(s).
- `job_events` (boolean): Trigger integration on job events Required for 'update' action(s).
- `merge_requests_events` (boolean): Trigger integration on merge request events Required for 'update' action(s).
- `note_events` (boolean): Trigger integration on note events Required for 'update' action(s).
- `pipeline_events` (boolean): Trigger integration on pipeline events Required for 'update' action(s).
- `project_id` (string, required): Project ID or URL-encoded path
- `push_events` (boolean): Trigger integration on push events Required for 'update' action(s).
- `releases_events` (boolean): Trigger integration on release events Required for 'update' action(s).
- `tag_push_events` (boolean): Trigger integration on tag push events Required for 'update' action(s).
- `vulnerability_events` (boolean): Trigger integration on vulnerability events Required for 'update' action(s).
- `wiki_page_events` (boolean): Trigger integration on wiki page events Required for 'update' action(s).

### `browse_releases` (~248 tokens)

View project releases and asset download links. Actions: list (releases sorted by date), get (release details by tag name), assets (download link list for release). Related: manage_release to create/publish.

Input parameters:

- `action` (string, required): Action to perform: list, get, assets
- `include_html_description` (boolean): Include HTML-rendered description in response Required for 'list', 'get' action(s).
- `order_by` (string): Sort releases by field (default: released_at) Required for 'list' action(s).
- `page` (integer): Page number Required for 'list', 'assets' action(s).
- `per_page` (integer): Number of items per page (max 100) Required for 'list', 'assets' action(s).
- `project_id` (string, required): Project ID or URL-encoded path (e.g., 'my-group/my-project')
- `sort` (string): Sort direction (default: desc) Required for 'list' action(s).
- `tag_name` (string): The Git tag associated with the release (e.g., 'v1.0.0') Required for 'get', 'assets' action(s).

### `manage_release` (~446 tokens)

Create, update, or delete project releases with asset management. Actions: create (release from tag with notes/assets), update (modify metadata), delete (remove release, tag preserved), create_link (add asset URL), delete_link (remove asset). Related: browse_releases for discovery.

Input parameters:

- `action` (string, required): Action to perform: create, update, delete, create_link, delete_link
- `assets` (object): Release assets configuration Required for 'create' action(s).
- `description` (string): Release description (supports Markdown) Required for 'create', 'update' action(s).
- `direct_asset_path` (string): Path for direct asset download (e.g., '/binaries/linux-amd64') Required for 'create_link' action(s).
- `link_id` (string): The ID of the asset link to delete Required for 'delete_link' action(s).
- `link_type` (string): Type of asset link (default: other) Required for 'create_link' action(s).
- `milestones` (array): Array of milestone titles to associate with the release Required for 'create', 'update' action(s).
- `name` (string): Display name for the asset link (must be unique per release) Required for 'create', 'update', 'create_link' action(s).
- `project_id` (string, required): Project ID or URL-encoded path (e.g., 'my-group/my-project')
- `ref` (string): Branch/commit SHA to create tag from (if tag does not exist) Required for 'create' action(s).
- `released_at` (string): Release date/time in ISO 8601 format (e.g., '2024-01-15T12:00:00Z') Required for 'create', 'update' action(s).
- `tag_message` (string): Annotation message for the tag (creates annotated tag) Required for 'create' action(s).
- `tag_name` (string, required): The Git tag associated with the release (e.g., 'v1.0.0')
- `url` (string): URL of the asset (must be unique per release) Required for 'create_link' action(s).

### `browse_refs` (~404 tokens)

Inspect branches, tags, and their protection rules. Actions: list_branches, get_branch, list_tags, get_tag, list_protected_branches, get_protected_branch, list_protected_tags (protection details and access levels). Related: manage_ref to create/delete/protect, browse_commits for commit history.

Input parameters:

- `action` (string, required): Action to perform: list_branches, get_branch, list_tags, get_tag, list_protected_branches, get_protected_branch, list_protected_tags
- `branch` (string): Branch name (URL-encoded if contains slashes) Required for 'get_branch' action(s).
- `name` (string): Branch name or wildcard pattern (e.g., 'main', 'release-*') Required for 'get_protected_branch' action(s).
- `order_by` (string): Sort by field (default: updated) Required for 'list_tags' action(s).
- `page` (integer): Page number Required for 'list_branches', 'list_tags', 'list_protected_branches', 'list_protected_tags' action(s).
- `per_page` (integer): Number of items per page (max 100) Required for 'list_branches', 'list_tags', 'list_protected_branches', 'list_protected_tags' action(s).
- `project_id` (string, required): Project ID or URL-encoded path (e.g., 'my-group/my-project')
- `regex` (string): Filter branches by regex pattern Required for 'list_branches' action(s).
- `search` (string): Filter branches by name (supports wildcards) Required for 'list_branches', 'list_tags', 'list_protected_branches' action(s).
- `sort` (string): Sort direction (default: desc) Required for 'list_tags' action(s).
- `tag_name` (string): Tag name (URL-encoded if contains special characters) Required for 'get_tag' action(s).

### `manage_ref` (~609 tokens)

Create, delete, and protect branches and tags. Actions: create_branch (from ref), delete_branch, protect_branch (set allowed roles), unprotect_branch, update_branch_protection, create_tag (annotated or lightweight), delete_tag, protect_tag, unprotect_tag. Related: browse_refs for inspection.

Input parameters:

- `action` (string, required): Action to perform: create_branch, delete_branch, protect_branch, unprotect_branch, update_branch_protection, create_tag, delete_tag, protect_tag, unprotect_tag
- `allow_force_push` (boolean): Allow force push to protected branch (default: false) Required for 'protect_branch', 'update_branch_protection' action(s).
- `allowed_to_create` (array): Granular create access (Premium feature) Required for 'protect_tag' action(s).
- `allowed_to_merge` (array): Granular merge access (Premium feature) Required for 'protect_branch', 'update_branch_protection' action(s).
- `allowed_to_push` (array): Granular push access (Premium feature) Required for 'protect_branch', 'update_branch_protection' action(s).
- `allowed_to_unprotect` (array): Granular unprotect access (Premium feature) Required for 'protect_branch', 'update_branch_protection' action(s).
- `branch` (string, required): Name for the new branch Required for 'create_branch', 'delete_branch' action(s).
- `code_owner_approval_required` (boolean): Require code owner approval (Premium feature) Required for 'protect_branch', 'update_branch_protection' action(s).
- `create_access_level` (integer): Who can create matching tags (default: 40=Maintainers) Required for 'protect_tag' action(s).
- `merge_access_level` (integer): Who can merge (default: 40=Maintainers) Required for 'protect_branch' action(s).
- `message` (string): Annotation message (creates annotated tag if provided) Required for 'create_tag' action(s).
- `name` (string): Branch name or wildcard pattern (e.g., 'main', 'release-*') Required for 'protect_branch', 'unprotect_branch', 'update_branch_protection', 'protect_tag', 'unprotect_tag' action(s).
- `project_id` (string, required): Project ID or URL-encoded path (e.g., 'my-group/my-project')
- `push_access_level` (integer): Who can push (default: 40=Maintainers) Required for 'protect_branch' action(s).
- `ref` (string, required): Source branch name, tag, or commit SHA to create from Required for 'create_branch', 'create_tag' action(s).
- `tag_name` (string): Name for the new tag (e.g., 'v1.0.0') Required for 'create_tag', 'delete_tag' action(s).
- `unprotect_access_level` (integer): Who can unprotect (default: 40=Maintainers) Required for 'protect_branch' action(s).

### `browse_members` (~404 tokens)

View team members and access levels in projects or groups. Actions: list_project, list_group, get_project, get_group (direct members), list_all_project, list_all_group (includes inherited). Levels: Guest(10), Reporter(20), Developer(30), Maintainer(40), Owner(50). Related: manage_member to add/remove, browse_users to find users by name.

Input parameters:

- `action` (string, required): Action to perform: list_project, list_group, get_project, get_group, list_all_project, list_all_group
- `group_id` (string): Group ID or URL-encoded path Required for 'list_group', 'get_group', 'list_all_group' action(s).
- `include_inherited` (boolean): Include members inherited from parent groups Required for 'get_project', 'get_group' action(s).
- `page` (integer): Page number Required for 'list_project', 'list_group', 'list_all_project', 'list_all_group' action(s).
- `per_page` (integer, required): Number of items per page (default: 20, max: 100) Required for 'list_project', 'list_group', 'list_all_project', 'list_all_group' action(s).
- `project_id` (string, required): Project ID or URL-encoded path Required for 'list_project', 'get_project', 'list_all_project' action(s).
- `query` (string): Search members by name or username Required for 'list_project', 'list_group', 'list_all_project', 'list_all_group' action(s).
- `state` (string): Filter by member state Required for 'list_all_project', 'list_all_group' action(s).
- `user_id` (string): User ID of the member Required for 'get_project', 'get_group' action(s).
- `user_ids` (array): Filter to specific user IDs Required for 'list_project', 'list_group', 'list_all_project', 'list_all_group' action(s).

### `manage_member` (~377 tokens)

Add, remove, or update access levels for project/group members. Actions: add_to_project, add_to_group (with access level + optional expiry), remove_from_project, remove_from_group, update_project, update_group (change access level). Related: browse_members for current membership.

Input parameters:

- `access_level` (integer, required): Access level: 0=No access, 5=Minimal, 10=Guest, 20=Reporter, 30=Developer, 40=Maintainer, 50=Owner Required for 'add_to_project', 'add_to_group', 'update_project', 'update_group' action(s).
- `action` (string, required): Action to perform: add_to_project, add_to_group, remove_from_project, remove_from_group, update_project, update_group
- `expires_at` (string): Membership expiration date in ISO 8601 format (YYYY-MM-DD) Required for 'add_to_project', 'add_to_group', 'update_project', 'update_group' action(s).
- `group_id` (string): Group ID or URL-encoded path Required for 'add_to_group', 'remove_from_group', 'update_group' action(s).
- `member_role_id` (integer): ID of a custom member role (Ultimate only) Required for 'update_group' action(s).
- `project_id` (string, required): Project ID or URL-encoded path Required for 'add_to_project', 'remove_from_project', 'update_project' action(s).
- `skip_subresources` (boolean): Skip removing from subgroups and projects Required for 'remove_from_project', 'remove_from_group' action(s).
- `unassign_issuables` (boolean): Unassign member from issues and merge requests Required for 'remove_from_project', 'remove_from_group' action(s).
- `user_id` (string, required): User ID to remove

### `browse_search` (~293 tokens)

Search across GitLab resources globally or within a scope. Actions: global (entire instance), project (within specific project), group (within specific group). Searchable: projects, issues, merge_requests, milestones, users, blobs (code), commits, wiki_blobs, notes.

Input parameters:

- `action` (string, required): Action to perform: global, project, group
- `confidential` (boolean): Filter by confidentiality (for issues scope, Premium only)
- `group_id` (string): Group ID or URL-encoded path (e.g., 'my-group' or '123') Required for 'group' action(s).
- `order_by` (string): Sort results by field
- `page` (integer): Page number
- `per_page` (integer, required): Number of items per page (default: 20, max: 100)
- `project_id` (string): Project ID or URL-encoded path (e.g., 'group/project' or '123') Required for 'project' action(s).
- `ref` (string): Branch/tag reference for code search (blobs, commits) Required for 'project' action(s).
- `scope` (string, required): Search scope determining what type of resources to search
- `search` (string, required): Search query string (minimum 1 character)
- `sort` (string): Sort direction
- `state` (string): Filter by state (for issues and merge_requests scopes)

### `browse_iterations` (~204 tokens)

View group iterations for agile sprint planning. Actions: list (filter by state: current, upcoming, closed), get (retrieve specific iteration details). Related: browse_work_items for items in an iteration.

Input parameters:

- `action` (string, required): Action to perform: list, get
- `group_id` (string, required): Group ID or URL-encoded path.
- `include_ancestors` (boolean): Include iterations from parent groups. Required for 'list' action(s).
- `iteration_id` (string): Iteration ID. Required for 'get' action(s).
- `page` (integer): Page number Required for 'list' action(s).
- `per_page` (integer, required): Number of items per page (default: 20, max: 100) Required for 'list' action(s).
- `search` (string): Search iterations by title. Required for 'list' action(s).
- `state` (string): Filter by iteration state. Required for 'list' action(s).

### `browse_job_token_scope` (~177 tokens)

Inspect a project CI/CD job token inbound access scope. Actions: get (the inbound/outbound scope toggles), list_projects (projects allowed to reach this project via CI_JOB_TOKEN), list_groups (groups on the allowlist). Related: manage_job_token_scope to change the allowlist.

Input parameters:

- `action` (string, required): Action to perform: get, list_projects, list_groups
- `page` (integer): Page number Required for 'list_projects', 'list_groups' action(s).
- `per_page` (integer): Number of items per page (default: 20, max: 100) Required for 'list_projects', 'list_groups' action(s).
- `project_id` (string, required): Project whose job token scope is inspected. Numeric ID or URL-encoded path (e.g. 'group/project' or '123').

### `manage_job_token_scope` (~245 tokens)

Manage a project CI/CD job token inbound allowlist. Actions: set_enabled (turn allowlist enforcement on/off), add_project / remove_project (grant or revoke a project), add_group / remove_group (grant or revoke a group). Required to allow cross-project CI_JOB_TOKEN access once the legacy open-access mode is removed. Related: browse_job_token_scope to inspect.

Input parameters:

- `action` (string, required): Action to perform: set_enabled, add_project, remove_project, add_group, remove_group
- `enabled` (boolean, required): When true, only allowlisted projects/groups may access this project via CI_JOB_TOKEN. Required for 'set_enabled' action(s).
- `project_id` (string, required): Project whose job token scope is modified. Numeric ID or URL-encoded path (e.g. 'group/project' or '123').
- `target_group_id` (integer): Numeric ID of the group to add/remove from the inbound allowlist. Required for 'add_group', 'remove_group' action(s).
- `target_project_id` (integer): Numeric ID of the project to add/remove from the inbound allowlist. Required for 'add_project', 'remove_project' action(s).

### `browse_deploy_keys` (~207 tokens)

List and inspect deploy keys (SSH keys granting repo access to CI/automation). Actions: list (a project’s keys, or all instance keys when project_id is omitted — admin only), get (a single project key by ID). Related: manage_deploy_key to add/enable/update/delete.

Input parameters:

- `action` (string, required): Action to perform: list, get
- `key_id` (integer): Numeric deploy key ID. Required for 'get' action(s).
- `page` (integer): Page number Required for 'list' action(s).
- `per_page` (integer, required): Number of items per page (default: 20, max: 100) Required for 'list' action(s).
- `project_id` (string): Project to list keys for. Omit to list all instance deploy keys (admin only).
- `public` (boolean): Instance list only: when true, return only the public (non-sensitive) fields. Required for 'list' action(s).

### `manage_deploy_key` (~273 tokens)

Add, enable, update, or remove project deploy keys. Actions: add (register a new SSH public key with title and optional push access/expiry), enable (attach an existing key from another project), update (change title or can_push), delete (remove from this project). Related: browse_deploy_keys to inspect.

Input parameters:

- `action` (string, required): Action to perform: add, enable, update, delete
- `can_push` (boolean): Whether the key may push to the repository (read/write). Default false (read-only). Required for 'add', 'update' action(s).
- `expires_at` (string): Optional expiry date in YYYY-MM-DD format (e.g. "2026-12-31"). Required for 'add' action(s).
- `key` (string, required): The SSH public key (e.g. "ssh-ed25519 AAAA... comment"). Required for 'add' action(s).
- `key_id` (integer): Numeric deploy key ID. Required for 'enable', 'update', 'delete' action(s).
- `project_id` (string, required): Project ID or URL-encoded path (e.g. 'group/project' or '123').
- `title` (string): Human-readable name for the deploy key. Required for 'add', 'update' action(s).

### `browse_environments` (~467 tokens)

Inspect project environments and their deployments. Actions: list (environments filtered by state/name), get (single environment with its last deployment), list_deployments (deployment history, filterable by environment and status). Related: manage_environment to create.

Input parameters:

- `action` (string, required): Action to perform: list, get, list_deployments
- `environment` (string): Filter deployments by environment name Required for 'list_deployments' action(s).
- `environment_id` (integer): Numeric ID of the environment Required for 'get' action(s).
- `finished_after` (string): Return deployments finished after this ISO 8601 date (requires order_by=finished_at) Required for 'list_deployments' action(s).
- `finished_before` (string): Return deployments finished before this ISO 8601 date (requires order_by=finished_at) Required for 'list_deployments' action(s).
- `name` (string): Return the environment with this exact name Required for 'list' action(s).
- `order_by` (string): Order deployments by field (default: id) Required for 'list_deployments' action(s).
- `page` (integer): Page number Required for 'list', 'list_deployments' action(s).
- `per_page` (integer, required): Number of items per page (default: 20, max: 100) Required for 'list', 'list_deployments' action(s).
- `project_id` (string, required): Project ID or URL-encoded path (e.g., 'my-group/my-project')
- `search` (string): Return environments matching this search term (min 3 characters) Required for 'list' action(s).
- `sort` (string): Sort direction (default: asc) Required for 'list_deployments' action(s).
- `states` (string): Filter environments by state Required for 'list' action(s).
- `status` (string): Filter deployments by status Required for 'list_deployments' action(s).
- `updated_after` (string): Return deployments updated after this ISO 8601 date Required for 'list_deployments' action(s).
- `updated_before` (string): Return deployments updated before this ISO 8601 date Required for 'list_deployments' action(s).

### `manage_environment` (~318 tokens)

Create and control project environments and deployment status. Actions: create (new environment), update (external_url/tier/description), stop (required before delete), delete (stopped environment), update_deployment_status (set a non-pipeline deployment to running/success/failed/canceled). Related: browse_environments to list and inspect.

Input parameters:

- `action` (string, required): Action to perform: create, update, stop, delete, update_deployment_status
- `deployment_id` (integer): Numeric ID of the deployment to update Required for 'update_deployment_status' action(s).
- `description` (string): Description of the environment Required for 'create', 'update' action(s).
- `environment_id` (integer): Numeric ID of the environment Required for 'update', 'stop', 'delete' action(s).
- `external_url` (string): URL where the deployed environment can be reached (e.g., https://staging.example.com) Required for 'create', 'update' action(s).
- `force` (boolean): Force the stop, skipping the on_stop action if one is defined Required for 'stop' action(s).
- `name` (string, required): Name of the environment Required for 'create' action(s).
- `project_id` (string, required): Project ID or URL-encoded path (e.g., 'my-group/my-project')
- `status` (string): New deployment status Required for 'update_deployment_status' action(s).
- `tier` (string): Deployment tier of the environment Required for 'create', 'update' action(s).

### `browse_registry` (~302 tokens)

Inspect the GitLab Container Registry. Actions: list_repositories (a project's image repositories), get_repository (single repository by ID), list_tags (tags of a repository), get_tag (single tag with manifest digest, size, and timestamps). Related: manage_registry to delete repositories and tags (including regex bulk cleanup).

Input parameters:

- `action` (string, required): Action to perform: list_repositories, get_repository, list_tags, get_tag
- `after` (string): Cursor for the next page (endCursor from a previous response) Required for 'list_repositories', 'list_tags' action(s).
- `first` (integer): Max number of items to return (cursor pagination, default 20, max 100) Required for 'list_repositories', 'list_tags' action(s).
- `name` (string): Filter repositories by name (substring match) Required for 'list_repositories', 'list_tags' action(s).
- `project_id` (string, required): Project full path (e.g., 'my-group/my-project') - required by the GraphQL project lookup Required for 'list_repositories' action(s).
- `repository_id` (integer): Numeric ID of the container repository (from list_repositories) Required for 'get_repository', 'list_tags', 'get_tag' action(s).
- `tag_name` (string): Container image tag name (e.g., "latest", "v1.2.0") Required for 'get_tag' action(s).

### `manage_registry` (~260 tokens)

Delete GitLab Container Registry repositories and tags. Actions: delete_repository (remove a whole repository), delete_tag (remove one tag), delete_tags_bulk (regex cleanup with keep_n/older_than retention - destructive). Related: browse_registry to inspect before deleting.

Input parameters:

- `action` (string, required): Action to perform: delete_repository, delete_tag, delete_tags_bulk
- `keep_n` (integer): Keep the N most recently created matching tags Required for 'delete_tags_bulk' action(s).
- `name_regex_delete` (string): Regex for tag names to delete (e.g., ".*" for all, "^v.+" for version tags) Required for 'delete_tags_bulk' action(s).
- `name_regex_keep` (string): Regex for tag names to always keep (takes precedence over name_regex_delete) Required for 'delete_tags_bulk' action(s).
- `older_than` (string): Only delete tags created longer ago than this duration (e.g., "7d", "12h") Required for 'delete_tags_bulk' action(s).
- `repository_id` (integer, required): Numeric ID of the container repository (from browse_registry list_repositories)
- `tag_name` (string): Container image tag name to delete Required for 'delete_tag' action(s).

### `browse_access_tokens` (~371 tokens)

Inspect access tokens (CI/automation credentials). Actions: list_personal (the current user's PATs; admins may filter by user_id), list_project / list_group (a project's or group's tokens), get (a single token by ID - pass project_id or group_id for project/group tokens, neither for personal). Related: manage_access_token to create.

Input parameters:

- `action` (string, required): Action to perform: list_personal, list_project, list_group, get
- `group_id` (string): Group ID or URL-encoded path (e.g. 'my-group' or '42'). Required for 'list_group', 'get' action(s).
- `page` (integer): Page number Required for 'list_personal', 'list_project', 'list_group' action(s).
- `per_page` (integer, required): Number of items per page (default: 20, max: 100) Required for 'list_personal', 'list_project', 'list_group' action(s).
- `project_id` (string): Project ID or URL-encoded path (e.g. 'group/project' or '123'). Required for 'list_project', 'get' action(s).
- `revoked` (boolean): Filter by revoked state. Required for 'list_personal' action(s).
- `search` (string): Filter by token name substring. Required for 'list_personal' action(s).
- `state` (string): Filter by token state. Required for 'list_personal', 'list_project', 'list_group' action(s).
- `token_id` (integer): Numeric access-token ID (from a list action). Required for 'get' action(s).
- `user_id` (integer): Admin only: list PATs belonging to this user ID. Required for 'list_personal' action(s).

### `manage_access_token` (~371 tokens)

Create, rotate, or revoke access tokens. Actions: create_project / create_group (issue a new token with name + scopes, returns the value once), rotate (revoke the old token and return a new value), revoke (delete a token permanently). For rotate/revoke pass project_id or group_id for project/group tokens, neither for personal. Related: browse_access_tokens to discover token IDs.

Input parameters:

- `access_level`: Access level: 10 Guest, 20 Reporter, 30 Developer, 40 Maintainer, 50 Owner. Required for 'create_project', 'create_group' action(s).
- `action` (string, required): Action to perform: create_project, create_group, rotate, revoke
- `expires_at` (string): Expiry date in YYYY-MM-DD format (e.g. "2026-12-31"). Required for 'create_project', 'create_group', 'rotate' action(s).
- `group_id` (string): Group ID or URL-encoded path (e.g. 'my-group' or '42'). Required for 'create_group', 'rotate', 'revoke' action(s).
- `name` (string, required): Human-readable token name. Required for 'create_project', 'create_group' action(s).
- `project_id` (string): Project ID or URL-encoded path (e.g. 'group/project' or '123'). Required for 'create_project', 'rotate', 'revoke' action(s).
- `scopes` (array, required): Token scopes, e.g. ['api'], ['read_repository','write_repository']. At least one required. Required for 'create_project', 'create_group' action(s).
- `token_id` (integer): Numeric access-token ID (from a list action). Required for 'rotate', 'revoke' action(s).

### `browse_runners` (~495 tokens)

Inspect CI runners. Actions: list_all (every runner on the instance - admin), list_owned (the current user's runners), list_project / list_group (runners available to a project/group), get (single runner by ID), list_jobs (jobs a runner has executed). Related: manage_runner to register.

Input parameters:

- `action` (string, required): Action to perform: list_all, list_owned, list_project, list_group, get, list_jobs
- `after` (string): Cursor for the next page (endCursor) Required for 'list_all', 'list_owned', 'list_project', 'list_group', 'list_jobs' action(s).
- `first` (integer): Max items to return (cursor pagination, default 20, max 100) Required for 'list_all', 'list_owned', 'list_project', 'list_group', 'list_jobs' action(s).
- `group_id` (string): Group full path (e.g., 'my-group' or 'my-group/sub') - required by the GraphQL group lookup Required for 'list_group' action(s).
- `paused` (boolean): Filter by paused state Required for 'list_all', 'list_owned', 'list_project', 'list_group' action(s).
- `project_id` (string): Project full path (e.g., 'my-group/my-project') - required by the GraphQL project lookup Required for 'list_project' action(s).
- `runner_id` (integer): Numeric ID of the runner (from a list action); expanded to a global ID internally Required for 'get', 'list_jobs' action(s).
- `search` (string): Filter by description/token substring Required for 'list_all', 'list_owned', 'list_project', 'list_group' action(s).
- `status` (string): Filter by runner status Required for 'list_all', 'list_owned', 'list_project', 'list_group' action(s).
- `statuses` (array): Filter jobs by one or more statuses (e.g. ["FAILED", "CANCELED"]) Required for 'list_jobs' action(s).
- `tag_list` (array): Filter by runners that have ALL of these tags Required for 'list_all', 'list_owned', 'list_project', 'list_group' action(s).
- `type` (string): Filter by runner type Required for 'list_all', 'list_owned', 'list_project', 'list_group' action(s).

### `manage_runner` (~472 tokens)

Register and control CI runners. Actions: create_authentication_token (register a runner, GitLab 16+, returns a one-time token), update (settings), pause/resume (toggle job pickup), delete, reset_authentication_token (rotate the token). Related: browse_runners to discover runners.

Input parameters:

- `access_level` (string): Access level: NOT_PROTECTED or REF_PROTECTED (protected refs only) Required for 'create_authentication_token', 'update' action(s).
- `action` (string, required): Action to perform: create_authentication_token, update, pause, resume, delete, reset_authentication_token
- `description` (string): Runner description Required for 'create_authentication_token', 'update' action(s).
- `group_id` (string): Group full path for a group runner (e.g., 'my-group') Required for 'create_authentication_token' action(s).
- `locked` (boolean): Lock the runner to its current projects Required for 'create_authentication_token', 'update' action(s).
- `maintenance_note` (string): Free-form maintenance note (Markdown) Required for 'create_authentication_token', 'update' action(s).
- `maximum_timeout` (integer): Maximum job timeout in seconds Required for 'create_authentication_token', 'update' action(s).
- `paused` (boolean): Whether the runner is paused (ignores new jobs) Required for 'create_authentication_token', 'update' action(s).
- `project_id` (string): Project full path for a project runner (e.g., 'my-group/my-project') Required for 'create_authentication_token' action(s).
- `run_untagged` (boolean): Allow running untagged jobs Required for 'create_authentication_token', 'update' action(s).
- `runner_id` (integer): Numeric ID of the runner (from browse_runners); expanded to a global ID internally Required for 'update', 'pause', 'resume', 'delete', 'reset_authentication_token' action(s).
- `runner_type` (string, required): Runner scope. INSTANCE_TYPE needs admin; GROUP_TYPE/PROJECT_TYPE need the namespace Required for 'create_authentication_token' action(s).
- `tag_list` (array): Tags that determine which jobs run Required for 'create_authentication_token', 'update' action(s).

### `browse_audit_events` (~418 tokens)

Inspect audit events: the immutable record of who did what, when. Actions: list_instance (instance-wide, admin-only), list_group / list_project (a group or project audit trail), get (a single event by ID - pass project_id or group_id for group/project events, neither for an instance event). Premium/Ultimate feature; there is no write counterpart because audit events cannot be modified.

Input parameters:

- `action` (string, required): Action to perform: list_instance, list_group, list_project, get
- `audit_event_id` (integer): Numeric audit-event ID (from a list action). Required for 'get' action(s).
- `created_after` (string): Return events created on or after this date (YYYY-MM-DD). Required for 'list_instance', 'list_group', 'list_project' action(s).
- `created_before` (string): Return events created on or before this date (YYYY-MM-DD). Required for 'list_instance', 'list_group', 'list_project' action(s).
- `entity_id` (integer): Filter by the numeric ID of the entity (used with entity_type). Required for 'list_instance' action(s).
- `entity_type` (string): Filter by entity type, e.g. 'User', 'Group', 'Project', 'Key'. Required for 'list_instance' action(s).
- `group_id` (string): Group ID or URL-encoded path (e.g. 'my-group' or '42'). Required for 'list_group', 'get' action(s).
- `page` (integer): Page number Required for 'list_instance', 'list_group', 'list_project' action(s).
- `per_page` (integer, required): Number of items per page (default: 20, max: 100) Required for 'list_instance', 'list_group', 'list_project' action(s).
- `project_id` (string): Project ID or URL-encoded path (e.g. 'group/project' or '123'). Required for 'list_project', 'get' action(s).

### `browse_vulnerabilities` (~296 tokens)

Inspect security vulnerabilities (Ultimate). Actions: list (a project, a group, or the whole instance when neither id is given; filter by state, severity, report_type), get (a single vulnerability by ID with full detail). Related: manage_vulnerability to dismiss.

Input parameters:

- `action` (string, required): Action to perform: list, get
- `after` (string): Cursor for the next page (endCursor). Required for 'list' action(s).
- `first` (integer): Max items to return (cursor pagination, default 20, max 100). Required for 'list' action(s).
- `group_id` (string): Group full path or ID to scope the list. Required for 'list' action(s).
- `project_id` (string): Project full path or ID to scope the list. Required for 'list' action(s).
- `report_type` (array): Filter by scanner report type(s). Required for 'list' action(s).
- `severity` (array): Filter by severity level(s). Required for 'list' action(s).
- `sort` (string): Sort order (default: severity_desc). Required for 'list' action(s).
- `state` (array): Filter by vulnerability state(s). Required for 'list' action(s).
- `vulnerability_id` (integer): Numeric vulnerability ID (from a list action); expanded to a global ID internally. Required for 'get' action(s).

### `manage_vulnerability` (~136 tokens)

Drive the vulnerability state machine (Ultimate). Actions: dismiss (with optional dismissal_reason + comment), confirm (genuine finding), resolve (fixed), revert (back to detected). Related: browse_vulnerabilities to discover vulnerability IDs.

Input parameters:

- `action` (string, required): Action to perform: dismiss, confirm, resolve, revert
- `comment` (string): Free-text justification for the dismissal. Required for 'dismiss' action(s).
- `dismissal_reason` (string): Structured dismissal reason. Required for 'dismiss' action(s).
- `vulnerability_id` (integer, required): Numeric vulnerability ID (from a list action); expanded to a global ID internally.

## Diagnostics

Captured diagnostic sections: Provenance, Dependencies. The full working is on the page: https://verifymcp.io/servers/structured-world-gitlab-mcp/structured-world-gitlab-mcp#diagnostics

## Score history

- 2026-08-03: 69
- 2026-08-02: 66
- 2026-08-01: 17
- 2026-07-31: 5
- 2026-07-30: 6
- 2026-07-28: 41
- 2026-07-27: 41

## Links

- npm package: https://www.npmjs.com/package/@structured-world/gitlab-mcp
- Socket report: https://socket.dev/npm/package/@structured-world/gitlab-mcp
- Repository: https://github.com/structured-world/gitlab-mcp
- Website: https://gitlab-mcp.sw.foundation/
- Changelog RSS feed: https://verifymcp.io/servers/structured-world-gitlab-mcp/structured-world-gitlab-mcp/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/structured-world-gitlab-mcp/structured-world-gitlab-mcp/changelog.json
- HTML version of this page: https://verifymcp.io/servers/structured-world-gitlab-mcp/structured-world-gitlab-mcp
