Skip to main content
Glama

GitLab MCP Server

PyPI version Python 3.10+ License: MIT

A comprehensive Model Context Protocol (MCP) server that provides seamless GitLab API integration for Claude Desktop and other MCP clients. Manage your entire GitLab workflow through natural language commands - from project creation to repository operations, CI/CD management, and team collaboration.

πŸš€ Quick Start

# Install with uvx (recommended)
uvx --from gitlab-clone-mcp-server gitlab-mcp

# Or install as a tool
uv tool install gitlab-clone-mcp-server

πŸ”Œ Transport Options

GitLab MCP Server supports three transport types:

# Run with stdio transport (default)
gitlab-mcp stdio

# Run with SSE transport
gitlab-mcp sse --host localhost --port 8000

# Run with Streamable HTTP transport (recommended for production)
gitlab-mcp streamable-http --host localhost --port 8000

See TRANSPORT_OPTIONS.md for detailed configuration.

✨ Key Features

  • Complete GitLab Integration: 46+ tools covering all major GitLab operations

  • Natural Language Interface: Control GitLab through conversational commands

  • Zero Configuration: Works out-of-the-box with your GitLab Personal Access Token

  • Comprehensive Coverage: Projects, repositories, issues, merge requests, CI/CD, and more

  • Local Repository Cloning: Clone repositories directly to your local machine

  • Batch Operations: Perform bulk operations across multiple projects

πŸ› οΈ Available Tools (46 Total)

πŸ“ Project Management (12 tools)

Tool

Description

create_project

Create new GitLab projects with custom settings

delete_project

Permanently delete GitLab projects

update_project

Modify project name, description, visibility

fork_project

Fork projects to different namespaces

archive_project

Archive projects for long-term storage

unarchive_project

Restore archived projects

list_projects

List all accessible projects with filters

search_projects

Search projects by name or keywords

get_project_milestones

View project milestones and deadlines

get_project_labels

List all project labels and colors

list_project_hooks

View configured webhooks

get_current_user

Get current user information and permissions

πŸ“ Issue Management (4 tools)

Tool

Description

get_project_issues

List issues with state filtering

create_issue

Create new issues with descriptions

update_issue

Modify issue title, description, state

close_issue

Close specific issues

πŸ”€ Merge Request Management (2 tools)

Tool

Description

get_merge_requests

List merge requests by state

create_merge_request

Create new merge requests

merge_merge_request

Merge approved merge requests

πŸ“„ File Operations (5 tools)

Tool

Description

create_file

Create new files with content

update_file

Modify existing file content

delete_file

Remove files from repository

get_file_content

Read file contents

get_repository_files

Browse directory structures

🌿 Repository & Git Operations (15 tools)

Tool

Description

get_project_branches

List all repository branches

create_branch

Create new branches from any reference

delete_branch

Remove branches safely

get_commits

View commit history

create_commit

Create commits with multiple file changes

compare_branches

Compare differences between branches

revert_commit

Revert specific commits

cherry_pick_commit

Cherry-pick commits between branches

get_repository_tags

List all repository tags

create_tag

Create release tags

delete_tag

Remove tags

clone_repository

Clone single repository locally

clone_group_repositories

Batch clone all group repositories

πŸš€ CI/CD Operations (3 tools)

Tool

Description

get_pipelines

Monitor pipeline status

get_pipeline_jobs

View individual job details

trigger_pipeline

Start new pipeline runs

πŸ‘₯ Groups & Collaboration (3 tools)

Tool

Description

list_groups

List accessible GitLab groups

get_group_members

View group membership

get_current_user

Get user profile information

Installation

uvx --from gitlab-clone-mcp-server gitlab-mcp

Using uv

uv tool install gitlab-mcp-server

From source

git clone <repository-url>
cd gitlab-mcp
uv sync

Setup

  1. Get GitLab Personal Access Token:

    • Go to GitLab β†’ Settings β†’ Access Tokens

    • Create token with api scope

    • Copy the token

  2. Set environment variables:

    export GITLAB_TOKEN="your_token_here"
    export GITLAB_URL="https://gitlab.com"  # optional
  3. Test the server:

    gitlab-mcp

Configuration

Claude Desktop Configuration

Add to your Claude Desktop config (%APPDATA%\Claude\claude_desktop_config.json):

{
  "mcpServers": {
    "gitlab": {
      "command": "uvx",
      "args": [
        "--from", "gitlab-clone-mcp-server",
        "gitlab-mcp", "stdio"
      ],
      "env": {
        "GITLAB_URL": "https://gitlab.com",
        "GITLAB_TOKEN": "your_gitlab_token_here"
      }
    }
  }
}

Using HTTP transport

If you're running the server with Streamable HTTP transport:

{
  "mcpServers": {
    "gitlab": {
      "url": "http://localhost:8000/mcp",
      "headers": {
        "GITLAB_TOKEN": "your_gitlab_token_here"
      }
    }
  }
}

Headers Integration

For applications using MCPToolset, connect with headers:

import os
from mcp_toolset import MCPToolset, SseServerParams

gitlab_tools = MCPToolset(
    connection_params=SseServerParams(
        url="http://localhost:8000/sse",
        headers={"GITLAB_TOKEN": os.getenv("GITLAB_TOKEN")},
    )
)

πŸ’¬ Usage Examples

Control GitLab through natural language commands:

Project Management:

  • "Create a new private project called 'microservice-api'"

  • "Fork the kubernetes/dashboard project to my namespace"

  • "Archive the old legacy-system project"

Issue & Code Review:

  • "Show all open issues in the backend-service project"

  • "Create merge request from feature/auth-system to main branch"

  • "Merge the approved MR #23 in mobile-app project"

Repository Operations:

  • "Create a new config.yaml file with database configuration"

  • "Show all branches in the web-application project"

  • "Clone the microservices-platform project to ./local-dev"

CI/CD & Teams:

  • "Show running pipelines for the deployment project"

  • "List all my GitLab groups and their members"

πŸ”§ Authentication Setup

GitLab Personal Access Token

  1. Go to GitLab β†’ Settings β†’ Access Tokens

  2. Create token with these scopes:

    • βœ… api - Full API access

    • βœ… read_repository - Read repository data

    • βœ… write_repository - Write repository data

    • βœ… read_user - Read user information

  3. Copy the generated token

Environment Variables

Variable

Description

Default

GITLAB_TOKEN

Personal Access Token

Required

GITLAB_URL

GitLab instance URL

https://gitlab.com

πŸ”’ Security Best Practices

  • Never commit tokens to version control

  • Use environment variables for token storage

  • Set token expiration dates when possible

  • Rotate tokens regularly for enhanced security

  • Use minimal required scopes for your use case

πŸ› Troubleshooting

Token Issues:

  • ❌ GITLAB_TOKEN not set β†’ Set environment variable or provide in headers

  • ❌ 401 Unauthorized β†’ Check token permissions and validity

  • ❌ 403 Forbidden β†’ Verify project access permissions

Git Operations:

  • ❌ Git command not found β†’ Install Git and add to PATH

Test Connection:

curl -H "PRIVATE-TOKEN: your_token" "https://gitlab.com/api/v4/user"

🀝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.


Made with ❀️ for the GitLab and MCP community

-
security - not tested
A
license - permissive license
-
quality - not tested

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/skmprb/gitlab-clone-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server