Skip to content

Troubleshooting

SymptomCauseSolution
GITLAB_TOKEN is required at startupToken not setSet GITLAB_TOKEN in .env or environment
GITLAB_URL is required at startupURL not setSet GITLAB_URL in .env or use --gitlab-url flag
401 Unauthorized from GitLab APIInvalid or expired PATGenerate a new token with api scope at GitLab → Preferences → Access Tokens
403 Forbidden on specific operationsToken lacks required scopeEnsure the token has api scope (not just read_api)
Connection refused or timeoutGitLab instance unreachableVerify GITLAB_URL is reachable: curl -s $GITLAB_URL/api/v4/version
SymptomCauseSolution
x509: certificate signed by unknown authoritySelf-signed certificateSet GITLAB_SKIP_TLS_VERIFY=true in .env or --skip-tls-verify in HTTP mode
x509: certificate has expiredExpired TLS certificateRenew the certificate on the GitLab server, or use GITLAB_SKIP_TLS_VERIFY=true temporarily
SymptomCauseSolution
MCP client shows 1006 tools instead of 42Meta-tools disabledSet META_TOOLS=true (default) to consolidate into domain meta-tools
Tool not found in tools/listMeta-tool mode mismatchIndividual mode uses gitlab_create_issue, meta mode uses gitlab_issue with action: create
unknown action in meta-tool callInvalid action parameterCheck valid actions in the Tools Overview
Enterprise tools missingEnterprise mode disabledSet GITLAB_ENTERPRISE=true to enable 15 additional enterprise meta-tools
SymptomCauseSolution
Update detected but not appliedMode is check onlySet AUTO_UPDATE=true to enable automatic application
Still running old version after updateProcess not restarted (Windows)Restart the server or use gitlab-mcp-server --shutdown to terminate all instances
Cannot replace binary (file locked)Running instances hold the fileRun gitlab-mcp-server --shutdown to terminate all instances first
Network error reaching GitHubFirewall or proxy blockingVerify connectivity to github.com from the server
SymptomCauseSolution
400 Bad RequestMissing token headerSend PRIVATE-TOKEN or Authorization: Bearer <token> header with every request
Pool eviction too frequentToo many unique tokensIncrease --max-http-clients (default: 100)
Sessions expiring unexpectedlyIdle timeout too shortIncrease --session-timeout (default: 30m)
SymptomCauseSolution
401 Unauthorized with valid OAuth tokenToken expired or GitLab rejected itRe-authorize through the OAuth flow; check that the GitLab OAuth app is still active
High latency on first request after cache expiryToken re-validation against GitLab APIExpected behavior — increase --oauth-cache-ttl (default: 15m, max: 2h) to reduce validation frequency
404 on /.well-known/oauth-protected-resourceOAuth mode not enabledStart the server with --auth-mode=oauth
Client doesn’t start OAuth flowClient lacks OAuth 2.1 supportUse PRIVATE-TOKEN header instead — it works in OAuth mode via automatic normalization
PRIVATE-TOKEN header not working in OAuth modeShould still workThe middleware normalizes PRIVATE-TOKEN to Bearer — check token validity
Operations fail with insufficient mcp scopeDCR fallback assigned mcp instead of apiConfigure clientId explicitly in the MCP client config. See HTTP Server Mode
SymptomCauseSolution
List results truncatedDefault per_page limitPass per_page (max 100) and page parameters to paginate
nextPage missing in responseLast page reachedNo more results — this is expected behavior
SymptomSolution
”Tool not found” in Copilot ChatCheck Output panel → MCP Logs for errors. Verify .vscode/mcp.json path
Server not appearing in MCP statusRun Ctrl+Shift+PMCP: List Servers to verify configuration
”Permission denied” on startupRun chmod +x /path/to/gitlab-mcp-server (Linux/macOS)
Server restarts repeatedlyCheck MCP Logs for missing GITLAB_URL or GITLAB_TOKEN
SymptomSolution
Tools not listedVerify .cursor/mcp.json exists and uses mcpServers key (not servers)
${input:...} not workingNot supported by Cursor — use environment variables instead

Enable verbose logging to diagnose issues:

Terminal window
# Stdio mode
LOG_LEVEL=debug ./gitlab-mcp-server 2>debug.log
# HTTP mode (logs interleaved with server output)
LOG_LEVEL=debug ./gitlab-mcp-server --http --gitlab-url=https://gitlab.example.com 2>debug.log

Debug logs include:

  • Every tool call with input parameters
  • GitLab API request/response details
  • Token validation events (last 4 characters only)
  • Session pool operations (HTTP mode)

If you cannot resolve an issue:

  1. Enable debug logging (LOG_LEVEL=debug) and capture the output
  2. Check the GitHub Issues for known problems
  3. Open a new issue with:
    • Server version (gitlab-mcp-server --version or check startup logs)
    • Operating system and architecture
    • MCP client name and version
    • Redacted debug logs (remove any tokens or sensitive data)
    • Steps to reproduce the issue