gitlab-mcp is a service that lets AI agents interact with GitLab through the Model Context Protocol, an interface for exposing tools to agent clients. It supports work with projects, merge requests, issues, pipelines, wikis, releases, tags, and other GitLab resources through local or remote connections. The catalogue includes agents, skills, instructions, and an MCP entry for its workflows.
Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add zereight/gitlab-mcp --skill gl-cligit clone --depth 1 https://github.com/zereight/gitlab-mcpWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/zereight/gitlab-mcp/gl-cli)<a href="https://agentmods.dev/skills/zereight/gitlab-mcp/gl-cli"><img src="https://agentmods.dev/badge/skills/zereight/gitlab-mcp/gl-cli/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/zereight/gitlab-mcp/gl-cli"><img src="https://agentmods.dev/badge/skills/zereight/gitlab-mcp/gl-cli.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00079 | $0.00920 |
| Opus 5.5 | $0.00032 | $0.00368 |
| Sonnet 5.5 | $0.00016 | $0.00184 |
| Haiku 4.5 | $0.00008 | $0.00092 |
Grade A, and why
gl-cli scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 4d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 77 lines — stays where its author put it; the contents beside it link to each section on GitHub.
gl-cli
zereight-mcp-gitlab (alias mcp-gitlab) is both the MCP server and a GitLab CLI. Run it with a command and it prints the result and exits. No MCP client is involved.
Full guide: docs/getting-started/cli-without-mcp.md.
1. Check credentials first
Run this before anything else and read the result:
zereight-mcp-gitlab user whoami
- Prints a user: credentials work, go to step 3.
Missing GitLab credentials(exit 2): go to step 2.401: token expired or under-scoped, redo step 2.command not found:npm install -g @zereight/mcp-gitlab.
2. Authenticate (ask the user which option)
Never invent, guess, or echo a token. Ask the user to run the command themselves, since it needs their secret.
A. Personal Access Token (fastest; scope read_api, or api to write)
read -rs GITLAB_PERSONAL_ACCESS_TOKEN && export GITLAB_PERSONAL_ACCESS_TOKEN
export GITLAB_API_URL=https://gitlab.example.com/api/v4 # omit for gitlab.com
GITLAB_PERSONAL_ACCESS_TOKEN_FILE can point at a token file instead. The process reads it once at startup and trims surrounding whitespace. If GITLAB_PERSONAL_ACCESS_TOKEN is already non-empty, the file is ignored and a warning is written to stderr.
B. OAuth device flow (needs a GitLab OAuth application ID)
export GITLAB_OAUTH_CLIENT_ID=YOUR_APP_ID
zereight-mcp-gitlab auth # open the printed URL, enter the code
export GITLAB_USE_OAUTH=true # needed on every later CLI call
Do not pass the token with --token; arguments are visible in ps.
3. Read merge requests
| Goal | Command |
|---|---|
| List open MRs | mr list --project-id <path|id> --state opened |
| MR summary | mr view --project-id <p> --mr-iid <n> |
| Changed file paths only | mr files --project-id <p> --mr-iid <n> |
| Full diff | mr diff --project-id <p> --mr-iid <n> |
| Review threads | mr discussions --project-id <p> --mr-iid <n> |
| MR pipelines | mr pipelines --project-id <p> --mr-iid <n> |
| Approval state | mr approvals --project-id <p> --mr-iid <n> |
| Anything else | tool <tool_name> --project-id <p> --args-json '{...}' |
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 4d ago Changed · +2 lines 0d261ec2f8b7
- 13d ago First seen · 75 lines · 79 tokens per session scan A 27e668a15013
gl-cli is a skill published in the GitHub repository zereight/gitlab-mcp (2,047 stars, last pushed today), licensed MIT. It adds 79 tokens to every session and 920 once invoked, about $0.0003 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-10-04.
Other skills, from other repositories
gitlab-merge-request-review
Review and merge GitLab merge requests via the gitlab-api MCP server — by default the MRs assigned to you or where you are a reviewer, optionally scoped to a project, group, or the whole instance. Read an MR, gate it on a green pipeline (pipeline → jobs → job log), then approve, accept/merge, or set…
gitlab-merge-request-create
Open a new GitLab merge request against a project via the gitlab-api MCP server — from a source branch into a target branch, with title, description, assignees, reviewers, labels, and remove-source-branch/squash options. Use when the agent must create/open an MR for a project. Do NOT use to review, approve, or merge…
create-pull-request
Generate a reviewer-ready pull request or merge request title and description from branch changes. Use when a user asks to draft PR/MR content, summarize branch deltas against a base branch, or optionally create the PR with gh/glab after approval.
git-commit-conventional
Create Conventional Commit messages and execute safe git commits from working tree changes. Use when users ask to create a commit, write a conventional commit message, split broad changes into multiple commits, stage only parts of files, run pre-commit before committing, or perform a quick commit-time quality review…
branch-surgery-pr-split
Split oversized or mixed-concern branches into smaller, reviewable PR stacks with safety refs, topology selection, parity audits, and merge sequencing. Use when a PR or branch is too large, difficult to review, mixed across concerns, conflict-prone, or needs to be decomposed without losing net changes.
repo-standardizer
Polish any GitHub repository's surface — labels (emoji rating tiers, P0–P3 priority, impact severity), issue forms, PR template, CI workflows, CODEOWNERS, rulesets, docs. Repo meta & config only — no code logic touched. Use when creating a new repo or polishing an existing one.