home / mcp / gitlab mcp server

GitLab MCP Server

gitlab mcp

Installation
Add the following to your MCP client configuration file.

Configuration

View docs
{
  "mcpServers": {
    "harshmaur-gitlab-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "@zereight/mcp-gitlab"
      ],
      "env": {
        "USE_PIPELINE": "false",
        "USE_MILESTONE": "false",
        "GITLAB_API_URL": "your_gitlab_api_url",
        "USE_GITLAB_WIKI": "false",
        "GITLAB_READ_ONLY_MODE": "false",
        "GITLAB_PERSONAL_ACCESS_TOKEN": "your_gitlab_token"
      }
    }
  }
}

You can run and connect to the GitLab MCP Server to access GitLab data and actions from MCP clients. It exposes a rich set of GitLab operations through standard MCP methods, with options to run locally or connect remotely depending on your deployment and security needs.

How to use

You connect to the GitLab MCP Server from your MCP client by choosing one of the available connection methods. If you run it locally, you can start a stdio server that listens for requests from the client. If you prefer a remote endpoint, you can connect to a server that exposes an HTTP/SSE endpoint.

How to install

Prerequisites: you need Node.js and/or Docker installed on your machine, plus network access to your GitLab instance if you enable remote access.

Option A: Run via npx (stdio) locally

{
  "mcpServers": {
    "GitLab communication server": {
      "command": "npx",
      "args": ["-y", "@zereight/mcp-gitlab"],
      "env": {
        "GITLAB_PERSONAL_ACCESS_TOKEN": "your_gitlab_token",
        "GITLAB_API_URL": "your_gitlab_api_url",
        "GITLAB_READ_ONLY_MODE": "false",
        "USE_GITLAB_WIKI": "false",
        "USE_MILESTONE": "false",
        "USE_PIPELINE": "false"
      }
    }
  }
}

Option B: Run via Docker (stdio) locally

Use Docker to run the MCP server in a container and connect to it locally.

{
  "mcpServers": {
    "GitLab communication server": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "GITLAB_PERSONAL_ACCESS_TOKEN",
        "-e",
        "GITLAB_API_URL",
        "-e",
        "GITLAB_READ_ONLY_MODE",
        "-e",
        "USE_GITLAB_WIKI",
        "-e",
        "USE_MILESTONE",
        "-e",
        "USE_PIPELINE",
        "iwakitakuma/gitlab-mcp"
      ],
      "env": {
        "GITLAB_PERSONAL_ACCESS_TOKEN": "your_gitlab_token",
        "GITLAB_API_URL": "https://gitlab.com/api/v4",
        "GITLAB_READ_ONLY_MODE": "false",
        "USE_GITLAB_WIKI": "true",
        "USE_MILESTONE": "true",
        "USE_PIPELINE": "true"
      }
    }
  }
}

Option C: Connect to a local SSE endpoint (http)

Run an SSE-enabled server locally and expose its URL for the MCP client to connect.

{
  "mcpServers": {
    "GitLab communication server": {
      "url": "http://localhost:3333/sse"
    }
  }
}

Available tools

create_or_update_file

Create or update a single file in a GitLab project

search_repositories

Search for GitLab projects

create_repository

Create a new GitLab project

get_file_contents

Get the contents of a file or directory from a GitLab project

push_files

Push multiple files to a GitLab project in a single commit

create_issue

Create a new issue in a GitLab project

create_merge_request

Create a new merge request in a GitLab project

fork_repository

Fork a GitLab project to your account or specified namespace

create_branch

Create a new branch in a GitLab project

get_merge_request

Get details of a merge request

get_merge_request_diffs

Get the changes/diffs of a merge request

get_branch_diffs

Get the changes/diffs between two branches or commits in a GitLab project

update_merge_request

Update a merge request

create_note

Create a new note to an issue or merge request

create_merge_request_thread

Create a new thread on a merge request

mr_discussions

List discussion items for a merge request

update_merge_request_note

Modify an existing merge request thread note

create_merge_request_note

Add a new note to an existing merge request thread

update_issue_note

Modify an existing issue thread note

create_issue_note

Add a new note to an existing issue thread

list_issues

List issues in a GitLab project with filtering options

get_issue

Get details of a specific issue in a GitLab project

update_issue

Update an issue in a GitLab project

delete_issue

Delete an issue from a GitLab project

list_issue_links

List all issue links for a specific issue

list_issue_discussions

List discussions for an issue in a GitLab project

get_issue_link

Get a specific issue link

create_issue_link

Create an issue link between two issues

delete_issue_link

Delete an issue link

list_namespaces

List all namespaces available to the current user

get_namespace

Get details of a namespace by ID or path

verify_namespace

Verify if a namespace path exists

get_project

Get details of a specific project

list_projects

List projects accessible by the current user

list_labels

List labels for a project

get_label

Get a single label from a project

create_label

Create a new label in a project

update_label

Update an existing label in a project

delete_label

Delete a label from a project

list_group_projects

List projects in a GitLab group with filtering options

list_wiki_pages

List wiki pages in a GitLab project

get_wiki_page

Get details of a specific wiki page

create_wiki_page

Create a new wiki page in a GitLab project

update_wiki_page

Update an existing wiki page in a GitLab project

delete_wiki_page

Delete a wiki page from a GitLab project

get_repository_tree

Get the repository tree for a GitLab project

list_pipelines

List pipelines in a GitLab project with filtering options

get_pipeline

Get details of a specific pipeline in a GitLab project

list_pipeline_jobs

List all jobs in a specific pipeline

get_pipeline_job

Get details of a GitLab pipeline job number

get_pipeline_job_output

Get the output/trace of a GitLab pipeline job number

create_pipeline

Create a new pipeline for a branch or tag

retry_pipeline

Retry a failed or canceled pipeline

cancel_pipeline

Cancel a running pipeline

list_merge_requests

List merge requests in a GitLab project with filtering options

list_milestones

List milestones in a GitLab project with filtering options

get_milestone

Get details of a specific milestone

create_milestone

Create a new milestone in a GitLab project

edit_milestone

Edit an existing milestone in a GitLab project

delete_milestone

Delete a milestone from a GitLab project

get_milestone_issue

Get issues associated with a specific milestone

get_milestone_merge_requests

Get merge requests associated with a specific milestone

promote_milestone

Promote a milestone to the next stage

get_milestone_burndown_events

Get burndown events for a specific milestone

get_users

Get GitLab user details by usernames