A Model Context Protocol (MCP) server that lets Claude Code (or any MCP client) operate GitLab end-to-end. ~50 typed tools covering the full DevOps lifecycle.
| Category | Tools |
|---|---|
| Repo & branch | clone, batch commit, branch creation, file ops |
| Pipelines | trigger, monitor, retry, cancel |
| CI generation | generate .gitlab-ci.yml for common stacks (Node, Python, Go, generic) |
| Security scans | SAST, DAST, secret detection, dependency, container scanning |
| Pipeline failure analysis | log fetching, root-cause classification, suggested fix |
| Runners | register local runners, pause/unpause, retag |
| Access tokens | full lifecycle for personal / project / group tokens |
| Merge requests | create, list, merge, comment |
GitLab automation is normally split across glab, the GitLab API, ad-hoc Python scripts, and CI YAML. This MCP server exposes everything as a single set of typed tools that an AI agent (or human via chat) can call.
pip install -r requirements.txt
cp .env.example .env
# Edit .env — set GITLAB_TOKENAdd to your MCP client config:
{
"mcpServers": {
"gitlab-devops": {
"command": "python3",
"args": ["/absolute/path/to/server.py"]
}
}
}In any MCP client:
- "Generate a Terraform pipeline for project X"
- "Why did pipeline 12345 fail?" → reads logs, classifies, suggests fix
- "Run a SAST scan on the latest commit"
- "List all my open MRs across all projects"
- "Revoke the leaked access token in the my-org/my-repo group"
Modular — each capability area lives in its own file under tools/:
tools/
├── gitlab_repo.py # repos, branches, files
├── gitlab_pipeline.py # CI/CD lifecycle
├── ci_generator.py # YAML scaffolding
├── gitlab_security.py # SAST / DAST / scans
├── gitlab_runner.py # runner registration
├── error_analyzer.py # log → root cause → fix
└── gitlab_tokens.py # access token lifecycle
MIT — see LICENSE.
See SUPPORT.md for community + commercial support.