GitLab MCP server with tools for projects, merge requests, issues, pipelines and wikis via the REST and GraphQL APIs.
Setup
Choose your client, copy the config, then fill in any required environment variables.
claude mcp add gitlab --env GITLAB_PERSONAL_ACCESS_TOKEN='<GITLAB_PERSONAL_ACCESS_TOKEN>' --env GITLAB_JOB_TOKEN='<GITLAB_JOB_TOKEN>' --env GITLAB_API_URL='<GITLAB_API_URL>' --env GITLAB_READ_ONLY_MODE='<GITLAB_READ_ONLY_MODE>' -- npx -y @zereight/mcp-gitlab~/.codex/config.toml
[mcp_servers.gitlab]
command = "npx"
args = ["-y", "@zereight/mcp-gitlab"]
env = { GITLAB_PERSONAL_ACCESS_TOKEN = "<GITLAB_PERSONAL_ACCESS_TOKEN>", GITLAB_JOB_TOKEN = "<GITLAB_JOB_TOKEN>", GITLAB_API_URL = "<GITLAB_API_URL>", GITLAB_READ_ONLY_MODE = "<GITLAB_READ_ONLY_MODE>" }
# codex mcp add gitlab --env GITLAB_PERSONAL_ACCESS_TOKEN='<GITLAB_PERSONAL_ACCESS_TOKEN>' --env GITLAB_JOB_TOKEN='<GITLAB_JOB_TOKEN>' --env GITLAB_API_URL='<GITLAB_API_URL>' --env GITLAB_READ_ONLY_MODE='<GITLAB_READ_ONLY_MODE>' -- npx -y @zereight/mcp-gitlab~/.cursor/mcp.json
{
"mcpServers": {
"gitlab": {
"command": "npx",
"args": [
"-y",
"@zereight/mcp-gitlab"
],
"env": {
"GITLAB_PERSONAL_ACCESS_TOKEN": "<GITLAB_PERSONAL_ACCESS_TOKEN>",
"GITLAB_JOB_TOKEN": "<GITLAB_JOB_TOKEN>",
"GITLAB_API_URL": "<GITLAB_API_URL>",
"GITLAB_READ_ONLY_MODE": "<GITLAB_READ_ONLY_MODE>"
}
}
}
}.vscode/mcp.json
{
"servers": {
"gitlab": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@zereight/mcp-gitlab"
],
"env": {
"GITLAB_PERSONAL_ACCESS_TOKEN": "<GITLAB_PERSONAL_ACCESS_TOKEN>",
"GITLAB_JOB_TOKEN": "<GITLAB_JOB_TOKEN>",
"GITLAB_API_URL": "<GITLAB_API_URL>",
"GITLAB_READ_ONLY_MODE": "<GITLAB_READ_ONLY_MODE>"
}
}
}
}~/.gemini/settings.json
{
"mcpServers": {
"gitlab": {
"command": "npx",
"args": [
"-y",
"@zereight/mcp-gitlab"
],
"env": {
"GITLAB_PERSONAL_ACCESS_TOKEN": "<GITLAB_PERSONAL_ACCESS_TOKEN>",
"GITLAB_JOB_TOKEN": "<GITLAB_JOB_TOKEN>",
"GITLAB_API_URL": "<GITLAB_API_URL>",
"GITLAB_READ_ONLY_MODE": "<GITLAB_READ_ONLY_MODE>"
}
}
}
}claude_desktop_config.json
{
"mcpServers": {
"gitlab": {
"command": "npx",
"args": [
"-y",
"@zereight/mcp-gitlab"
],
"env": {
"GITLAB_PERSONAL_ACCESS_TOKEN": "<GITLAB_PERSONAL_ACCESS_TOKEN>",
"GITLAB_JOB_TOKEN": "<GITLAB_JOB_TOKEN>",
"GITLAB_API_URL": "<GITLAB_API_URL>",
"GITLAB_READ_ONLY_MODE": "<GITLAB_READ_ONLY_MODE>"
}
}
}
}.trae/mcp.json
{
"mcpServers": {
"gitlab": {
"command": "npx",
"args": [
"-y",
"@zereight/mcp-gitlab"
],
"env": {
"GITLAB_PERSONAL_ACCESS_TOKEN": "<GITLAB_PERSONAL_ACCESS_TOKEN>",
"GITLAB_JOB_TOKEN": "<GITLAB_JOB_TOKEN>",
"GITLAB_API_URL": "<GITLAB_API_URL>",
"GITLAB_READ_ONLY_MODE": "<GITLAB_READ_ONLY_MODE>"
}
}
}
}Environment variables
GITLAB_PERSONAL_ACCESS_TOKENGITLAB_JOB_TOKENGITLAB_API_URLGITLAB_READ_ONLY_MODE
Replace the placeholders with your own credentials and keep them out of version control.