74
/ 100
22 hours ago
npm

ttpears/gitlab-mcp

GitLab MCP Server with GraphQL discovery

ttpears/gitlab-mcp· npm: @ttpears/gitlab-mcp-server· listed on npm
Is this your MCP?

Claim it to get a verified publisher badge, a free copy of our full audit findings, and direct contact for any high-priority issues we find.

Install from

M8ven verifies MCPs across every public registry — install directly from whichever one you prefer.

// key findings
No credential exfiltration, no sensitive file access, no obfuscation
Static analysis found nothing flowing your secrets to unexpected places.
Open source with a license and README
Anyone can audit the code, the license is declared, and the publisher documents what it does.
🔐
You'll be asked for 4 credentials: GITLAB_OAUTH_CLIENT_SECRET, GITLAB_READ_TOKEN, GITLAB_SHARED_ACCESS_TOKEN, GITLAB_TOKEN
These are read from process.env at runtime. Make sure you trust where they’ll be sent.
// required environment variables
This server reads these from process.env. You'll be asked to provide them before it can run.
configGITLAB_ALLOW_SHARED_ESCAPE_HATCHAllow execute_custom_query / execute_rest_read / execute_rest_write to run on the shared token (otherwise they require per-call credentials) false
configGITLAB_ANALYTICS_MAX_PROJECTSCap on projects scanned per group-analytics fan-out (logs when bounded) 500
configGITLAB_AUTH_MODEthe three-way enum is gone. Pick your deployment shape by which env var you set; see [Choose your deployment](#choose-your-deployment).
configGITLAB_MAX_CONCURRENCYMax concurrent in-flight requests to GitLab (excess queue, never rejected). 0 = unlimited 16
configGITLAB_MAX_PAGE_SIZEMaximum items per page (1–100) 50
configGITLAB_MCP_OAUTHEnable brokered OAuth 2.1 (HTTP mode) — see [OAuth for remote users](#oauth-for-remote-users) false
configGITLAB_MCP_PORTMCP_TRANSPORT=http =8008 \
configGITLAB_OAUTH_ALLOWED_GROUPSRestrict the connector to members of these GitLab groups (comma/space separated full-paths; subgroups included). Empty = any authenticated user unset
configGITLAB_OAUTH_CALLBACK_PATHPath of the fixed GitLab redirect URI /gitlab/callback
configGITLAB_OAUTH_CLIENT_IDapplication id> \
🔐 secretGITLAB_OAUTH_CLIENT_SECRETapplication secret> \
configGITLAB_OAUTH_SCOPESSpace-separated GitLab scopes to request api
configGITLAB_PIN_HOSTX-GitLab-Url: "{{GITLAB_URL_OVERRIDE}}" # only honored when =false (default pins to GITLAB_URL)
🔐 secretGITLAB_READ_TOKENglpat-readonly-service-token # read_api scope only
🔐 secretGITLAB_SHARED_ACCESS_TOKENrename to GITLAB_TOKEN (full access) or GITLAB_READ_TOKEN (read-only).
configGITLAB_TIMEOUTRequest timeout in milliseconds 30000
🔐 secretGITLAB_TOKENenv =glpat-your-pat \
configGITLAB_URLenv =https://gitlab.com \
configMCP_SERVER_URLmust be HTTPS (terminate TLS at your reverse proxy) and must
configMCP_TRANSPORThttp GITLAB_MCP_PORT=8008 \
configREDIS_KEY_PREFIXBase namespace for Redis keys (issuer host is appended) gitlab-mcp
configREDIS_URLBack OAuth broker state with Redis (survives redeploys, enables >1 replica). Unset = in-memory unset
configTRUST_PROXYExpress trust proxy when behind a reverse proxy (hop count like 1, boolean, or IP/subnet list). Needed for correct per-IP OAuth rate limiting behind traefik/nginx unset
// full audit trail
The full breakdown of what we checked, the deductions that landed, the network hosts, the dependency advisories, and concrete fix guidance is available to verified publishers.
// embed badge in your README
[![M8ven Score](https://m8ven.ai/badge/mcp/ttpears-gitlab-mcp-server-1pmas2)](https://m8ven.ai/mcp/ttpears-gitlab-mcp-server-1pmas2)
commit: 88e36b72a60c92037f78e509c4f8caea07f41eca
code hash: 007e7280fba512533d6b84048ca402d69cf39eea20d25c4a044bb524ad5be89d
verified: 7/30/2026, 8:12:20 PM
view raw JSON →