Developer-ready GitLab MCP server for CE and EE instances.
Runs on your machine from its package; the steps are below.
Not assessed yet.
Odel charges nothing per call. The publisher may charge for its own service.
Runs locally over stdio
This server isn't hosted — your MCP client launches it from a package registry. Use one of the commands below, or drop the config into your client (e.g. Claude Desktop).
Run
npx -y @sumirati/mcp-gitlab
MCP client config
{
"mcpServers": {
"gitlab-mcp-server": {
"command": "npx",
"args": [
"-y",
"@sumirati/mcp-gitlab"
]
}
}
}@sumirati/mcp-gitlab)A robust, developer-ready, and LLM-ergonomic Model Context Protocol (MCP) server for both self-hosted GitLab Community Edition (CE) and GitLab Enterprise Edition (EE).
MCP-gitlab provides high-signal, LLM-optimized access to GitLab instances. Rather than dumping raw API payloads, it focuses on context efficiency, developer ergonomics, and native AI pair-programming workflows for codebase management, task coordination, CI/CD observability, and release delivery.
milestone_title to internal numeric IDs.issue_links): First-class tracking of blocks, is_blocked_by, and relates_to relationships for AI roadmap planning and dependency graphs.issue_notes): Post progress logs, test results, or design rationale directly to issues without modifying descriptions.running, failed, success).get_job_trace): Safely tail test/build logs (tail_lines) so agents can inspect stack traces directly without token overflow.get_pipeline_test_report): High-level test suite breakdowns (total, passed, failed, failure messages).vX.Y.Z).get_merge_request_changes): Review code diffs and post review comments (create_merge_request_note).'group/project-name' vs numeric 31), milestone titles, and label strings/arrays.npx (No installation needed)npx -y @sumirati/mcp-gitlab
npm install -g @sumirati/mcp-gitlab
mcp-gitlab
git clone https://github.com/sumirati/mcp-gitlab.git
# Or from GitLab.com:
# git clone https://gitlab.com/sumirati/mcp-gitlab.git
cd mcp-gitlab
npm install
node index.js
Configure the following environment variables (or copy .env.example to .env):
| Variable | Required | Default | Description |
|---|---|---|---|
GITLAB_PERSONAL_ACCESS_TOKEN | Yes | — | Personal access token with api scope. |
GITLAB_API_URL | No | https://gitlab.com/api/v4 | Base API URL of your GitLab CE/EE or cloud instance. |
Add to your MCP configuration file (mcp_config.json or claude_desktop_config.json):
{
"mcpServers": {
"gitlab": {
"command": "npx",
"args": ["-y", "@sumirati/mcp-gitlab"],
"env": {
"GITLAB_PERSONAL_ACCESS_TOKEN": "<your-gitlab-token>",
"GITLAB_API_URL": "https://gitlab.example.com/api/v4"
}
}
}
}
{
"mcpServers": {
"gitlab": {
"command": "node",
"args": ["/path/to/MCP-gitlab/index.js"],
"env": {
"GITLAB_PERSONAL_ACCESS_TOKEN": "<your-gitlab-token>",
"GITLAB_API_URL": "https://gitlab.example.com/api/v4"
}
}
}
}
The server exposes 39 tools organized across key functional domains:
| Tool | Description |
|---|---|
search_repositories | Search projects and repositories by query with pagination |
create_repository | Create a new GitLab project/repository |
get_file_contents | Read file or directory content from a repository |
create_or_update_file | Create or update a single file with commit message |
push_files | Commit multiple files in a single atomic commit |
fork_repository | Fork a project into a user or group namespace |
create_branch | Create a new branch from a commit, tag, or branch |
| Tool | Description |
|---|---|
list_issues | List and filter issues (state, milestone, labels, assignee) |
get_issue | Get details for an issue by project-scoped IID (#<iid>) |
create_issue | Create an issue with title, description, milestone, and labels |
update_issue | Update issue title, state, milestone, labels, or assignees |
list_issue_notes | List discussions, comments, and activity log on an issue |
create_issue_note | Post a comment or progress/verification note to an issue |
list_issue_links | List related, blocking, or blocked-by issue dependencies |
create_issue_link | Create an issue dependency (relates_to, blocks, is_blocked_by) |
| Tool | Description |
|---|---|
list_milestones | List project milestones with start and due dates |
get_milestone | Get details for a milestone by numeric ID |
create_milestone | Create a project milestone with due dates |
update_milestone | Update milestone title, dates, description, or state |
list_labels | List labels available in the project |
create_label | Create a project label with color hex and description |
| Tool | Description |
|---|---|
list_pipelines | List CI/CD pipelines filtered by branch, tag, status, or SHA |
get_pipeline | Get pipeline status, duration, and commit information |
create_pipeline | Trigger a new CI/CD pipeline execution for a branch/tag |
list_pipeline_jobs | List all jobs (build, test, deploy) and status in a pipeline |
get_job_trace | Inspect terminal output log of a job with safe tail_lines |
get_pipeline_test_report | Get JUnit test report summary (passed/failed suites, error traces) |
| Tool | Description |
|---|---|
list_releases | List published releases and changelogs |
get_release | Get release details by tag name |
create_release | Publish a formal release with tag, changelog, and milestones |
list_tags | List Git tags in the repository |
create_tag | Create a Git tag pointing to a branch or commit |
| Tool | Description |
|---|---|
list_merge_requests | List merge requests filtered by state, branches, milestone, labels |
get_merge_request | Get merge request details and status by IID (!<iid>) |
create_merge_request | Create a merge request between branches |
update_merge_request | Update MR title, description, state, milestone, or labels |
get_merge_request_changes | Inspect code diffs and modified files in an MR |
accept_merge_request | Merge an approved MR with squash and branch cleanup flags |
create_merge_request_note | Post a review comment or note on a merge request |
GITLAB_READ_ONLY=true): Safeguard enabling AI agents to read, query, and diagnose GitLab assets without permission to perform write operations, commits, or state changes.create_diff_discussion).This project incorporates architectural concepts, schemas, and patterns from:
@modelcontextprotocol/server-gitlab (MIT License) — Copyright (c) 2024 Anthropic, PBC / GitLab, PBC. Baseline repository and file schema patterns.@modelcontextprotocol/sdk (MIT License) — Copyright (c) Anthropic, PBC.zod & zod-to-json-schema (MIT License) — Colin McDonnell & Stefan Evertsson.Vijay-Duke/mcp-gitlab and zereight/gitlab-mcp.See NOTICE for complete third-party attribution details.
This project is licensed under the MIT License — Copyright (c) 2026 sumirati@buggycode.net.