gitlab-mcpCAUTION
GitLab MCP server — issues, merge requests, pipelines, code search. 80+ tools.
Overview
From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.
[](https://www.npmjs.com/package/@structured-world/gitlab-mcp) [](https://www.npmjs.com/package/@structured-world/gitlab-mcp) [](./LICENSE) [](https://github.com/structured-world/gitlab-mcp/actions) [](https://codecov.io/gh/structured-world/gitlab-mcp) [](https://gitlab-mcp.sw.foundation/coverage/)
Advanced GitLab MCP server — 58 CQRS tools exposing 231 GitLab operations across 26 entity types. The tool catalog and parameters are filtered to each instance's GitLab version, tier, and token scopes, so the agent sees only what the connected instance actually supports.
[](https://gitlab-mcp.sw.foundation/downloads/gitlab-mcp-10.1.0.mcpb) [](vscode:mcp/install?%7B%22name%22%3A%22gitlab-mcp%22%2C%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22%40structured-world%2Fgitlab-mcp%22%5D%7D) [](vscode-insiders:mcp/install?%7B%22name%22%3A%22gitlab-mcp%22%2C%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22%40structured-world%2Fgitlab-mcp%22%5D%7D)
Packages
This is a monorepo with two npm packages:
- **[
@structured-world/gitlab-mcp](https:/
ae74160da4f6OBSERVED · 2026-10-10Connect
Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control. Replace the environment placeholders with a token scoped to the least it needs.
claude mcp add gitlab-mcp --env GITLAB_TOKEN=${GITLAB_TOKEN} -- npx -y @structured-world/[email protected]Exposed tools (145)
117 read · 17 write · 11 destructive. Blast radius: 11 tools can delete or overwrite — an agent that can be talked into calling a tool can be talked into calling this one.
| Tool | Risk | Description |
|---|---|---|
ASSIGNEES | read | Assignee widget |
CUSTOM_FIELDS | read | Custom fields widget |
CUSTOM_WIDGET | read | Custom widget type |
Context | read | Runtime session context management |
Core | read | Projects, namespaces, users, events |
DESCRIPTION | read | Description widget |
Developer | read | Standard development workflow (issues, MRs, pipelines) |
EMPTY_WIDGET | read | Empty widget |
Integrations | read | Third-party service integrations |
Iterations | read | Sprint/iteration planning (Premium) |
LABELS | read | Labels widget |
Labels | read | Label browsing and management |
MILESTONE | read | Milestone widget |
Members | read | Team member management and access levels |
Milestones | read | Milestone tracking and burndown charts |
Read-Only | read | Read-only access for monitoring and viewing |
Releases | read | Release management and asset links |
Search | read | Global, project, and group search |
Snippets | read | Code snippet management |
Todos | read | Personal notification queue management |
WEIGHT | read | Weight widget |
Webhooks | read | Webhook configuration and testing |
Wiki | read | Wiki page browsing and editing |
all_required_patterns_tool | read | Tool with all required parameter naming patterns |
another_unknown | read | Perform another_unknown operation |
anyof_tool | read | Tool with anyOf schema |
array_tool | read | Tool with array schema |
browse_access_tokens | read | Inspect access tokens (CI/automation credentials). Actions: list_personal (the current user |
browse_commits | write | 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. |
browse_contract | read | Contract fixture |
browse_crossref_override | read | Original. Related: manage_something to do. |
browse_crossref_test | write | Browse items. Actions: list, get. Related: manage_crossref_test to modify. |
browse_deny_test | write | Browse items. Related: manage_deny_target to create. |
browse_deploy_keys | write | 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. |
browse_events | read | 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. |
browse_files | read | 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. |
browse_integrations | read | 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. |
browse_iterations | read | 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. |
browse_job_token_scope | read | 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. |
browse_labels | read | 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. |
browse_merge_requests | write | Browse MRs |
browse_milestones | read | 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. |
browse_mr_discussions | write | 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. |
browse_namespaces | read | 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. |
browse_no_related | read | Browse items without cross-refs. Actions: list, get. |
browse_override_test | write | Browse items. Related: manage_nonexistent to create. |
browse_pipelines | read | Browse pipelines |
browse_projects | read | 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. |
browse_readonly_test | write | Browse items. Related: manage_readonly_test to create. |
browse_refs | read | 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. |
browse_registry | read | Inspect the GitLab Container Registry. Actions: list_repositories (a project |
browse_releases | read | 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. |
browse_runners | read | Inspect CI runners. Actions: list_all (every runner on the instance - admin), list_owned (the current user |
browse_search | read | 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. |
browse_snippets | read | 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. |
browse_test | write | Browse test items. Actions: list, get. Related: manage_test to create/update. |
browse_tierless_crossref | read | Browse tierless items. Actions: list. Related: manage_tierless_crossref to modify. |
browse_tierless_ref | write | Browse items. Related: manage_tierless_ref to modify. |
browse_todos | read | 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. |
browse_users | read | 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. |
browse_variables | read | 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. |
browse_webhooks | read | 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. |
browse_wiki | read | 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. |
browse_with_ref | write | Browse items. Related: manage_with_ref to modify. |
browse_work_items | read | 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. |
complex_tool | read | Complex tool with various schema types |
core_readonly | read | Core readonly tool |
core_tool_1 | read | Core tool 1 |
create | write | Create new item |
custom_action | read | Perform custom_action operation |
delete | destructive | Delete an item |
detail_tool | read | Tool for detail testing |
developer | read | Developer preset |
enum_tool | read | Tool with enum-only schema |
error_tool | read | Error tool |
example_tool | read | Tool with various parameter names |
filter | read | Filter by type | status | priority |
flat_tool | read | Tool with flat schema |
free_tool | read | Tool that requires free tier |
full-featured | read | Full featured project |
get | read | Get single item |
get_profile | read | Identify the GitLab account this connection uses: a stable account id, display name, email when GitLab provides it, and the username with its instance. |
get_project | read | Get project details |
labels_readonly | read | Labels readonly |
labels_tool_1 | read | Labels tool 1 |
list | read | List all items |
list_projects | read | Core tool description |
manage_admin_only | read | Tool that requires active admin-mode elevation |
manage_all_denied | read | Tool whose only action is denied |
manage_context | read | Context management tool |
manage_crossref_test | read | Manage items. |
manage_deny_target | read | Manage items. |
manage_draft_notes | write | 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 |
manage_files | write | 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. |
manage_integration | write | 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. |
manage_label | destructive | Create, update, or delete project/group labels. Actions: create (name + hex color required), update (modify properties), delete (remove permanently). Related: browse_labels for discovery. |
manage_member | destructive | 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. |
manage_merge_request | write | Manage MR |
manage_milestone | destructive | 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. |
manage_pipeline | read | Manage pipeline |
manage_readonly_test | read | Manage items. |
manage_ref | destructive | 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. |
manage_registry | destructive | 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. |
manage_release | destructive | 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. |
manage_runner | read | 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. |
manage_snippet | destructive | 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. |
manage_tierless_crossref | read | Manage tierless items. |
manage_tierless_ref | read | Manage items. |
manage_todos | read | 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. |
manage_variable | destructive | 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. |
manage_vulnerability | read | 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. |
manage_webhook | destructive | 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. |
manage_wiki | destructive | 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. |
manage_with_ref | read | Manage items. |
mixed_params_tool | read | Tool with both common and action-specific parameters |
mixed_tier_tool | read | Tool with mixed tiers |
mrs_tool | read | MRS tool |
my_action | read | My action description |
native | read | Native output |
new-repo | read | A new repository |
no_params_tool | read | Tool with no parameters |
no_params_verbose_tool | read | Tool with empty schema for verbose testing |
no_req_tool | read | d |
oneof_tool | read | Tool with oneOf schema |
partial_req_tool | read | d |
premium_tool | read | Tool that requires premium tier |
readonly | read | Read-only preset |
ref_tool | read | Tool with $ref schema |
refinement_tool | read | Tool with schema refinements |
search | read | Search for items |
sorted_params_tool | read | Tool with params that need sorting |
specific_tool | read | Specific tool description |
test | read | Path is C:\\Users\\name |
test_tool | read | Test tool description |
tool_admin_param | read | Tool with an admin-gated param |
tool_with_params | read | Tool with tier-gated params |
ultimate_tool | read | Tool that requires ultimate tier |
unannotated_tool | read | no requirements |
unavailable_tool | read | Unavailable tool |
unknown_type_tool | read | Tool with unknown schema type |
unresolved_ref_tool | read | Tool with unresolved $ref |
update | write | Update item |
updated-name | read | New description |
v1.0.0 | read | Updated description with **markdown** |
verbose_tool | read | Tool for verbose testing |
Trust audit
CAUTIONgrade C · trust 78/100 Install with care. The audit found things worth knowing before you trust its output.
| Layer | What it checks | Result |
|---|---|---|
| L0 | Provenance & inventory | PASS |
| L1 | Static analysis of the code | WARN |
| L2 | Instruction surface (what it tells the agent) | PASS |
| L3 | Class-specific surface | WARN |
| L4 | Behavioural (sandbox) | SKIPPED |
What the source does
- Filesystem
- declared (4 observation(s))
- Network
- declared (2 observation(s))
- Shell
- declared (5 observation(s))
- Dependencies
- not all pinned
- Secrets in source
- found
Findings (25)
databaseUrl: 'postgresql://user:pa$word@host:5432/db',
delete, manage_label, manage_member, manage_milestone, manage_ref, manage_registry, manage_release, manage_snippet, manage_variable, manage_webhook, manage_wiki
.coderabbit.yaml
.release-please-manifest.json
.yarnrc.yml
.prettierignore
.prettierrc.json
console.log(` rotated project token on ${testProjectPath}`);console.log(` project-token lifecycle not permitted: ${(error as Error).message}`);console.log(` list_instance not available for this token: ${(error as Error).message}`);console.log(` list_all not available for this token: ${(error as Error).message}`);console.log(` Token: ${GITLAB_TOKEN ? '✅ Provided' : '❌ Missing'}`);# package.json (../../) carries the mirrored release version.
git add package.json README.md server.json ../../README.md ../../package.json ../gitlab-mcp-db/README.md
render_readme ../../README.md . .
import { issuerValidationError } from '../../oauth/config';import { enhancedFetch, GitLabTimeoutError } from '../../utils/fetch';url: `http://127.0.0.1:${server.address().port}`,baseUrl = `http://127.0.0.1:${(server.address() as AddressInfo).port}`;['http://127.0.0.1:3333/', 'http://127.0.0.1:3333'],
return `http://127.0.0.1:${address.port}`;url: `http://127.0.0.1:${port}`,rejectUnauthorized: false,
process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0';
nx
Gates applied: no_behavioural_pass.
ae74160da4f6full audit observations/trust-audit/mcp-server/structured-world__gitlab-mcp.json · Report an issue / request a re-scanAudit history
Every audit this server has had. A grade with a past is a grade somebody is still checking.
| Date | Source | Verdict | Grade | Score | Change |
|---|---|---|---|---|---|
| 2026-10-10 | ae74160da4f6 | CAUTION | C | 78 | first audit |
Questions
What is the gitlab-mcp MCP server?
GitLab MCP server — issues, merge requests, pipelines, code search. 80+ tools.
What tools does gitlab-mcp expose?
145 in total: 117 read-only, 17 that write, and 11 that can delete or overwrite (delete, manage_label, manage_member, manage_milestone, manage_ref). Every one is listed on this page with its risk.
Is gitlab-mcp safe to connect to an agent?
With care. The audit graded it C (78/100) and found 25 things worth knowing before you trust this server, listed below with the exact line each was found on. Separately from the audit: 11 of its tools can destroy data, so scope the token you give it to what you actually need.
What credentials does gitlab-mcp need?
It reads CORP_GITLAB_SECRET, GITLAB_AUTH_COOKIE_PATH, GITLAB_TOKEN, GITLAB_TOKEN_TEST, MISSING_SECRET, MISSING_TOKEN, MY_TOKEN, NODE_TLS_REJECT_UNAUTHORIZED, OAUTH_CLIENT, OAUTH_CLIENT_ID, OAUTH_CLIENT_SECRET and OAUTH_DEVICE_POLL_INTERVAL from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.
How does gitlab-mcp run?
It speaks sse, stdio and streamable-http, so it runs as a local process your client starts. It is published on npm as @structured-world/gitlab-mcp at 10.1.0.
How current is this page?
The grade is for one exact copy of the source (ae74160da4f6), read on 2026-10-10. The repository is watched and re-audited when it changes.