- Explore MCP Servers
- gitlab-mcp
Gitlab Mcp
What is Gitlab Mcp
gitlab-mcp is a Model Context Protocol (MCP) server designed for interacting with the GitLab API. It enables AI clients to perform various operations on GitLab repositories, issues, merge requests, and more, supporting both synchronous and asynchronous execution.
Use cases
Use cases for gitlab-mcp include automating GitLab operations for CI/CD pipelines, integrating AI tools for project management, and enhancing collaboration by managing issues and merge requests programmatically.
How to use
To use gitlab-mcp, clone the repository from GitHub, install dependencies using either ‘uv’ or ‘pip’, and configure the required environment variables for GitLab API authentication. You can run the server using the provided commands in the README.
Key features
Key features of gitlab-mcp include support for both synchronous and asynchronous operations, a modular architecture for easy integration, and the ability to interact with multiple GitLab API endpoints such as repositories and issues.
Where to use
gitlab-mcp can be used in software development environments, particularly for projects that utilize GitLab for version control, issue tracking, and collaborative development. It is suitable for AI applications that require GitLab integration.
Clients Supporting MCP
The following are the main client software that supports the Model Context Protocol. Click the link to visit the official website for more information.
Overview
What is Gitlab Mcp
gitlab-mcp is a Model Context Protocol (MCP) server designed for interacting with the GitLab API. It enables AI clients to perform various operations on GitLab repositories, issues, merge requests, and more, supporting both synchronous and asynchronous execution.
Use cases
Use cases for gitlab-mcp include automating GitLab operations for CI/CD pipelines, integrating AI tools for project management, and enhancing collaboration by managing issues and merge requests programmatically.
How to use
To use gitlab-mcp, clone the repository from GitHub, install dependencies using either ‘uv’ or ‘pip’, and configure the required environment variables for GitLab API authentication. You can run the server using the provided commands in the README.
Key features
Key features of gitlab-mcp include support for both synchronous and asynchronous operations, a modular architecture for easy integration, and the ability to interact with multiple GitLab API endpoints such as repositories and issues.
Where to use
gitlab-mcp can be used in software development environments, particularly for projects that utilize GitLab for version control, issue tracking, and collaborative development. It is suitable for AI applications that require GitLab integration.
Clients Supporting MCP
The following are the main client software that supports the Model Context Protocol. Click the link to visit the official website for more information.
Content
GitLab MCP Server
A MCP (Model Context Protocol) server for interacting with GitLab API. This server provides a set of tools that allow AI clients to perform operations on GitLab repositories, issues, merge requests, and more. All operations support both synchronous and asynchronous execution patterns.
Installation
Using uv (Recommended)
# Clone the repository
git clone https://github.com/Adit-999/gitlab-mcp.git
cd gitlab-mcp
# Install dependencies using uv
uv sync
Using pip
# Clone the repository
git clone https://github.com/Adit-999/gitlab-mcp.git
cd gitlab-mcp
# Create and activate a virtual environment
python -m venv .venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate
# Install dependencies
pip install -e .
Configuration
The GitLab MCP server requires two environment variables to function properly:
GITLAB_PERSONAL_ACCESS_TOKEN- For authentication with GitLab APIGITLAB_API_URL- The base URL for the GitLab API
Option 1: Environment Variables
Create a .env file in the project root directory with these variables:
GITLAB_PERSONAL_ACCESS_TOKEN=your_personal_access_token GITLAB_API_URL=https://gitlab.com
Option 2: MCP Configuration
You can also configure the MCP server in your MCP JSON configuration file:
{
"mcpServers": {
"gitlab-mcp": {
"command": "uv",
"args": [
"run",
"--with",
"mcp[cli]",
"mcp",
"run",
"/path/to/gitlab-mcp/server.py"
],
"env": {
"GITLAB_PERSONAL_ACCESS_TOKEN": "your_personal_access_token",
"GITLAB_API_URL": "https://gitlab.com"
}
}
}
}
Configure with uv for Claude Desktop
uv run mcp install server.py
Project Structure
The project follows a modular, domain-driven architecture:
gitlab-mcp/ ├── src/ # Source code │ ├── api/ # API interaction layer │ │ ├── rest_client.py # GitLab REST API client │ │ ├── exceptions.py # API exception definitions │ ├── schemas/ # Data models and validation │ │ ├── base.py # Base schema classes │ │ ├── repositories.py # Repository data models │ │ ├── branches.py # Branch data models │ │ ├── issues.py # Issue data models │ │ ├── merge_requests.py # Merge request data models │ │ ├── groups.py # Group data models │ │ └── search.py # search data models │ ├── services/ # Business logic layer │ │ ├── repositories.py # Repository operations │ │ ├── branches.py # Branch operations │ │ ├── issues.py # Issue operations │ │ ├── merge_requests.py # Merge request operations │ │ ├── groups.py # Group operations │ │ └── search.py # search operations │ └── tools/ # MCP tool implementations │ ├── repositories.py # Repository tools │ ├── branches.py # Branch tools │ ├── issues.py # Issue tools │ ├── merge_requests.py # Merge request tools │ ├── groups.py # Group tools │ └── search.py # search tools ├── server.py # Main MCP server entry point
This architecture provides several benefits:
- Separation of concerns: Each module has a clear responsibility
- Type safety: Pydantic schemas ensure data validation
- Maintainability: Domain-driven organization makes code easier to navigate
- Extensibility: New features can be added by following the established patterns
- Async support: All operations are available in both synchronous and asynchronous versions
Available Tools
The server provides the following tools for interacting with GitLab:
Repository Management
create_repository: Create a new GitLab repositorylist_repository_tree: List the contents of a repository tree
Branch Operations
create_branch: Create a new branch in a GitLab repositorylist_branches: List branches in a GitLab repositoryget_branch: Get details for a specific GitLab branchdelete_branch: Delete a branch from a GitLab repositorydelete_merged_branches: Delete all merged branches from a GitLab repositoryprotect_branch: Protect a branch in a GitLab repositoryunprotect_branch: Remove protection from a branch in a GitLab repositoryget_default_branch_ref: Get the default branch reference for a GitLab repository
File Operations
create_file: Create a new file in a GitLab repositoryget_file_contents: Retrieve the contents of a file from a GitLab repositoryupdate_file: Update an existing file in a GitLab repositorydelete_file: Delete a file from a GitLab repository
Issue Management
create_issue: Create a new issue in a GitLab repositorylist_all_issues: List all issues the authenticated user has access toget_issue: Get details for a specific GitLab issueclose_issue: Close a GitLab issuedelete_issue: Delete an issue from a GitLab repositorymove_issue: Move an issue to a different projectcomment_on_issue: Add a comment to a GitLab issuelist_issue_comments: List comments for a GitLab issue
Merge Request Operations
create_merge_request: Create a new merge request in a GitLab repositorylist_merge_requests: List merge requests for a GitLab projectget_merge_request: Get details for a specific GitLab merge requestmerge_merge_request: Merge a GitLab merge requestupdate_merge_request: Update an existing merge request in a GitLab repository.delete_merge_request: Delete a merge request from a GitLab repository.merge_request_changes: Get the changes for a specific merge request.create_merge_request_comment: Add a comment to a GitLab merge request.
Job Operations
get_job_logs: Get logs from a GitLab job
Group Operations
list_groups: List GitLab groupsget_group: Get a specific GitLab groupget_group_by_project_namespace: Get a GitLab group based on a project namespace
Search Tools
search_globally: Search across all GitLab resources (currently supports projects and files/blobs).search_project: Search within a specific project (currently supports projects and files/blobs).search_group: Search within a specific group (currently supports projects and files/blobs).
Troubleshooting
Common Issues
- GitLab API Authentication Errors: Ensure your
GITLAB_PERSONAL_ACCESS_TOKENhas the necessary permissions and is correctly set in your environment variables. - NoneType errors: Some functions may encounter issues when handling empty results. If you encounter these errors, please report them with detailed steps to reproduce.
License
This project is licensed under the MIT License - see the LICENSE file for details.
Dev Tools Supporting MCP
The following are the main code editors that support the Model Context Protocol. Click the link to visit the official website for more information.










