home / mcp / gitlab jira mcp server

GitLab Jira MCP Server

Provides interaction with GitLab and Jira to manage projects, issues, merge requests, pipelines, and tickets via MCP clients.

Installation
Add the following to your MCP client configuration file.

Configuration

View docs
{
  "mcpServers": {
    "hainanzhao-mcp-gitlab-jira": {
      "command": "docker",
      "args": [
        "exec",
        "-i",
        "mcp-gitlab-jira-container",
        "npm",
        "start"
      ],
      "env": {
        "GITLAB_URL": "YOUR_GITLAB_URL",
        "ATLASSIAN_API_TOKEN": "YOUR_API_TOKEN",
        "ATLASSIAN_SITE_NAME": "YOUR_SITE_NAME",
        "GITLAB_ACCESS_TOKEN": "YOUR_GITLAB_TOKEN",
        "ATLASSIAN_USER_EMAIL": "YOUR_EMAIL"
      }
    }
  }
}

This MCP server enables AI agents to interact with GitLab and Jira instances, letting you list projects and issues, manage merge requests, pipelines, branches, issues, and Jira tickets, and perform project and ticket operations through a single, convenient interface.

How to use

You run the MCP server and connect your MCP client, such as gemini-cli, to gain access to GitLab and Jira capabilities. Start the server, then configure your MCP client with the server’s command and environment settings. Use the client’s tool calls to fetch data, create or update items, and automate workflows across GitLab and Jira without leaving your chat or automation session.

How to install

Prerequisites: you need Node.js 18 or newer, and access tokens for GitLab and Jira.

Install the MCP package globally.

npm i -g mcp-gitlab-jira

Extra setup and configuration

Set up environment variables for GitLab and Jira access.

# GitLab
export GITLAB_URL="https://your-gitlab-instance.com"
export GITLAB_ACCESS_TOKEN="your-personal-access-token"

# Jira
export ATLASSIAN_SITE_NAME="your-atlassian-site-name"
export ATLASSIAN_USER_EMAIL="[email protected]"
export ATLASSIAN_API_TOKEN="your-jira-api-token"

Running with Docker

You can run the MCP server in a Docker container. Use the following example to start a persistent container and pass the required environment variables.

docker run -d --name mcp-gitlab-jira-container \
  -e GITLAB_URL="https://your-gitlab-instance.com" \
  -e GITLAB_ACCESS_TOKEN="your-personal-access-token" \
  -e ATLASSIAN_SITE_NAME="your-atlassian-site-name" \
  -e ATLASSIAN_USER_EMAIL="[email protected]" \
  -e ATLASSIAN_API_TOKEN="your-jira-api-token" \
  hainanzhao/mcp-gitlab-jira:latest

Using with MCP clients via Docker (config examples)

If you prefer to run a persistent container and control the MCP process from your client, you can configure a session that executes the start command inside the running container.

{
  "mcpServers": {
    "gitlab_jira_mcp": {
      "command": "docker",
      "args": ["exec", "-i", "mcp-gitlab-jira-container", "npm", "start"],
      "env": {}
    }
  }
}

Alternate one-time container run (session per use)

If you want to run a fresh container for each MCP session, configure as shown.

{
  "mcpServers": {
    "gitlab_jira_mcp": {
      "command": "docker",
      "args": [
        "run", "--rm", "-i",
        "-e", "GITLAB_URL=https://your-gitlab-instance.com",
        "-e", "GITLAB_ACCESS_TOKEN=your-personal-access-token",
        "-e", "ATLASSIAN_SITE_NAME=your-atlassian-site-name",
        "-e", "[email protected]",
        "-e", "ATLASSIAN_API_TOKEN=your-jira-api-token",
        "hainanzhao/mcp-gitlab-jira:latest"
      ],
      "env": {}
    }
  }
}

Available tools

gitlab_get_merge_request_details

Fetches detailed information about a GitLab Merge Request, including file diffs.

gitlab_get_file_content

Fetches the content of a specific file at a given SHA in a GitLab project.

gitlab_add_comment_to_merge_request

Adds a comment to a GitLab Merge Request, including inline comments and replies.

gitlab_list_merge_requests

Lists merge requests for a given GitLab project.

gitlab_assign_reviewers_to_merge_request

Assigns reviewers to a GitLab Merge Request.

gitlab_list_project_members

Lists all members of a GitLab project.

gitlab_list_project_members_by_project_name

Lists all members of a GitLab project by project name.

gitlab_list_projects_by_name

Filters GitLab projects by name using fuzzy matching.

gitlab_list_all_projects

Lists all accessible GitLab projects.

gitlab_list_all_releases

Fetches releases for a GitLab project.

gitlab_list_releases_since_version

Filters releases for a GitLab project since a specific version.

gitlab_get_user_id_by_username

Retrieves a GitLab user ID by username.

gitlab_get_user_activities

Fetches activities for a GitLab user.

gitlab_get_project_pipelines

Gets pipelines for a GitLab project.

gitlab_get_merge_request_pipelines

Gets pipelines for a specific Merge Request.

gitlab_get_pipeline_details

Gets detailed information about a pipeline.

gitlab_get_pipeline_jobs

Gets jobs for a specific pipeline.

gitlab_get_job_logs

Gets logs for a specific job.

gitlab_trigger_pipeline

Triggers a new pipeline for a specific branch.

gitlab_retry_pipeline

Retries a failed pipeline.

gitlab_cancel_pipeline

Cancels a running pipeline.

gitlab_list_branches

Lists all branches in a GitLab project.

gitlab_create_branch

Creates a new branch in a GitLab project.

gitlab_delete_branch

Deletes a branch from a GitLab project.

gitlab_get_branch_details

Gets details about a specific branch.

gitlab_list_project_issues

Lists issues in a GitLab project.

gitlab_get_issue_details

Gets detailed information about a GitLab issue.

gitlab_create_issue

Creates a new issue in a GitLab project.

gitlab_update_issue

Updates an existing GitLab issue.

gitlab_close_issue

Closes a GitLab issue.

gitlab_add_comment_to_issue

Adds a comment to a GitLab issue.

gitlab_get_issue_comments

Gets comments for a GitLab issue.

jira_get_ticket_details

Fetches detailed Jira ticket information with flattened fields.

jira_get_ticket_comments

Fetches comments for a Jira ticket.

jira_add_comment_to_ticket

Adds a comment to a Jira ticket.

jira_search_tickets_by_jql

Searches Jira tickets using a JQL string.

jira_create_ticket

Creates a new Jira ticket.

jira_get_available_transitions

Fetches available transitions for a Jira ticket.

jira_update_ticket

Updates a Jira ticket summary, description, and labels.

jira_update_custom_fields

Updates custom fields on a Jira ticket.

jira_update_ticket_priority

Updates the Jira ticket priority with fuzzy matching for allowed values.

jira_update_ticket_sprint

Updates the Jira ticket sprint with fuzzy matching for active/future sprints.

jira_transition_ticket

Transitions a Jira ticket to a new status.

jira_get_all_fields

Fetches all fields from Jira.

jira_get_all_projects

Gets all accessible Jira projects.

jira_get_project_details

Gets detailed information about a Jira project.

jira_get_project_components

Gets components for a Jira project.

jira_get_project_versions

Gets versions for a Jira project.