Skip to content

Getting Started

Get up and running with GitLab MCP Server in under 5 minutes.

Before you begin, make sure you have:

  1. A GitLab instance — GitLab.com, self-hosted CE, or EE
  2. A Personal Access Token (PAT) with the api scope
  3. An MCP-compatible AI client — VS Code + Copilot, Claude Desktop, Cursor, or Claude Code
  1. Go to GitLab → Preferences → Access Tokens
  2. Create a new token with the api scope
  3. Copy the token — you’ll need it for configuration

Download the latest binary for your platform from the GitHub Releases page:

PlatformBinary
Linux (x86_64)gitlab-mcp-server-linux-amd64
Linux (ARM64)gitlab-mcp-server-linux-arm64
macOS (Intel)gitlab-mcp-server-darwin-amd64
macOS (Apple Silicon)gitlab-mcp-server-darwin-arm64
Windows (x86_64)gitlab-mcp-server-windows-amd64.exe
Windows (ARM64)gitlab-mcp-server-windows-arm64.exe
Terminal window
chmod +x gitlab-mcp-server-*

Optionally, move it to a directory in your PATH:

Terminal window
sudo mv gitlab-mcp-server-linux-amd64 /usr/local/bin/gitlab-mcp-server

The easiest way to configure the server is the built-in setup wizard:

Terminal window
./gitlab-mcp-server setup-wizard

The wizard will:

  • Prompt for your GitLab URL and token
  • Test the connection
  • Auto-detect your AI client
  • Generate the correct configuration file

If you prefer to configure manually, choose your AI client:

Create or edit .vscode/mcp.json in your workspace root:

{
"servers": {
"gitlab": {
"type": "stdio",
"command": "/path/to/gitlab-mcp-server",
"env": {
"GITLAB_URL": "https://gitlab.example.com",
"GITLAB_TOKEN": "glpat-xxxxxxxxxxxxxxxxxxxx"
}
}
}
}

Instead of placing secrets in client config files, you can use a .env file:

.env
GITLAB_URL=https://gitlab.example.com
GITLAB_TOKEN=glpat-xxxxxxxxxxxxxxxxxxxx

The server loads .env from the current working directory automatically. See Configuration for the full load order.

For team deployments, you can run the server in HTTP mode where each user authenticates with their own token:

Terminal window
./gitlab-mcp-server --http --http-addr=0.0.0.0:8080 --gitlab-url=https://gitlab.example.com

Each client connects via HTTP and provides their own GitLab token. See HTTP Server Mode for details.

For zero-config token management, use OAuth mode. Users authorize through the browser — no token copying or distribution required:

Terminal window
./gitlab-mcp-server --http --gitlab-url=https://gitlab.example.com --auth-mode=oauth

MCP clients that support OAuth 2.1 (VS Code, Claude Code) discover the authorization server automatically via /.well-known/oauth-protected-resource. See docs/oauth-app-setup.md for creating the required GitLab OAuth Application.

If you’re connecting to a self-hosted GitLab instance (Community Edition or Enterprise Edition), the setup is the same — just make sure GITLAB_URL points to your internal instance:

.env
GITLAB_URL=https://gitlab.internal.company.com
GITLAB_TOKEN=glpat-xxxxxxxxxxxxxxxxxxxx

Many self-hosted instances use self-signed or internal CA certificates. If you see x509: certificate signed by unknown authority errors, add:

.env
GITLAB_SKIP_TLS_VERIFY=true
.env
GITLAB_URL=https://gitlab.internal.company.com
GITLAB_TOKEN=glpat-xxxxxxxxxxxxxxxxxxxx

Both GitLab CE (free) and EE (Premium/Ultimate) are fully supported. For EE-exclusive features like DORA metrics, epics, and vulnerability management, enable enterprise mode with GITLAB_ENTERPRISE=true. See Configuration for all available options.

Once configured, open your AI client and ask:

Who am I on GitLab?

The server should return your GitLab user profile, confirming the connection is working. You can also try:

List my assigned merge requests
Show recent pipelines in my-project

If you see results, you’re all set!

By default, the server runs in meta-tool mode — instead of registering 1006 individual tools (which would consume most of the LLM’s context window), it consolidates them into 42 domain-level meta-tools that cover 100% of the functionality.

For example, instead of separate gitlab_list_issues, gitlab_create_issue, gitlab_close_issue tools, there’s a single gitlab_issue tool with an action parameter:

{
"tool": "gitlab_issue",
"arguments": {
"action": "create",
"project": "my-group/my-project",
"title": "Fix login redirect"
}
}

This is transparent to you — your AI client handles the routing automatically. You just ask naturally: “create an issue for the login bug” and the LLM selects the right meta-tool and action.

  • Configuration — Fine-tune environment variables and optional features
  • Meta-tools — Understand how tools are organized and discover all available operations
  • Architecture — Understand how the server works under the hood
  • Tools Reference — Explore all available tools by domain