Skip to main content
Glama
md-gitlab-mcp

md-gitlab-mcp

by DrBoria

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:


Created in 2026. Code like there's no tomorrow.

Available Tools

27 tools
add_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

    B3.3/5.0

    Scored across 27 tools

    Disambiguation4/5

    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.

    Naming Consistency5/5

    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.

    Tool Count2/5

    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.

    Completeness4/5

    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

    Related MCP Servers

    • A
      license
      C
      quality
      D
      maintenance
      An MCP server that enables communication with GitLab repositories, allowing interaction with GitLab's API to manage projects, issues, and repositories through natural language.
      45
      170,164 npm
      1
      MIT
    • A
      license
      Not graded
      quality
      C
      maintenance
      MCP 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 npm
      MIT
    • A
      license
      Not graded
      quality
      B
      maintenance
      MCP server for the GitLab REST API providing tools to manage projects, merge requests, pipelines, CI/CD variables, approvals, issues, and code reviews.
      6,421 PyPI
      7
      MIT