Skip to content

structured-world/gitlab-mcp

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1,154 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Advanced GitLab MCP server

npm version npm downloads License Release Coverage Coverage Report

Advanced GitLab MCP server — 44 tools across 18 entity types with CQRS architecture, OAuth 2.1, and multiple transport modes.

Install in Claude Desktop Install in VS Code Install in VS Code Insiders

Quick Start

{
  "mcpServers": {
    "gitlab": {
      "command": "npx",
      "args": ["-y", "@structured-world/gitlab-mcp"],
      "env": {
        "GITLAB_TOKEN": "your_gitlab_token",
        "GITLAB_API_URL": "https://gitlab.com"
      }
    }
  }
}

Requirements: Node.js >= 24

Highlights

  • 44 tools across 18 entity types — projects, merge requests, pipelines, work items, wiki, and more
  • CQRS architecturebrowse_* for queries, manage_* for commands
  • Connection resilience — Bounded startup, auto-reconnect with exponential backoff, disconnected mode when GitLab is unreachable
  • Multi-instance support — Connect to multiple GitLab instances with per-instance OAuth and rate limiting
  • Multiple transports — stdio, SSE, StreamableHTTP
  • OAuth 2.1 — Per-user authentication via Claude Custom Connector
  • Read-only mode — Safe operation for production environments
  • Auto-discovery — Detects GitLab config from git remotes
  • Fine-grained control — Enable/disable tool groups, filter actions, customize descriptions
  • Docker supportghcr.io/structured-world/gitlab-mcp:latest

Documentation

Full documentation is available at gitlab-mcp.sw.foundation

Section Description
Installation npm, Docker, VS Code, Codex
Configuration Environment variables, feature flags
Multi-Instance Connect to multiple GitLab instances
Tool Reference All 44 tools with parameters
OAuth Setup Team authentication with Claude
TLS/HTTPS Production deployment with SSL
Customization Tool descriptions, action filtering
CLI Tools Browse and export tool documentation

Auto-generated Tool Reference

For the complete tool reference with parameters:

# View locally
yarn list-tools --detail

# Generate documentation
yarn list-tools --export --toc > docs/tools/api-reference.md

See the Full API Reference for the auto-generated tool documentation.

Docker

# HTTP mode
docker run -e PORT=3002 -e GITLAB_TOKEN=your_token -p 3333:3002 \
  ghcr.io/structured-world/gitlab-mcp:latest

# stdio mode
docker run -i --rm -e GITLAB_TOKEN=your_token \
  ghcr.io/structured-world/gitlab-mcp:latest

Connection Resilience

The server handles GitLab connectivity issues gracefully:

  • Bounded startup — Server starts within GITLAB_INIT_TIMEOUT_MS (default 5s) regardless of GitLab availability
  • Disconnected mode — When GitLab is unreachable (disconnected/failed state), only the manage_context tool is exposed, with local actions such as whoami, switch_profile, and set_scope for diagnostics. During active reconnect (connecting state), the full tool list remains available so MCP clients don't lose their tool catalog during brief outages. MCP clients are notified of tool availability changes via tools/list_changed
  • Auto-reconnect — Exponential backoff reconnection (5s → 60s) with ±10% jitter
  • Error classification — Transient errors (network, 5xx, timeouts) trigger auto-reconnect. Auth/config errors at startup transition to failed state (no auto-reconnect). Runtime auth errors from tool calls are forwarded to HealthMonitor.reportError() via classifyError(); the remaining gap is token-revocation/403 detection (#370)
  • Instance health monitor — Each monitored instance URL has its own XState state machine. Untracked OAuth URLs currently pass through as reachable.
Variable Default Description
GITLAB_INIT_TIMEOUT_MS 5000 Max time to wait for GitLab during startup
GITLAB_RECONNECT_BASE_DELAY_MS 5000 Initial reconnect delay (doubles each attempt)
GITLAB_RECONNECT_MAX_DELAY_MS 60000 Maximum reconnect delay
GITLAB_HEALTH_CHECK_INTERVAL_MS 60000 Health check interval when connected
GITLAB_FAILURE_THRESHOLD 3 Consecutive transient failures before disconnecting
GITLAB_TOOL_TIMEOUT_MS 120000 Max time for tool/bootstrap execution before timeout
GITLAB_RESPONSE_WRITE_TIMEOUT_MS 10000 Max time to flush a non-SSE response before destroying zombie connection (0 to disable; SSE uses heartbeat)

Feature Flags

Flag Default Tools Enabled
USE_LABELS true Label management
USE_MRS true Merge requests
USE_FILES true File operations
USE_VARIABLES true CI/CD variables
USE_WORKITEMS true Issues, epics, tasks
USE_WEBHOOKS true Webhook management
USE_SNIPPETS true Code snippets
USE_INTEGRATIONS true 50+ integrations
USE_GITLAB_WIKI true Wiki pages
USE_MILESTONE true Milestones
USE_PIPELINE true Pipelines & CI/CD
USE_RELEASES true Release management
USE_REFS true Branch & tag management
USE_MEMBERS true Team members
USE_SEARCH true Cross-project search
USE_ITERATIONS true Iteration planning (sprints)

Contributing

See CONTRIBUTING.md for development setup, testing, and PR guidelines.

Support the Project

USDT TRC-20 Donation QR Code

USDT (TRC-20): TFDsezHa1cBkoeZT5q2T49Wp66K8t2DmdA

License

Apache License 2.0 — see LICENSE for details.

Based on zereight/gitlab-mcp (MIT). See LICENSE.MIT.

About

GitLab MCP server — issues, merge requests, pipelines, code search. 80+ tools.

Topics

Resources

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE
MIT
LICENSE.MIT

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages

  • TypeScript 97.4%
  • JavaScript 2.3%
  • Other 0.3%