Sign inSign up

zereight050/gitlab-mcp

By zereight050

•Updated about 16 hours ago

GitLab MCP server for projects, merge requests, issues, pipelines, wiki, releases, and more

Image
0

500K+

zereight050/gitlab-mcp repository overview

⁠GitLab MCP Server

Agent-workflow-optimized GitLab MCP⁠ server — manage projects, merge requests, issues, pipelines, wiki, releases, tags, milestones, and more from AI clients such as Claude Code, VS Code, Cursor, and Copilot.

  • 278 tools: 275 in toolsets + execute_graphql + discover_tools + help for on-demand activation
  • Personal Access Token, OAuth2, read-only mode, and remote authorization
  • stdio, SSE, and Streamable HTTP transports
  • Works with gitlab.com and self-hosted instances

⁠Quick start

docker pull zereight050/gitlab-mcp:latest

# Secret your MCP client must send as a Bearer token
export MCP_AUTH_TOKEN="$(openssl rand -hex 32)"

docker run -d --name gitlab-mcp -p 127.0.0.1:3002:3002 \
  -e GITLAB_PERSONAL_ACCESS_TOKEN="<your-token>" \
  -e GITLAB_API_URL="https://gitlab.com/api/v4" \
  -e STREAMABLE_HTTP=true \
  -e STREAMABLE_HTTP_AUTH_TOKEN="$MCP_AUTH_TOKEN" \
  -e HOST=0.0.0.0 \
  zereight050/gitlab-mcp:latest

Streamable HTTP with a server-side GITLAB_PERSONAL_ACCESS_TOKEN refuses to start without STREAMABLE_HTTP_AUTH_TOKEN (or REMOTE_AUTHORIZATION=true). Point your MCP client at the server and send the same secret:

{
  "mcpServers": {
    "gitlab": {
      "type": "streamable-http",
      "url": "http://localhost:3002/mcp",
      "headers": {
        "Authorization": "Bearer <value of MCP_AUTH_TOKEN>"
      }
    }
  }
}

With Docker Compose, copy the compose file and .env.example from the repository⁠, set at least GITLAB_PERSONAL_ACCESS_TOKEN, STREAMABLE_HTTP=true, STREAMABLE_HTTP_AUTH_TOKEN, and HOST=0.0.0.0 in your .env (or environment), and run docker compose up -d. Without HOST=0.0.0.0 the server binds to container loopback and the published port stays unreachable.

⁠Environment variables

VariableDefaultDescription
GITLAB_PERSONAL_ACCESS_TOKEN—GitLab personal access token (required for PAT)
GITLAB_API_URLhttps://gitlab.com/api/v4GitLab API endpoint, self-hosted supported
STREAMABLE_HTTPfalseSet true for Streamable HTTP transport (port 3002)
STREAMABLE_HTTP_AUTH_TOKEN—Bearer token clients send on /mcp; required with a server-side token unless REMOTE_AUTHORIZATION=true
SSEfalseSet true for legacy SSE transport (requires SSE_AUTH_TOKEN)
HOST127.0.0.1Set 0.0.0.0 inside containers
PORT3002HTTP port for SSE / Streamable HTTP
GITLAB_PERMISSION_MODEfullreadonly, modify, or full
GITLAB_TOOLSETSlean core when unsetComma-separated toolset IDs. A non-empty value replaces the default core set. Include core to keep that set.
GITLAB_ALLOWED_PROJECT_IDS—Comma-separated project allowlist
REMOTE_AUTHORIZATIONfalseMulti-user mode, each caller sends its own token

Full list: environment variables⁠.

⁠Tags

  • latest — latest stable release
  • X.Y.Z — pinned releases, e.g. zereight050/gitlab-mcp:2.1.59

⁠Provenance and SBOM

Release images are multi-platform (linux/amd64, linux/arm64) and carry a build provenance attestation and an SBOM for each platform. Inspect them with Docker Buildx 0.10.0 or later:

docker buildx imagetools inspect zereight050/gitlab-mcp:<version> --format '{{ json .Provenance }}'
docker buildx imagetools inspect zereight050/gitlab-mcp:<version> --format '{{ json .SBOM }}'

Images up to 2.3.6 have no SBOM.

Tag summary

Content type

Image

Digest

sha256:8008092d0…

Size

66.1 MB

Last updated

1 day ago

docker pull zereight050/gitlab-mcp