md-gitlab-mcp
Provides tools for interacting with GitLab's REST API, enabling AI agents to manage projects, merge requests, issues, global search, and more across GitLab instances, data centers, and cloud.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@md-gitlab-mcp create a merge request from branch 'feature' to 'main' with title 'Add login'"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
md-gitlab-mcp π¦
A fully-featured GitLab MCP Server tailored to behave like the GitHub MCP but specifically engineered for GitLab Data Centers, Instances, and Cloud.
md-gitlab-mcp is a Model Context Protocol (MCP) server written in TypeScript. It gives AI agents the powerful ability to interact deeply with GitLab via the REST API. This goes far beyond basic issue tracking and provides 25 advanced capabilities, identically structured to the famous GitHub MCP tools.
Features
This server exports an extensive list of tools allowing AI agents to:
Repositories: Search projects, create projects, get file contents, and importantly, push multi-file commits correctly using branching.
Merge Requests (PR Equivalents): Create MRs, approve MRs, list files changed globally, merge them, check CI/CD pipeline status, rebase, and comprehensively read notes/comments.
Issues: Create, list, search, update, and comment on issues seamlessly.
Search: Access Global Search to easily find issues, users, and code snippets across your entire GitLab instance.
Related MCP server: GitLab MCP Server
Why this exists?
The default @modelcontextprotocol/server-gitlab provides very limited tools (around 9 commands) and completely lacks operations regarding code review, reading pull request/merge request threads, or resolving discussions.
md-gitlab-mcp bridges this gap, adopting GitHub's best-practice MCP schema standards and flawlessly translating semantics (projects -> repos, merge requests -> pull requests internally but honoring GitLab's API structure) while delivering complete access to GitLab's API.
Usage
Agents powered by this MCP will see properly annotated tools with parameter descriptions via zod-to-json-schema, meaning the AI inherently knows exactly how to query your repositories without hallucination.
Quick Start (Roo Code / Cline)
You can directly add this to your mcp_settings.json:
{
"mcpServers": {
"gitlab": {
"command": "node",
"args": [
"/path/to/md-gitlab-mcp/build/index.js"
],
"env": {
"GITLAB_API_URL": "https://gitlab.example.dev/api/v4",
"GITLAB_PERSONAL_ACCESS_TOKEN": "your-access-token"
}
}
}
}Connecting with the Author
This tool is handcrafted and maintained by Mikita Dusmikeev. Check out my work and connect on social media:
π Website: md-code.space
π» GitHub: github.com/DrBoria
π VS Code Marketplace: drboria Extensions
π LinkedIn: Mikita Dusmikeev
πΈ Instagram: @mdcode.official
π± TikTok: @mdcode.official
Created in 2026. Code like there's no tomorrow.
Available Tools
27 toolsadd_issue_commentB
Add a comment to an existing issue
Inputs: body (required), repo (required), owner (required), issueIid (required).
create_branchB
Create a new branch in a GitLab repository
Inputs: repo (required), owner (required), branch (required), fromBranch.
create_issueB
Create a new issue in a GitLab repository
Inputs: repo (required), owner (required), title (required), body, +3 more.
create_merge_requestB
Create a new merge request in a GitLab repository
Inputs: base (required), head (required), repo (required), owner (required), +3 more.
create_merge_request_reviewC
Create a review/approval on a merge request
Inputs: body (required), repo (required), event (required), owner (required), +1 more.
create_repositoryA
Create a new GitLab project in your namespace
Inputs: name (required), autoInit, isPrivate, description.
fork_repositoryA
Fork a GitLab project to your account or specified namespace
Inputs: repo (required), owner (required), organization.
get_file_contentsC
Get the contents of a file or directory from a GitLab repository
Inputs: path (required), repo (required), owner (required), branch.
get_issueA
Get details of a specific issue in a GitLab repository
Inputs: repo (required), owner (required), issueIid (required).
get_merge_requestC
Get details of a specific merge request
Inputs: repo (required), owner (required), mergeRequestIid (required).
get_merge_request_by_urlA
Fetch merge request details using a full URL
Inputs: url (required).
get_merge_request_commentsB
Get the review comments/notes on a merge request
Inputs: repo (required), owner (required), mergeRequestIid (required).
get_merge_request_comments_by_urlA
Fetch merge request comments using a full URL
Inputs: url (required).
get_merge_request_filesA
Get the list of files changed in a merge request
Inputs: repo (required), owner (required), mergeRequestIid (required).
get_merge_request_reviewsB
Get the reviews/approvals on a merge request
Inputs: repo (required), owner (required), mergeRequestIid (required).
get_merge_request_statusA
Get the combined status of all status checks (pipelines) for a merge request
Inputs: repo (required), owner (required), mergeRequestIid (required).
list_commitsA
Get list of commits of a branch in a GitLab repository
Inputs: repo (required), owner (required), sha, page, +1 more.
list_issuesB
List issues in a GitLab repository with filtering options
Inputs: repo (required), owner (required), page, state, +2 more.
list_merge_requestsC
List and filter repository merge requests
Inputs: repo (required), owner (required), page, state, +1 more.
merge_merge_requestC
Merge a merge request
Inputs: repo (required), owner (required), mergeRequestIid (required), commitMessage.
push_filesB
Push multiple files to a GitLab repository in a single commit
Inputs: repo (required), files (required), owner (required), branch (required), +1 more.
search_codeC
Search for code across GitLab repositories
Inputs: q (required), page, perPage.
search_issuesA
Search for issues and merge requests across GitLab repositories
Inputs: q (required), page, perPage.
search_repositoriesC
Search for GitLab projects
Inputs: query (required), page, perPage.
search_usersB
Search for users on GitLab
Inputs: q (required), page, perPage.
update_issueC
Update an existing issue in a GitLab repository
Inputs: repo (required), owner (required), issueIid (required), body, +3 more.
update_merge_request_branchA
Update a merge request branch with the latest changes from the target branch (rebase)
Inputs: repo (required), owner (required), mergeRequestIid (required).
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelogβ¦
TDQS
Scored across 27 tools
Most tools target a distinct resource/action, and search/create/get/list are clearly separated. The main ambiguity is among the many merge request tools, especially get_merge_request_comments vs get_merge_request_reviews and their by_url variants, though the descriptions do help.
All tool names follow a consistent verb_noun pattern: search_, create_, get_, list_, update_, add_, merge_, push_, fork_. Minor quirks like merge_merge_request are still predictable.
With 27 tools the set is above the threshold for a focused MCP server. The merge request surface alone accounts for over a dozen tools, making the overall tool count feel heavy and harder for an agent to navigate.
Core GitLab workflows are covered: repository searching/creation, file pushes, issues with comments, and a thorough merge request lifecycle including reviews, status, and rebase. Missing operations like updating MR metadata or deleting repositories are minor gaps that agents can often work around.
Related MCP Connectors
Go MCP server for GitLab: 2 dynamic tools reach 1000+ REST/GraphQL actions. Free/CE, no paid tier.
GitLab MCP β wraps the GitLab REST API v4 (BYO API key)
A MCP server built for developers enabling Git based project management with project and personalβ¦
GitLab Public MCP β wraps the GitLab REST API v4 (public endpoints, no auth)
Related MCP Servers
- AlicenseCqualityDmaintenanceAn MCP server that enables communication with GitLab repositories, allowing interaction with GitLab's API to manage projects, issues, and repositories through natural language.45170,164 npm1MIT
- AlicenseNot gradedqualityDmaintenanceAn MCP server for the GitLab API that enables comprehensive project management, file operations, and issue tracking. It supports automated branch creation, batch file pushes, and interaction with merge requests and CI/CD logs.MIT
- AlicenseNot gradedqualityCmaintenanceMCP server for interacting with GitLab API, supporting both self-hosted instances and gitlab.com. Provides tools for managing issues, merge requests, code review, pipelines, milestones, releases, search, and file access.1,908 npmMIT
- AlicenseNot gradedqualityBmaintenanceMCP server for the GitLab REST API providing tools to manage projects, merge requests, pipelines, CI/CD variables, approvals, issues, and code reviews.6,421 PyPI7MIT