Agent skill · Audited from source
gitlab-mcp-skill
skill · zereight/gitlab-mcpMIT licenceAudited 21 Oct 2026 · source 42b8d1d892d9
Is it safe? With care — CAUTION, grade F (48/100). We read this skill's source at commit 42b8d1d892d9 and observed filesystem and network access and a hard-coded secret (see the findings). The audit raised 25 findings, 0 critical or high. What it does: Use this skill when working with the GitLab MCP server tools for merge requests, issues, repositories, pipelines, work items, variables, dependency proxy, vulnerabilities, webhooks, search, CI catalog, and related…
Cite
Cite this page
ModelsAtlas. “gitlab-mcp-skill (zereight/gitlab-mcp)”. Retrieved 21 Oct 2026. https://modelsatlas.com/skills/zereight/gitlab-mcp-skill
Trust audit
Audit 0.4.1 · source read 21 Oct 2026
CAUTION means the audit found things worth knowing before you trust this skill. Grade F is shared by 105 of 14,816 audited skills.
What the source does
- FilesystemDeclared3 observations
- NetworkDeclared9 observations
- ShellNone observedNo commands run in the source
- DependenciesNot pinnedSome versions float
- SecretsFoundSee the findings; values are never shown
Five audit layers
| Layer | What we check | Result | Findings |
|---|---|---|---|
L0 Provenance | Repo owner, licence, archive status, activity | PASS | 5 |
L1 Static source | Secrets, path traversal, supply chain, hidden code | WARN | 20 |
L2 Instructions | Prompt injection, authority framing, hidden directives | PASS | 0 |
L3 Inventory | The files and declarations match the source | PASS | 0 |
L4 Sandbox | Run in isolation and watch behaviour | SKIPPED why | 0 |
Gates applied: no behavioural pass.
Findings (25)
MEDIUMInformation disclosuredisclose.log_secret · oauth-proxy.ts:703
logger.error(`Token exchange failed (${response.status}): ${body}`);- Why
- No further detail recorded for this rule.
- Fix
- —
MEDIUMInformation disclosuredisclose.log_secret · oauth-proxy.ts:828
logger.error(`Token refresh failed (${response.status}): ${body}`);- Why
- No further detail recorded for this rule.
- Fix
- —
MEDIUMInformation disclosuredisclose.log_secret · oauth-proxy.ts:997
logger.error(`Callback token exchange failed (${tokenResponse.status}): ${body}`);- Why
- No further detail recorded for this rule.
- Fix
- —
MEDIUMInformation disclosuredisclose.log_secret · oauth.ts:440
logger.info(`Token saved to ${this.tokenStoragePath}`);- Why
- No further detail recorded for this rule.
- Fix
- —
MEDIUMNetwork egressnet.raw_ip · .env.example:22
# GITLAB_OAUTH_REDIRECT_URI=http://127.0.0.1:8888/callback
- Why
- No further detail recorded for this rule.
- Fix
- —
MEDIUMNetwork egressnet.raw_ip · Makefile:25
serve: install ## Preview docs at http://127.0.0.1:8000 (auto-reload)
- Why
- No further detail recorded for this rule.
- Fix
- —
MEDIUMHard-coded secretssecret.generic · test/stateless/session-id.test.ts:38
token: "…",
- Why
- No further detail recorded for this rule.
- Fix
- —
MEDIUMHard-coded secretssecret.generic · test/stateless/session-id.test.ts:52
token: "…",
- Why
- No further detail recorded for this rule.
- Fix
- —
MEDIUMHard-coded secretssecret.generic · test/stateless/session-id.test.ts:66
token: "…",
- Why
- No further detail recorded for this rule.
- Fix
- —
MEDIUMHard-coded secretssecret.generic · test/stateless/session-id.test.ts:82
token: "…",
- Why
- No further detail recorded for this rule.
- Fix
- —
MEDIUMHard-coded secretssecret.generic · test/test-gitlab-api-request.ts:13
const TOKEN = "…";
- Why
- No further detail recorded for this rule.
- Fix
- —
LOWInformation disclosuredisclose.log_secret · test/mcp-oauth-tests.ts:363
console.log(` ✓ Valid token accepted (status: ${res.status})`);- Why
- No further detail recorded for this rule.
- Fix
- —
LOWFilesystem / pathfs.traversal · mcp-server/test/run-tests.mjs:32
assert.throws(() => validateMode("../../etc"), /Invalid mode name/);- Why
- No further detail recorded for this rule.
- Fix
- —
LOWFilesystem / pathfs.traversal · mcp-server/test/run-tests.mjs:150
assert.throws(() => getStatePath("../../etc"), /Invalid mode name/);- Why
- No further detail recorded for this rule.
- Fix
- —
LOWFilesystem / pathfs.traversal · server/version.ts:12
path.resolve(__dirname, "../../package.json"),
- Why
- No further detail recorded for this rule.
- Fix
- —
LOWFilesystem / pathfs.traversal · test/callback-proxy-redirect-policy.test.ts:282
"https://claude.ai/api/mcp/auth_callback/../../steal",
- Why
- No further detail recorded for this rule.
- Fix
- —
LOWFilesystem / pathfs.traversal · test/cli/args.test.ts:3
import { allTools } from "../../tools/registry.js";- Why
- No further detail recorded for this rule.
- Fix
- —
LOWNetwork egressnet.beacon_words · test/oauth-consent.test.ts:21
const CALLBACK_URL = "https://mcp.example.com/callback";
- Why
- No further detail recorded for this rule.
- Fix
- —
LOWNetwork egressnet.beacon_words · test/oauth-consent.test.ts:108
const { stateless = null, callbackProxy = true, allowed, callbackUrl = CALLBACK_URL } = options;- Why
- No further detail recorded for this rule.
- Fix
- —
LOWNetwork egressnet.beacon_words · test/stateless/callback-proxy.test.ts:38
const CALLBACK_URL = "https://mcp.example.com/callback";
- Why
- No further detail recorded for this rule.
- Fix
- —
Audit 0.4.1 · source sha 42b8d1d892d9 · 21 Oct 2026Report an issue or request a re-scan
Provenance
Who published it, and what the verdict is pinned to
- Publisherzereight GitHub userOwner of the repository this skill is read from
- Source folderzereight/gitlab-mcpThe exact folder we audited
- LicenceMITAs the repository states it
- Commit pinned for this verdict42b8d1d892d9A new audit runs when the source changes
- Repository statusNot archivedPushed today
- Sandboxed runNot runSkills are read, not executed; layer L4 is skipped
What it tells the agent
Full source on GitHub ↗Its description: Use this skill when working with the GitLab MCP server tools for merge requests, issues, repositories, pipelines, work items, variables, dependency proxy, vulnerabilities, webhooks, search, CI catalog, and related…
--- name: gitlab-mcp-skill description: Use this skill when working with the GitLab MCP server tools for merge requests, issues, repositories, pipelines, work items, variables, dependency proxy, vulnerabilities, webhooks, search, CI catalog, and related GitLab workflows. --- # gitlab-mcp GitLab MCP server providing 276 tools: 274 tools across 24 toolsets, plus `execute_graphql` and the always-available `discover_tools` meta-tool. For exact generated parameter tables, see `docs/tools/`. Use this file for workflow shape and high-signal parameter hints. ## Toolsets | Toolset | Default | Enable with | |---|---|---| | core (38 tools) | yes | default lean starter set | | merge_requests (46 tools) | no | `GITLAB_TOOLSETS=merge_requests` | | issues (24 tools) | no | `GITLAB_TOOLSETS=issues` | | repositories (7 tools) | no | `GITLAB_TOOLSETS=repositories` | | branches (15 tools) | no | `GITLAB_TOOLSETS=branches` | | projects (11 tools) | no | `GITLAB_TOOLSETS=projects` | | labels (5 tools) | no | `GITLAB_TOOLSETS=labels` | | ci (4 tools) | no | `GITLAB_TOOLSETS=ci` | | groups (1 tool) | no | `GITLAB_TOOLSETS=groups` | | users (7 tools) | no | `GITLAB_TOOLSETS=users` | | pipelines (58 tools) | no | `GITLAB_TOOLSETS=core,pipelines` (deprecated `USE_PIPELINE`; if `GITLAB_TOOLS` is unset, set `GITLAB_TOOLS=validate_ci_lint,validate_project_ci_lint`, otherwise append those tools instead of replacing the list) | | milestones (17 tools) | no | `GITLAB_TOOLSETS=core,milestones` (deprecated `USE_MILESTONE`) | | wiki (10 tools) | no | `GITLAB_TOOLSETS=core,wiki` (deprecated `USE_GITLAB_WIKI`) | | releases (7 tools) | no | `GITLAB_TOOLSETS=releases` | | tags (9 tools) | no | `GITLAB_TOOLSETS=tags` | | snippets (5 tools) | no | `GITLAB_TOOLSETS=snippets` | | workitems (18 tools) | no | `GITLAB_TOOLSETS=workitems` | | webhooks (6 tools) | no | `GITLAB_TOOLSETS=webhooks` | | search (3 tools) | no | `GITLAB_TOOLSETS=search` | | variables (10 tools) | no | `GITLAB_TOOLSETS=variables` | | dependency_proxy (4 tools) | no | `GITLAB_TOOLSETS=dependency_proxy` | | vulnerabilities (4 tools) | no | `GITLAB_TOOLSETS=vulnerabilities` | | orbit (4 tools) | no | `GITLAB_TOOLSETS=orbit` | | api (1 tool) | no | `GITLAB_TOOLSETS=api` only (not `all`, not `discover_tools`, not `GITLAB_TOOLS`) | Enable all discoverable toolsets: `GITLAB_TOOLSETS=all` (does **not** enable `api`). Restore the pre-lean default with `GITLAB_TOOLSETS=merge_requests,issues,repositories,branches,projects,labels,ci,groups,users`. Use `GITLAB_TOOLS` to enable individual tools outside their toolset, except explicit-only tools such as `gitlab_api_request`. `discover_tools` can list and activate opt-in categories for the current session, except `api`. `execute_graphql` is not in a toolset; enable it explicitly with `GITLAB_TOOLS=execute_graphql`. `USE_GITLAB_WIKI`, `USE_MILESTONE`, and `USE_PIPELINE` are deprecated (removed in next major (v3.0.0)). If you already set `GITLAB_TOOLSETS`, append the toolset to your existing list instead of replacing it. If `GITLAB_TOOLS` is unset, set `GITLAB_TOOLS=validate_ci_lint,validate_project_ci_lint`. If it is already set, append those two tools instead of replacing that list. `gitlab_api_request` bypasses `GITLAB_ALLOWED_GROUPS` and other group restrictions, project allowlists, tool-level restrictions (`GITLAB_TOOLS`, `GITLAB_DENIED_TOOLS_REGEX` on other tools), and individual tool safety checks. The full token permission scope is exposed. Prompt injection can drive this tool. Operators who rely on these restrictions must NOT enable it. `GITLAB_ALLOWED_PROJECT_IDS` is checked only for `/projects/:id` paths; `/search`, `/users`, `/groups/:id`, and `/runners` are not constrained. `GITLAB_PROJECT_ID` and OAuth group allowlists are not enforced. The per-toolset counts above sum to 314 because the 38 `core` tools are each also listed in their full category (`get_branch` and `list_branches` additionally appear in both `merge_requests` and `branches`); the unique tool count across all toolsets is 274. ## Key Workflows ### Code Review (see reference/code-review.md) 1. `list_merge_request_changed_files` - get file paths only (no diffs) 2. `get_merge_request_file_diff` - get diffs for 3-5 files per call (batch) 3. `create_merge_request_thread` or `create_draft_note` - leave review comments 4. `bulk_publish_draft_notes` - publish all drafts at once ### MR Lifecycle (see reference/merge-requests.md) `create_merge_request` -> review -> `approve_merge_request` -> `merge_merge_request` ### Issue Management (see reference/issues.md) `create_issue` -> `create_issue_link` -> `create_issue_note` -> `update_issue` Use `update_issue_description_patch` for small edits to long issue descriptions instead of resending the full body. ### Projects & Namespaces - `get_project`, `list_projects`, `update_project` - inspect or change project settings - `list_project_members`, `list_group_members` - search members by name or username within a project or group - `list_namespaces`, `get_namespace`, `verify_namespace` - find target namespaces before creating projects/groups - `verify_namespace.parent_id` scopes nested namespace checks - `create_repository.namespace_id` creates a project under a group namespace ### Branches & Commits - `create_branch`, `list_branches`, `get_branch`, `delete_branch` - Protected branches: `list_protected_branches`, `get_protected_branch`, `protect_branch`, `unprotect_branch`, `update_default_branch` - Commits: `list_commits`, `get_commit`, `get_commit_diff`, `get_file_blame`, `list_commit_statuses`, `create_commit_status` ### Tags - `list_tags`, `get_tag`, `create_tag`, `delete_tag`, `get_tag_signature` - Protected tags: `list_protected_tags`, `get_protected_tag`, `protect_tag`, `unprotect_tag` (`create_access_level` is 0, 30, or 40; wildcards such as `v*` are supported) ### CI - Lint configs: `validate_ci_lint`, `validate_project_ci_lint` - Catalog: `list_ci_catalog_resources`, `get_ci_catalog_res
Excerpt, first 6,000 characters of SKILL.md, verbatim from the audited commit. It is text from someone else’s repository, quoted so you can judge it before your agent reads it.
Install
Pinned to the audited commit 42b8d1d
git clone https://github.com/zereight/gitlab-mcp.git npm install npm install -g @zereight/mcp-gitlab npx skills add zereight/gitlab-mcp --skill gitlab-mcp-skill
git clone https://github.com/zereight/gitlab-mcp git -C gitlab-mcp checkout 42b8d1d892d9
Commands as the repository documents them: shown, never run by us. Our verdict covers commit 42b8d1d892d9 only.
Works in which agents?
What its own text says, not a test
| Agent | Status | More |
|---|---|---|
| Claude Code | Mentioned in its text, not tested | Skills for Claude Code · About Claude Code |
| Claude Desktop | Mentioned in its text, not tested | Skills for Claude Desktop · About Claude Desktop |
| Codex | Mentioned in its text, not tested | Skills for Codex · About Codex |
| GitHub Copilot | Mentioned in its text, not tested | Skills for GitHub Copilot · About GitHub Copilot |
| Cursor | Mentioned in its text, not tested | Skills for Cursor · About Cursor |
| Gemini CLI | Mentioned in its text, not tested | Skills for Gemini CLI · About Gemini CLI |
| OpenClaw | Mentioned in its text, not tested | Skills for OpenClaw · About OpenClaw |
Audit history
Every audit, every source change
- !CAUTION F 48 / 100
first audit · source
42b8d1d892d9
README badge
For maintainers · shows the latest audit
[](https://modelsatlas.com/skills/zereight/gitlab-mcp-skill/)
The badge shows our verdict and grade for this skill, and links back to this page. It changes when the audit does.
Similar skills
All coding & review skills →affaan-m/everything-claude-code
[DEPRECATED - use continuous-learning-v2] Legacy v1 stop-hook skill extractor. v2 is a strict superset with instinct-based, project-scoped, hook-reliable learning. Do not invoke v1: when continuous learning, session…
affaan-m/everything-claude-code
Instinct-based learning system that observes sessions via hooks, creates atomic instincts with confidence scoring, and evolves them into skills/commands/agents. v2.1 adds project-scoped instincts to prevent…
affaan-m/everything-claude-code
Run the conversational ECC setup wizard inside the current harness: inventory the install, collect scope (user/project/local) and hook mode (off/minimal/standard/strict) in Claude Code, use Codex's native plugin…
affaan-m/everything-claude-code
Garbage collection for your Claude Code configuration. Periodically scans ~/.claude (skills, memory, hooks, permissions, MCP servers, caches) for redundant, stale, orphaned, or low-value items, then walks the user…
affaan-m/everything-claude-code
Assemble scored competitor profile cards (from benchmark-methodology) into a decision-grade competitive report with landscape map, competitor tiers, benchmarking matrix, white-space analysis, strategic recommendations,…
affaan-m/everything-claude-code
Use when scoping a competitive landscape — identifying, categorising, and score-filtering a competitor set before any benchmarking begins. Decides who counts as a competitor, which tier they belong to, and which sources…
Add this badge to your README
[](https://modelsatlas.com/skills/zereight/gitlab-mcp-skill/)
<a href="https://modelsatlas.com/skills/zereight/gitlab-mcp-skill/"><img src="https://modelsatlas.com/skills/zereight/gitlab-mcp-skill/badge.svg" alt="ModelsAtlas: CAUTION F"></a>
Questions about gitlab-mcp-skill
What does the gitlab-mcp-skill skill do?
Is gitlab-mcp-skill safe to install?
What can gitlab-mcp-skill access on my machine?
Which assistants does gitlab-mcp-skill work with?
How current is this page?
Sources
- github.com/zereight/gitlab-mcp — the audited source at commit 42b8d1d892d9 and every finding aboveObserved · 21 Oct 2026
Spotted something wrong? Report a correction · Methodology
Keep going in your AI
Opens with this page as the source. We add nothing else to the prompt.
- What does the gitlab-mcp-skill skill do?
- Is gitlab-mcp-skill safe to install?
- What can gitlab-mcp-skill access on my machine?