Connects Claude to any GitLab instance (gitlab.com, self-hosted, or enterprise) through the REST API. Exposes 27 tools across projects, groups, merge requests, issues, pipelines, and search. You can list and filter resources, create and update MRs and issues, comment on threads, check pipeline status, pull job logs, and search code across repos. Built with security focus: tokens stay local via stdio transport, input validation prevents injection attacks, and the codebase gets automated CVE scanning. Works through uvx, pip, or container. Needs a personal access token with read_api for viewing or full api scope for write operations. Useful when you want Claude to review MRs, triage issues, or check CI status without switching contexts.
A secure MCP (Model Context Protocol) server for GitLab projects, merge requests, issues, pipelines, and search. Works with any GitLab instance (gitlab.com, self-hosted, or enterprise).
This MCP server is designed to be:
quay.io/crunchtools/mcp-gitlab built on Hummingbird Python base image| Component | Name |
|---|---|
| GitHub repo | crunchtools/mcp-gitlab |
| Container | quay.io/crunchtools/mcp-gitlab |
| Python package (PyPI) | mcp-gitlab-crunchtools |
| CLI command | mcp-gitlab-crunchtools |
| Module import | mcp_gitlab_crunchtools |
The container image is built on the Hummingbird Python base image from Project Hummingbird, which provides:
list_projects - List projects with filtering and searchget_project - Get project details by ID or pathlist_project_branches - List repository branchesget_project_branch - Get a single branchlist_project_commits - List commits with date/path filteringlist_groups - List groups with filteringget_group - Get group details by ID or pathlist_group_projects - List projects in a group (with subgroup support)list_merge_requests - List MRs by state, labels, milestoneget_merge_request - Get MR detailscreate_merge_request - Create a new MRupdate_merge_request - Update MR title, description, state, assigneeslist_mr_notes - List comments on an MRcreate_mr_note - Add a comment to an MRget_mr_changes - Get the diff for an MRlist_issues - List issues by state, labels, milestone, assigneeget_issue - Get issue detailscreate_issue - Create a new issueupdate_issue - Update issue title, description, state, labelslist_issue_notes - List comments on an issuecreate_issue_note - Add a comment to an issuelist_pipelines - List CI/CD pipelines with status filteringget_pipeline - Get pipeline detailslist_pipeline_jobs - List jobs in a pipelineget_job_log - Get job log outputsearch_global - Search across all accessible GitLab resourcessearch_project - Search within a specific projectuvx mcp-gitlab-crunchtools
pip install mcp-gitlab-crunchtools
podman run -e GITLAB_TOKEN=your_token \
quay.io/crunchtools/mcp-gitlab
| Variable | Required | Default | Description |
|---|---|---|---|
GITLAB_TOKEN | Yes | — | Personal Access Token |
GITLAB_URL | No | https://gitlab.com | GitLab instance URL |
Navigate to Access Tokens
Create a Custom Token
mcp-gitlab-crunchtoolsScope Selection
| Scope | Access Level | Capabilities |
|---|---|---|
read_api | Read-only | List/view projects, issues, MRs, pipelines |
api | Full access | All features including create/update |
Copy and Store Token
glpat-)claude mcp add mcp-gitlab-crunchtools \
--env GITLAB_TOKEN=your_token_here \
-- uvx mcp-gitlab-crunchtools
For self-hosted GitLab:
claude mcp add mcp-gitlab-crunchtools \
--env GITLAB_TOKEN=your_token_here \
--env GITLAB_URL=https://gitlab.example.com \
-- uvx mcp-gitlab-crunchtools
For the container version:
claude mcp add mcp-gitlab-crunchtools \
--env GITLAB_TOKEN=your_token_here \
-- podman run -i --rm -e GITLAB_TOKEN quay.io/crunchtools/mcp-gitlab
User: List my GitLab projects
Assistant: [calls list_projects with membership=true]
User: Show open merge requests for my-org/backend
Assistant: [calls list_merge_requests with project_id="my-org/backend"]
User: Create an issue in my-org/backend titled "Fix login timeout"
Assistant: [calls create_issue with title="Fix login timeout"]
User: Show failed pipelines for my-org/api
Assistant: [calls list_pipelines with status="failed"]
User: Search for "authentication" in my-org/backend
Assistant: [calls search_project with scope="blobs"]
This server was designed with security as a primary concern. See SECURITY.md for:
Token Protection
Input Validation
API Hardening
Automated CVE Scanning
git clone https://github.com/crunchtools/mcp-gitlab.git
cd mcp-gitlab
uv sync
uv run pytest
uv run ruff check src tests
uv run mypy src
podman build -t mcp-gitlab .
AGPL-3.0-or-later
Contributions welcome! Please read SECURITY.md before submitting security-related changes.
ray0907/git-mcp-server
cyanheads/git-mcp-server
io.github.b1ff/atlassian-dc-mcp-bitbucket
io.github.b1ff/atlassian-dc-mcp-jira
com.mcparmory/atlassian-jira
sirlordt/vscode-terminal-mcp