MCP server for GitLab REST API v4 built with fastmcp. Optimized for minimal token usage.
For end users (Claude/Codex):
- ✅ Python 3.10+ installed on your system
- ✅ GitLab Personal Access Token
That's it! No manual installation needed - everything else is automatic.
When you run the server through npx, the Node.js launcher automatically:
- ✅ Checks for Python - Looks for
python3orpythonin your PATH - ✅ Creates virtual environment - In
~/.cache/gitlab-mcp-server/venv - ✅ Installs dependencies -
fastmcpfromrequirements.txt - ✅ Caches everything - Fast subsequent launches
First run: ~10-30 seconds (one-time setup) Next runs: Instant (uses cached venv)
If Python 3.10+ is not installed, the launcher will show instructions for your OS:
- macOS:
brew install python@3.11or download from python.org - Linux:
sudo apt install python3orsudo yum install python3 - Windows: Download from python.org or
winget install Python.Python.3.11
You don't need to manually install fastmcp or create virtualenv! The launcher handles that.
Add the server using the CLI:
claude mcp add gitlab --transport stdio \
--env GITLAB_TOKEN=your-gitlab-token \
--env GITLAB_URL=https://gitlab.com \
--env GITLAB_TIMEOUT=30 \
-- npx -y git+https://github.com/YOUR_ORG/YOUR_REPO.git#mainOr add to ~/.claude.json:
{
"mcpServers": {
"gitlab": {
"command": "npx",
"args": ["-y", "git+https://github.com/YOUR_ORG/YOUR_REPO.git#main"],
"env": {
"GITLAB_TOKEN": "your-gitlab-token",
"GITLAB_URL": "https://gitlab.com",
"GITLAB_TIMEOUT": "30"
}
}
}
}Add to ~/.codex/config.toml:
[mcp_servers.gitlab]
command = "npx"
args = ["-y", "git+https://github.com/YOUR_ORG/YOUR_REPO.git#main"]
startup_timeout_sec = 60
enabled = true
[mcp_servers.gitlab.env]
GITLAB_TOKEN = "your-gitlab-token"
GITLAB_URL = "https://gitlab.com"
GITLAB_TIMEOUT = "30"
MCP_TRANSPORT = "stdio"Note: Replace YOUR_ORG/YOUR_REPO with your GitHub repository path (e.g., myorg/gitlab-mcp-server).
| Variable | Required | Default | Description |
|---|---|---|---|
GITLAB_TOKEN |
Yes | - | GitLab Personal Access Token |
GITLAB_URL |
No | https://gitlab.com |
GitLab instance URL |
GITLAB_TIMEOUT |
No | 30 |
API timeout in seconds |
MCP_TRANSPORT |
No | stdio |
Transport protocol |
GITLAB_MCP_CACHE_DIR |
No | ~/.cache |
Custom cache directory for virtualenv |
This server exposes 20+ GitLab operations as MCP tools:
gitlab_whoami- Get current user profile and validate credentials
gitlab_list_projects- List GitLab projects (supports search, pagination)gitlab_get_project- Get single project details by ID or path
gitlab_list_branches- List repository branches in a project
gitlab_list_merge_requests- List merge requests (filter by state: opened, merged, closed)gitlab_get_merge_request- Get single merge request detailsgitlab_create_merge_request- Create new merge requestgitlab_merge_merge_request- Merge a merge requestgitlab_list_merge_request_notes- List comments on a merge requestgitlab_create_merge_request_note- Add comment to a merge requestgitlab_list_merge_request_discussions- List discussion threads on a merge requestgitlab_create_merge_request_discussion_note- Reply to a discussion thread
gitlab_list_issues- List issues in a project (filter by state: opened, closed)gitlab_create_issue- Create new issuegitlab_list_issue_notes- List comments on an issuegitlab_create_issue_note- Add comment to an issue
gitlab_list_pipelines- List CI/CD pipelines (filter by ref, status)gitlab_get_pipeline- Get single pipeline detailsgitlab_create_pipeline- Trigger new pipelinegitlab_list_pipeline_jobs- List jobs in a pipelinegitlab_get_job- Get single job detailsgitlab_play_job- Start a manual jobgitlab_retry_job- Retry a failed jobgitlab_cancel_job- Cancel a running/pending job
All tools support GitLab.com and self-hosted GitLab instances via the GITLAB_URL environment variable.
If you're developing or testing locally:
# Clone the repo
git clone https://github.com/YOUR_ORG/YOUR_REPO.git
cd YOUR_REPO
# Create virtual environment
python3 -m venv .venv
source .venv/bin/activate # or .venv\Scripts\activate on Windows
# Install dependencies
pip install -r requirements.txt
# Set environment variables
export GITLAB_TOKEN='your-gitlab-token'
export GITLAB_URL='https://gitlab.com'
# Run the server directly
python3 gitlab_mcp_server.py
# Or test via Node.js launcher
node bin/gitlab-mcp-server.jsNote for end users: You don't need to do this! The npx launcher handles everything automatically.