@weirdscience/mcp-gitlab
v0.1.2
Published
MCP server exposing GitLab tools via glab CLI
Downloads
35
Maintainers
Readme
@weirdscience/mcp-gitlab
A Model Context Protocol (MCP) server that provides GitLab integration tools using the glab CLI. This server enables AI assistants to interact with GitLab repositories, issues, merge requests, and pipelines through a standardized MCP interface.
Features
- Issue Management: List, create, and manage GitLab issues
- Merge Requests: List and create merge requests
- Pipeline Monitoring: View project pipelines and their status
- Raw API Access: Direct access to GitLab REST API endpoints
- Multi-Instance Support: Works with gitlab.com and self-hosted GitLab instances
- Pagination Support: Automatic handling of large result sets
Prerequisites
- Node.js 18+
glabCLI tool installed and configured- GitLab personal access token
Installation
Global Installation
npm install -g @weirdscience/mcp-gitlabLocal Installation
npm install @weirdscience/mcp-gitlabSetup
1. Install glab CLI
First, install the glab CLI tool:
# macOS
brew install glab
# Linux
sudo apt install glab
# Windows
winget install GitLab.GLab2. Configure glab
Authenticate with your GitLab instance:
# For gitlab.com
glab auth login
# For self-hosted GitLab
glab auth login --hostname gitlab.your-instance.com3. Configure MCP
Add the server to your MCP configuration file (~/.config/mcp.json or similar):
{
"mcpServers": {
"gitlab-glab": {
"command": "mcp-gitlab",
"env": {
"GITLAB_HOST": "gitlab.com",
"GITLAB_TOKEN": "your-gitlab-token"
}
}
}
}Cursor Configuration
To use this MCP server with Cursor, you need to configure it in Cursor's settings:
Method 1: Global Configuration
- Open Cursor's Command Palette (
Cmd/Ctrl + Shift + P) - Search for "MCP" and select "MCP: Configure Servers"
- Add a new server configuration:
{
"name": "gitlab-glab",
"command": "mcp-gitlab",
"env": {
"GITLAB_HOST": "gitlab.com",
"GITLAB_TOKEN": "your-gitlab-token"
}
}Method 2: Workspace Configuration
Create a .cursorrules file in your project root:
{
"mcpServers": {
"gitlab-glab": {
"command": "mcp-gitlab",
"env": {
"GITLAB_HOST": "gitlab.com",
"GITLAB_TOKEN": "your-gitlab-token"
}
}
}
}Method 3: Settings UI
- Open Cursor Settings (
Cmd/Ctrl + ,) - Search for "MCP"
- Add the server configuration in the MCP settings section
Verification
After configuration, you can verify the server is working by:
- Opening Cursor's Command Palette
- Running "MCP: List Available Tools"
- You should see tools like
gitlab.issues.list,gitlab.mrs.list, etc.
Usage in Cursor
Once configured, you can use GitLab tools directly in Cursor:
- Ask Cursor to "list open issues in my project"
- Request "create a merge request for the current branch"
- Ask "show me the latest pipeline status"
Cursor will automatically use the appropriate MCP tools to fulfill these requests.
Environment Variables
| Variable | Description | Example |
|----------|-------------|---------|
| GITLAB_HOST | GitLab instance hostname | gitlab.com or gitlab.your-company.com |
| GITLAB_TOKEN | GitLab personal access token | glpat-xxxxxxxxxxxxxxxxxxxx |
| GITLAB_URI | Full GitLab instance URI | https://gitlab.your-company.com |
Available Tools
gitlab.issues.list
List issues for a project.
Parameters:
project(string): Project path or numeric ID (e.g.,'gitlab-org/cli')state(optional): Issue state ('opened','closed','all')labels(optional): Comma-separated label namesassignee(optional): Assignee username
gitlab.mrs.list
List merge requests for a project.
Parameters:
project(string): Project path or numeric IDstate(optional): MR state ('opened','merged','closed','all')labels(optional): Comma-separated label namesdraft(optional): Filter for draft MRs
gitlab.mr.create
Create a new merge request.
Parameters:
project(string): Project path or numeric IDsourceBranch(string): Source branch nametargetBranch(string): Target branch nametitle(string): MR titledescription(optional): MR descriptiondraft(optional): Create as draft MRlabels(optional): Comma-separated labelsassignees(optional): Comma-separated assignee usernames
gitlab.pipelines.list
List pipelines for a project.
Parameters:
project(string): Project path or numeric IDpage(optional): Page number (default: 1)perPage(optional): Items per page (default: 50, max: 100)status(optional): Pipeline status filter
gitlab.api
Low-level access to GitLab REST API.
Parameters:
method(optional): HTTP method ('GET','POST','PUT','PATCH','DELETE')path(string): API path below/api/v4fields(optional): Request body fieldsheaders(optional): Custom headers
glab.version
Get the installed glab CLI version.
Usage Examples
List Open Issues
{
"tool": "gitlab.issues.list",
"arguments": {
"project": "gitlab-org/cli",
"state": "opened"
}
}Create Merge Request
{
"tool": "gitlab.mr.create",
"arguments": {
"project": "my-group/my-project",
"sourceBranch": "feature/new-feature",
"targetBranch": "main",
"title": "Add new feature",
"description": "This PR adds a new feature to improve user experience.",
"labels": "enhancement,frontend"
}
}Get Project Pipelines
{
"tool": "gitlab.pipelines.list",
"arguments": {
"project": "my-group/my-project",
"perPage": 10,
"status": "success"
}
}Development
Prerequisites
- Node.js 18+
- npm or yarn
Setup
git clone https://github.com/weirdscience/mcp-gitlab.git
cd mcp-gitlab
npm installBuild
npm run buildDevelopment Mode
npm run devTesting
npm run checkLinting
npm run lint
npm run lint:fixFormatting
npm run formatContributing
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
License
This project is licensed under the MIT License - see the LICENSE file for details.
Acknowledgments
- Model Context Protocol for the MCP specification
- glab CLI for GitLab command-line interface
- GitLab for the GitLab platform
Support
If you encounter any issues or have questions:
- Check the GitHub Issues
- Review the glab CLI documentation
- Consult the MCP documentation
Changelog
0.1.0
- Initial release
- Basic GitLab integration via glab CLI
- Support for issues, merge requests, and pipelines
- Raw API access capability
