Better GitLab MCP Server

Um servidor MCP GitLab melhorado com correções de bugs e aprimoramentos para acessar recursos do GitLab.

Documentação

Servidor MCP do GitLab

GitHub stars npm downloads npm GitHub License Install in VS Code Ask DeepWiki MCP Toplist mcpindex

English | 한국어 | 简体中文

📖 Documentação → Guias de configuração, variáveis de ambiente e a referência completa de ferramentas estão no site de documentação hospedado.

Star History Chart

@zereight/mcp-gitlab

GitLab MCP otimizado para fluxos de trabalho de agentes — gerencie projetos, merge requests, issues, pipelines, wiki, releases, tags, marcos e muito mais via stdio, SSE e Streamable HTTP.

Suporta PAT, OAuth, modo somente leitura, URLs de API dinâmicas e autorização remota para VS Code, Claude, Cursor, Copilot e outros clientes MCP.

Por que usar este GitLab MCP?

  • 261 ferramentas + discover_tools — comece com um conjunto pequeno de ferramentas; ative mais em tempo de execução sem agrupamento estilo CQRS
  • Revisão de MR em 2 etapaslist_merge_request_changed_files → diff em lote get_merge_request_file_diff
  • Agent Skill integrado — orientação de fluxo de trabalho em skills/gitlab-mcp/
  • Autenticação flexível — Personal Access Token, fluxo OAuth2 local no navegador, proxy OAuth MCP e autorização remota por solicitação
  • Múltiplos transportes — stdio para clientes locais, SSE para clientes legados e Streamable HTTP para implantações remotas modernas
  • Configuração amigável para clientes — exemplos para Claude Code, Codex, Antigravity, OpenCode, Copilot, Cline, Roo Code, Cursor, Kilo Code e Amp Code
  • Pronto para self-hosted — funciona com instâncias GitLab personalizadas, configurações de proxy e roteamento dinâmico de URL de API

Como nos comparamos

@zereight/mcp-gitlabGitLab MCP A (comunidade estilo CQRS)
Melhor paraFluxos de trabalho de agentes de IAEmpresas multi-instância / ferramentas agrupadas
Modelo de ferramentas~261 ferramentas granulares + discover_tools~50–60 ferramentas agrupadas browse_* / manage_*
Revisão de MRDiff em lote em 2 etapasVaria
Node.js>=18.17Frequentemente >=24
LicençaMITVaria

Comparação completa →

Início rápido: escolha entre Personal Access Token ou configuração OAuth2 abaixo, instale @zereight/mcp-gitlab e use zereight-mcp-gitlab na configuração do seu cliente MCP.

Guias de Configuração de Clientes

Uso

Visão Geral da Configuração

Métodos de Autenticação

O servidor suporta quatro métodos de autenticação:

Para uso local/desktop (mais comum):

  1. Personal Access Token (GITLAB_PERSONAL_ACCESS_TOKEN) — configuração mais simples
  2. OAuth2 — Navegador Local (GITLAB_USE_OAUTH) — recomendado para melhor segurança

Para implantações servidor/remotas:

  1. OAuth2 — Proxy MCP (GITLAB_MCP_OAUTH) — para clientes MCP remotos como Claude.ai
  2. Autorização Remota (REMOTE_AUTHORIZATION) — implantações multi-usuário onde cada chamador fornece seu próprio token

Caminhos de configuração rápida

Para a configuração local mais simples, comece com um Personal Access Token. Para autenticação local baseada em navegador, use OAuth2. Para implantações remotas ou multi-usuário, continue para as seções MCP OAuth e Autorização Remota mais adiante neste README.

Instale o servidor uma vez:

brew tap zereight/gitlab-mcp https://github.com/zereight/gitlab-mcp
brew install zereight/gitlab-mcp/zereight-mcp-gitlab

Ou com npm:

npm install -g @zereight/mcp-gitlab

Ou com Nix, adicionando este flake ao seu próprio:

# flake.nix
inputs.gitlab-mcp.url = "github:zereight/gitlab-mcp";

# wherever you configure your MCP client:
command = lib.getExe inputs.gitlab-mcp.packages.${system}.default;

O caminho da store é fixado pelo seu arquivo de lock; atualize-o com nix flake update gitlab-mcp.

Os exemplos usam zereight-mcp-gitlab, um alias menos propenso a colisões para o binário legado mcp-gitlab. Se o seu cliente MCP não conseguir encontrá-lo, use o caminho absoluto de which zereight-mcp-gitlab.

Sem instalação global? Fixe npx na versão estável anterior (a versão recomendada por estas documentações), por exemplo npx -y @zereight/mcp-gitlab@2.1.60. Se você sempre quiser a versão mais recente, use npx -y @zereight/mcp-gitlab@latest em vez disso. O servidor imprime um aviso no stderr na inicialização quando uma versão mais nova está disponível (desative com GITLAB_DISABLE_VERSION_CHECK=true).

Usando Argumentos de CLI (para clientes com problemas de variáveis de ambiente)

Alguns clientes MCP (como o GitHub Copilot CLI) têm problemas com variáveis de ambiente. Use argumentos de CLI em vez disso:

{
  "mcpServers": {
    "gitlab": {
      "command": "zereight-mcp-gitlab",
      "args": ["--token=YOUR_GITLAB_TOKEN", "--api-url=https://gitlab.com/api/v4"],
      "tools": ["*"]
    }
  }
}

Argumentos de CLI disponíveis:

  • --token - GitLab Personal Access Token (substitui GITLAB_PERSONAL_ACCESS_TOKEN)
  • --api-url - URL da API do GitLab (substitui GITLAB_API_URL)
  • --read-only=true - Ativa o modo somente leitura (substitui GITLAB_READ_ONLY_MODE, obsoleto — prefira --permission-mode=readonly)
  • --permission-mode - Nível de permissão: readonly, modify (sem ferramentas de exclusão) ou full (substitui GITLAB_PERMISSION_MODE, padrão full)
  • --use-wiki=true - Ativa a API de wiki (substitui USE_GITLAB_WIKI, legado — prefira GITLAB_TOOLSETS=wiki)
  • --use-milestone=true - Ativa a API de marcos (substitui USE_MILESTONE, legado — prefira GITLAB_TOOLSETS=milestones)
  • --use-pipeline=true - Ativa a API de pipelines (substitui USE_PIPELINE, legado — prefira GITLAB_TOOLSETS=pipelines)
  • --disable-version-check=true - Desativa o aviso de nova versão na inicialização (substitui GITLAB_DISABLE_VERSION_CHECK)

Argumentos de CLI têm precedência sobre variáveis de ambiente.

zereight-mcp-gitlab auth é um subcomando (não uma flag do servidor MCP). Ele executa o fluxo de dispositivo do GitLab e sai. Veja Argumentos de CLI.

Filtragem fina de ferramentas: use GITLAB_PERMISSION_MODE=modify para permitir create/update enquanto bloqueia toda ferramenta de exclusão (incluindo mutações de exclusão via execute_graphql e ações push_files delete/move), ou GITLAB_PERMISSION_MODE=readonly para acesso somente leitura. Você também pode ativar grupos de ferramentas com GITLAB_TOOLSETS=<group,…>, permitir ferramentas individuais com GITLAB_TOOLS=<tool,…> (por exemplo, grupos somente leitura mais algumas ferramentas de escrita específicas), e negar por padrão com GITLAB_DENIED_TOOLS_REGEX. As flags legadas USE_GITLAB_WIKI / USE_MILESTONE / USE_PIPELINE são mantidas apenas para compatibilidade reversa. Veja Referência de Ferramentas e Variáveis de Ambiente.

  • sse
docker run -i --rm \
  -e HOST=0.0.0.0 \
  -e GITLAB_PERSONAL_ACCESS_TOKEN=your_gitlab_token \
  -e GITLAB_API_URL="https://gitlab.com/api/v4" \
  -e GITLAB_PERMISSION_MODE=readonly \
  -e GITLAB_TOOLSETS=wiki,milestones,pipelines \
  -e SSE=true \
  -e SSE_AUTH_TOKEN=your_mcp_sse_token \
  -p 3333:3002 \
  zereight050/gitlab-mcp
{
  "mcpServers": {
    "gitlab": {
      "type": "sse",
      "url": "http://localhost:3333/sse",
      "headers": {
        "Authorization": "Bearer your_mcp_sse_token"
      }
    }
  }
}
  • streamable-http
docker run -i --rm \
  -e HOST=0.0.0.0 \
  -e REMOTE_AUTHORIZATION=true \
  -e GITLAB_API_URL="https://gitlab.com/api/v4" \
  -e GITLAB_PERMISSION_MODE=readonly \
  -e GITLAB_TOOLSETS=wiki,milestones,pipelines \
  -e STREAMABLE_HTTP=true \
  -p 3333:3002 \
  zereight050/gitlab-mcp
{
  "mcpServers": {
    "gitlab": {
      "type": "streamable-http",
      "url": "http://localhost:3333/mcp",
      "headers": {
        "Authorization": "Bearer glpat-..."
      }
    }
  }
}

Usando o Proxy OAuth MCP (GITLAB_MCP_OAUTH)

Apenas para implantações servidor/remotas. Este modo requer que o servidor MCP seja implantado com uma URL HTTPS publicamente acessível. Para uso local/desktop, veja GITLAB_USE_OAUTH acima.

Para clientes MCP remotos que suportam a especificação OAuth MCP (por exemplo, Claude.ai). O servidor atua como um servidor de autorização OAuth 2.0 completo — solicitações não autenticadas recebem uma resposta 401 + WWW-Authenticate, que aciona o fluxo OAuth no navegador automaticamente no lado do cliente.

Clientes MCP remotos como OpenCode, MCPJam e Claude.ai podem enviar sua própria URL de callback durante a autorização. Se você não puder registrar cada URL de callback de cliente no GitLab, ative GITLAB_OAUTH_CALLBACK_PROXY=true. Com o modo proxy de callback, o GitLab só precisa de uma URI de redirecionamento registrada: {MCP_SERVER_URL}/callback.

GITLAB_OAUTH_REDIRECT_URI é apenas para OAuth local (GITLAB_USE_OAUTH). Ele não substitui URLs de callback de clientes OAuth MCP remotos e não deve ser usado para corrigir erros remotos de Unregistered redirect_uri.

Esta variável existe porque o fluxo OAuth local inicia um navegador na mesma máquina que o servidor MCP e escuta o callback em um servidor HTTP local, por exemplo http://127.0.0.1:8888/callback.

O OAuth MCP remoto é diferente. No modo GITLAB_MCP_OAUTH=true, o cliente MCP fornece sua própria URL de callback durante /authorize. GITLAB_OAUTH_REDIRECT_URI não substitui essa URL fornecida pelo cliente.

ModoAtivar comVariável de callbackURI de redirecionamento do GitLab
OAuth localGITLAB_USE_OAUTH=trueGITLAB_OAUTH_REDIRECT_URIhttp://127.0.0.1:8888/callback ou seu callback local
OAuth MCP remotoGITLAB_MCP_OAUTH=trueGITLAB_OAUTH_CALLBACK_PROXY=true{MCP_SERVER_URL}/callback

Use GITLAB_OAUTH_REDIRECT_URI apenas quando o próprio servidor MCP for o dono do callback do navegador local. Use GITLAB_OAUTH_CALLBACK_PROXY=true quando um cliente MCP remoto for o dono da URL de callback.

Como funciona: Você implanta este servidor MCP em algum lugar com uma URL HTTPS pública. Clientes MCP se conectam a {MCP_SERVER_URL}/mcp. O servidor lida com o fluxo OAuth 2.0, trocando credenciais com o GitLab em nome do cliente.

Pré-requisitos:

  1. Uma URL de servidor HTTPS publicamente acessível (MCP_SERVER_URL) — use ngrok para testes locais
  2. Um aplicativo OAuth GitLab pré-registrado com escopos api (ou read_api) — Vá para Admin areaApplications, defina a URI de redirecionamento para {MCP_SERVER_URL}/callback
Variável de AmbienteObrigatóriaDescrição
GITLAB_MCP_OAUTHDefina como true para ativar
GITLAB_API_URLURL base da API do GitLab
GITLAB_OAUTH_APP_IDID do Aplicativo OAuth do GitLab
MCP_SERVER_URLURL HTTPS pública deste servidor MCP
STREAMABLE_HTTPDeve ser true
GITLAB_OAUTH_CALLBACK_PROXYopcionalDefina como true para usar a URL fixa /callback do servidor MCP
GITLAB_OAUTH_SCOPESopcionalEscopos separados por vírgula (padrão: api,read_api,read_user)
GITLAB_OAUTH_ALLOWED_GROUPSopcionalCaminhos completos de grupos separados por vírgula — apenas membros (e membros de subgrupos) podem obter um token (substitui o obsoleto GITLAB_ALLOWED_GROUPS)

Quando STREAMABLE_HTTP=true, credenciais GitLab do lado do servidor (GITLAB_PERSONAL_ACCESS_TOKEN, GITLAB_JOB_TOKEN, GITLAB_AUTH_COOKIE_PATH ou GITLAB_USE_OAUTH) exigem REMOTE_AUTHORIZATION=true, GITLAB_MCP_OAUTH=true ou STREAMABLE_HTTP_AUTH_TOKEN.

Solução de problemas Unregistered redirect_uri

Verifique o redirect_uri na URL do navegador. Se ele apontar para um callback de cliente como http://127.0.0.1:xxxxx/.../callback, habilite:

GITLAB_OAUTH_CALLBACK_PROXY=true

Não corrija OAuth remoto do MCP alterando GITLAB_OAUTH_REDIRECT_URI. Essa variável é apenas para OAuth local (GITLAB_USE_OAUTH).

docker run -i --rm \
  -e HOST=0.0.0.0 \
  -e GITLAB_MCP_OAUTH=true \
  -e GITLAB_OAUTH_CALLBACK_PROXY=true \
  -e STREAMABLE_HTTP=true \
  -e MCP_SERVER_URL=https://your-server.example.com \
  -e GITLAB_API_URL="https://gitlab.com/api/v4" \
  -e GITLAB_OAUTH_APP_ID=your_app_id \
  -p 3000:3002 \
  zereight050/gitlab-mcp

Configuração do cliente MCP:

{
  "mcpServers": {
    "gitlab": {
      "type": "http",
      "url": "https://your-server.example.com/mcp"
    }
  }
}

Usando Autorização Remota (REMOTE_AUTHORIZATION)

Apenas para implantações de servidor/remotas. Cada chamador HTTP fornece seu próprio token do GitLab diretamente nos cabeçalhos da requisição — sem fluxo OAuth envolvido.

Para implantações multiusuário ou multi-tenant onde cada chamador fornece seu próprio token do GitLab no cabeçalho da requisição HTTP. Sem fluxo OAuth — o servidor MCP encaminha o token para o GitLab em nome do chamador.

Prioridade de cabeçalho: Private-Token > JOB-TOKEN > Authorization: Bearer

Variável de AmbienteObrigatóriaDescrição
REMOTE_AUTHORIZATIONDefina como true para habilitar
STREAMABLE_HTTPDeve ser true
ENABLE_DYNAMIC_API_URLopcionalPermitir URL do GitLab por requisição via cabeçalho X-GitLab-API-URL
GITLAB_ALLOWED_HOSTSopcionalHosts X-GitLab-API-URL permitidos separados por vírgula; hosts GITLAB_API_URL são sempre permitidos
GITLAB_ALLOW_UNAUTHENTICATED_TOOL_DISCOVERYopcionalPermitir apenas initialize, notifications/initialized, tools/list e server/discover não autenticados (chamadas de ferramentas ainda exigem autenticação)
MCP_SERVER_URL / MCP_ALLOWED_HOSTS / MCP_ALLOWED_ORIGINSopcionalValores permitidos de host/origem pública /mcp para proteção contra rebinding de DNS
MCP_TRUST_PROXYopcionalConfiar nos cabeçalhos Forwarded / X-Forwarded-* atrás de um proxy reverso (URLs de download, req.ip do Express, limites de taxa IP /mcp, limites de taxa OAuth)

GITLAB_ALLOW_UNAUTHENTICATED_TOOL_DISCOVERY=true é destinado a gateways MCP ou UIs administrativas que precisam inspecionar metadados de ferramentas antes que um usuário forneça um token do GitLab. Deixe-o desabilitado, a menos que a lista de ferramentas seja segura para expor na sua implantação.

Quando MCP_SERVER_URL não está definido, URLs de download remoto usam como fallback o endereço local do servidor. Defina MCP_TRUST_PROXY=true somente se o servidor for acessível através de um proxy reverso confiável e o acesso direto do cliente ao servidor MCP estiver bloqueado. Isso habilita o trust proxy do Express para Streamable HTTP e SSE, deriva URLs de download públicos de Forwarded / X-Forwarded-Proto / X-Forwarded-Host / X-Forwarded-Prefix, e mantém o limite de taxa do endpoint OAuth funcionando quando proxies enviam X-Forwarded-For com uma porta de cliente (por exemplo 1.2.3.4:5678). Implantações existentes de OAuth+proxy devem definir isso explicitamente após o sinalizador ter sido introduzido.

Exemplo de cabeçalhos de requisição:

Private-Token: glpat-xxxxxxxxxxxxxxxxxxxx

ou usando um token Bearer:

Authorization: Bearer glpat-xxxxxxxxxxxxxxxxxxxx

⚠️ REMOTE_AUTHORIZATION não é compatível com transporte SSE. STREAMABLE_HTTP=true é obrigatório.

Variáveis de Ambiente

Use a referência dedicada para a lista completa de variáveis de ambiente:

A maioria dos usuários só precisa de um destes conjuntos iniciais:

  • PAT local: GITLAB_PERSONAL_ACCESS_TOKEN, GITLAB_API_URL
  • OAuth local: GITLAB_USE_OAUTH=true, GITLAB_OAUTH_CLIENT_ID, GITLAB_OAUTH_REDIRECT_URI, GITLAB_API_URL
  • HTTP remoto multiusuário: STREAMABLE_HTTP=true, REMOTE_AUTHORIZATION=true (ou GITLAB_MCP_OAUTH=true), MCP_TRUST_PROXY=true (atrás de um proxy reverso), MAX_REQUESTS_PER_MINUTE=300, MCP_SERVER_URL ou MCP_ALLOWED_HOSTS, HOST, PORT
  • Múltiplas implantações lado a lado: defina um MCP_SERVER_NAME distinto por instância (ex.: gitlab-selfhosted-readonly) para que clientes, logs e telemetria possam diferenciá-las
  • HPA multi-pod (stateless): acima + OAUTH_STATELESS_MODE=true, OAUTH_STATELESS_SECRET (iguais em todos os pods). Veja Modo Stateless.

Variáveis comumente referenciadas:

  • GITLAB_API_URL
  • GITLAB_PERSONAL_ACCESS_TOKEN
  • GITLAB_USE_OAUTH
  • REMOTE_AUTHORIZATION
  • MCP_TRUST_PROXY
  • MAX_REQUESTS_PER_MINUTE
  • MAX_SESSIONS
  • MCP_ALLOWED_HOSTS
  • MCP_ALLOWED_ORIGINS
  • GITLAB_MCP_OAUTH
  • GITLAB_OAUTH_CALLBACK_PROXY
  • OAUTH_REGISTER_RATE_LIMIT_PER_HOUR
  • OAUTH_STATELESS_MODE
  • OAUTH_STATELESS_SECRET

O documento de referência também cobre:

  • variáveis de autenticação e OAuth
  • variáveis de proxy OAuth do MCP
  • variáveis de filtragem de projetos e ferramentas
  • descoberta dinâmica de ferramentas via discover_tools (ativação de conjunto de ferramentas sob demanda)
  • variáveis de transporte e sessão
  • variáveis de proxy e TLS

Para detalhes do modo proxy de callback, veja Proxy de Callback OAuth do GitLab MCP.

Configuração de Autorização Remota (Suporte Multiusuário)

Ao usar REMOTE_AUTHORIZATION=true, o servidor MCP pode suportar vários usuários, cada um com seu próprio token do GitLab passado via cabeçalhos HTTP. Isso é útil para:

  • Instâncias de servidor MCP compartilhadas onde cada usuário precisa do seu próprio acesso ao GitLab
  • Integrações de IDE que podem injetar tokens específicos de usuário nas requisições MCP

Exemplo de Configuração:

# Start server with remote authorization
docker run -d \
  -e HOST=0.0.0.0 \
  -e STREAMABLE_HTTP=true \
  -e REMOTE_AUTHORIZATION=true \
  -e GITLAB_API_URL="https://gitlab.com/api/v4" \
  -e GITLAB_PERMISSION_MODE=readonly \
  -e SESSION_TIMEOUT_SECONDS=3600 \
  -p 3333:3002 \
  zereight050/gitlab-mcp

Configuração do Cliente:

Seu IDE ou cliente MCP deve enviar um destes cabeçalhos com cada requisição:

Authorization: Bearer glpat-xxxxxxxxxxxxxxxxxxxx

ou

Private-Token: glpat-xxxxxxxxxxxxxxxxxxxx

O token é armazenado por sessão (identificada pelo cabeçalho mcp-session-id) e reutilizado para requisições subsequentes na mesma sessão.

Exemplo de Configuração de Cliente de Autorização Remota com Cursor

{
  "mcpServers": {
    "GitLab": {
      "url": "http(s)://<your_mcp_gitlab_server>/mcp",
      "headers": {
        "Authorization": "Bearer glpat-..."
      }
    }
  }
}

Notas Importantes:

  • A autorização remota só funciona com transporte Streamable HTTP
  • Cada sessão é isolada — tokens de uma sessão não podem acessar dados de outra sessão Tokens são limpos automaticamente quando as sessões são fechadas
  • Tempo limite de sessão: Tokens de autenticação expiram após SESSION_TIMEOUT_SECONDS (padrão 1 hora) de inatividade. Após o tempo limite, o cliente deve enviar os cabeçalhos de autenticação novamente. A sessão de transporte permanece ativa.
  • Cada requisição redefine o temporizador de tempo limite para aquela sessão
  • Limite de taxa: Requisições /mcp são limitadas a MAX_REQUESTS_PER_MINUTE por IP de cliente, e por sessão MCP ao usar OAuth ou autorização remota (padrão 60). Veja environment-variables.md.
  • Limite de capacidade: O servidor aceita até MAX_SESSIONS sessões concorrentes (padrão 1000)

Configuração MCP OAuth (OAuth Nativo do Claude.ai)

Ao usar GITLAB_MCP_OAUTH=true, o servidor atua como um proxy OAuth para sua instância do GitLab. O Claude.ai (e qualquer cliente compatível com a especificação MCP) lida com todo o fluxo de autenticação no navegador automaticamente — sem necessidade de gerenciamento manual de Token de Acesso Pessoal.

Pré-requisitos:

Um aplicativo OAuth do GitLab pré-registrado é obrigatório. O GitLab restringe aplicativos registrados dinamicamente (não verificados) ao escopo mcp, que é insuficiente para chamadas de API (é necessário api ou read_api).

  1. Vá para sua instância do GitLab → Área de Administração > Aplicativos (em toda a instância) ou Configurações do Usuário > Aplicativos (pessoal)
  2. Crie um novo aplicativo com:
    • Confidencial: desmarcado
    • Escopos: api, read_api, read_user (ou quaisquer escopos que você pretenda solicitar via GITLAB_OAUTH_SCOPES)
  3. Salve e copie o ID do Aplicativo — este é seu GITLAB_OAUTH_APP_ID

Como funciona:

  1. O usuário adiciona a URL do seu servidor MCP no Claude.ai
  2. O Claude.ai descobre os endpoints OAuth via /.well-known/oauth-authorization-server
  3. O Claude.ai se registra via Registro Dinâmico de Cliente (POST /register) — tratado localmente pelo servidor MCP (cada cliente recebe um ID de cliente virtual)
  4. O Claude.ai redireciona o navegador do usuário para a página de login do GitLab usando o aplicativo OAuth pré-registrado
  5. O usuário autentica; o GitLab redireciona de volta para https://claude.ai/api/mcp/auth_callback
  6. O Claude.ai envia Authorization: Bearer <token> em cada requisição MCP
  7. O servidor valida o token com o GitLab e o armazena por sessão

Configuração do servidor:

docker run -d \
  -e STREAMABLE_HTTP=true \
  -e GITLAB_MCP_OAUTH=true \
  -e GITLAB_OAUTH_APP_ID="your-gitlab-oauth-app-client-id" \
  -e GITLAB_API_URL="https://gitlab.example.com/api/v4" \
  -e MCP_SERVER_URL="https://your-mcp-server.example.com" \
  -p 3002:3002 \
  zereight050/gitlab-mcp

Para desenvolvimento local (HTTP permitido):

MCP_DANGEROUSLY_ALLOW_INSECURE_ISSUER_URL=true \
STREAMABLE_HTTP=true \
GITLAB_MCP_OAUTH=true \
GITLAB_OAUTH_APP_ID=your-gitlab-oauth-app-client-id \
MCP_SERVER_URL=http://localhost:3002 \
GITLAB_API_URL=https://gitlab.com/api/v4 \
node build/index.js

Configuração do Claude.ai:

{
  "mcpServers": {
    "GitLab": {
      "url": "https://your-mcp-server.example.com/mcp"
    }
  }
}

Nenhum campo headers é necessário — o Claude.ai obtém o token via OAuth automaticamente.

Variáveis de ambiente:

VariávelObrigatóriaDescrição
GITLAB_MCP_OAUTHSimDefina como true para habilitar
GITLAB_OAUTH_APP_IDSimID do cliente do aplicativo OAuth do GitLab pré-registrado
MCP_SERVER_URLSimURL HTTPS pública do seu servidor MCP; também permitida para verificações de Host/Origem /mcp
GITLAB_API_URLSimURL da API da sua instância do GitLab (ex.: https://gitlab.com/api/v4)
STREAMABLE_HTTPSimDeve ser true (SSE não é suportado)
GITLAB_OAUTH_SCOPESNãoEscopos do GitLab separados por vírgula para solicitar (ex.: api,read_user). Padrão é api (ou read_api quando GITLAB_READ_ONLY_MODE=true). O aplicativo pré-registrado deve ser configurado com pelo menos esses escopos.
OAUTH_REGISTER_RATE_LIMIT_PER_HOURNãoLimite contínuo por IP para Registro Dinâmico de Cliente (POST /register). Padrão 20/hora; intervalo 11000. Aumente quando clientes (ex.: múltiplas janelas de IDE) atingirem a limitação de registro. Não é um limite da API do GitLab.
MCP_DANGEROUSLY_ALLOW_INSECURE_ISSUER_URLNãoDefina true apenas para desenvolvimento HTTP local

Notas Importantes:

  • OAuth do MCP funciona apenas com transporte HTTP Streamable (SSE=true é incompatível)
  • Cada sessão de usuário armazena seu próprio token OAuth — as sessões são totalmente isoladas
  • Tempo limite de sessão, limitação de taxa e limites de capacidade se aplicam de forma idêntica ao modo REMOTE_AUTHORIZATION (SESSION_TIMEOUT_SECONDS, MAX_REQUESTS_PER_MINUTE, MAX_SESSIONS)
  • Limitação de taxa DCR: POST /register é limitado a OAUTH_REGISTER_RATE_LIMIT_PER_HOUR por IP de cliente (padrão 20/hora). Separado dos limites de /mcp e das cotas da API do GitLab. Consulte environment-variables.md.
  • Fallback de autenticação por cabeçalho: quando os cabeçalhos de requisição Private-Token ou JOB-TOKEN estão presentes, a validação OAuth é ignorada e o token bruto é usado diretamente para essa sessão. Isso permite que PATs e tokens de job de CI sejam usados junto com o fluxo OAuth na mesma instância do servidor. Authorization: Bearer é sempre tratado como um token OAuth — use Private-Token para autenticação por cabeçalho baseada em PAT.

Arquivos de Habilidades do Agente

Arquivos de habilidades pré-construídos estão disponíveis em skills/gitlab-mcp/ para agentes de IA que suportam carregamento de habilidades/instruções (Claude Code, GitHub Copilot, Cursor, etc.).

  • SKILL.md — Guia principal (~800 tokens) com visão geral do conjunto de ferramentas, fluxos de trabalho principais e dicas de parâmetros
  • reference/ — Documentação detalhada de fluxos de trabalho para revisão de código, merge requests, issues, pipelines e triagem de vulnerabilidades

Instale com a CLI skills:

npx skills add zereight/gitlab-mcp --skill gitlab-mcp-skill

Registre o diretório de habilidades no seu cliente de IA para obter orientação ideal de uso das ferramentas sem depender apenas da resposta completa do ListTools.

Ferramentas 🛠️

Clique para expandir
  1. merge_merge_request - Mesclar um merge request
  2. approve_merge_request - Aprovar um merge request
  3. unapprove_merge_request - Desaprovar um merge request
  4. get_merge_request_approval_state - Obter detalhes de aprovação do merge request, incluindo aprovadores
  5. get_merge_request_conflicts - Obter os conflitos de um merge request
  6. list_merge_request_pipelines - Listar pipelines de um merge request com paginação
  7. execute_graphql - Executar uma consulta GraphQL do GitLab
  8. create_or_update_file - Criar ou atualizar um arquivo em um projeto GitLab
  9. search_repositories - Pesquisar projetos GitLab
  10. create_repository - Criar um novo projeto GitLab
  11. create_group - Criar novo grupo ou subgrupo
  12. get_file_contents - Obter o conteúdo de um arquivo ou diretório de um projeto GitLab
  13. push_files - Enviar vários arquivos em um único commit
  14. create_issue - Criar uma nova issue
  15. create_merge_request - Criar um novo merge request
  16. fork_repository - Bifurcar um projeto para sua conta ou namespace especificado
  17. create_branch - Criar uma nova branch
  18. get_branch - Obter detalhes da branch (commit, status de proteção)
  19. list_branches - Listar branches no projeto com filtro de pesquisa
  20. delete_branch - Excluir branch do projeto
  21. list_protected_branches - Listar branches protegidas em um projeto, suporta filtro de pesquisa
  22. get_protected_branch - Obter detalhes de uma única branch protegida (níveis de acesso, configurações de push forçado)
  23. protect_branch - Proteger uma branch do repositório (definir níveis de acesso de push/merge/desproteção)
  24. unprotect_branch - Remover proteção de uma branch anteriormente protegida
  25. update_default_branch - Alterar a branch padrão de um projeto
  26. get_merge_request - Obter detalhes de um merge request (mergeRequestIid ou branchName obrigatório). Defina include_summaries=true para resumos de deployment/commit/aprovação
  27. get_merge_request_diffs - Obter as alterações/diffs de um merge request (mergeRequestIid ou branchName obrigatório)
  28. list_merge_request_changed_files - Listar caminhos de arquivos alterados em um merge request sem conteúdo de diff (mergeRequestIid ou branchName obrigatório)
  29. list_merge_request_diffs - Listar diffs de merge request com paginação (mergeRequestIid ou branchName obrigatório)
  30. get_merge_request_file_diff - Obter diffs de arquivos específicos de um merge request (mergeRequestIid ou branchName obrigatório)
  31. list_merge_request_versions - Listar todas as versões de um merge request
  32. get_merge_request_version - Obter uma versão específica de um merge request
  33. get_branch_diffs - Obter diffs entre duas branches ou commits
  34. update_merge_request - Atualizar um merge request (mergeRequestIid ou branchName obrigatório)
  35. create_note - Criar uma nova nota (comentário) em uma issue ou merge request
  36. create_merge_request_thread - Criar uma nova thread em um merge request
  37. resolve_merge_request_thread - Resolver uma thread em um merge request
  38. mr_discussions - Listar itens de discussão de um merge request
  39. delete_merge_request_discussion_note - Excluir uma nota de discussão em um merge request
  40. update_merge_request_discussion_note - Atualizar uma nota de discussão em um merge request
  41. create_merge_request_discussion_note - Adicionar uma nova nota de discussão a uma thread existente de merge request
  42. create_merge_request_note - Adicionar uma nova nota a um merge request
  43. delete_merge_request_note - Excluir uma nota existente de merge request
  44. get_merge_request_note - Obter uma nota específica de um merge request
  45. get_merge_request_notes - Listar notas de um merge request
  46. update_merge_request_note - Modificar uma nota existente de merge request
  47. get_draft_note - Obter uma única nota de rascunho de um merge request
  48. list_draft_notes - Listar notas de rascunho de um merge request
  49. create_draft_note - Criar uma nota de rascunho para um merge request
  50. update_draft_note - Atualizar uma nota de rascunho existente
  51. delete_draft_note - Excluir uma nota de rascunho
  52. publish_draft_note - Publicar uma única nota de rascunho
  53. bulk_publish_draft_notes - Publicar todas as notas de rascunho de um merge request. Opcionalmente define reviewer_state e publica uma nota de resumo (GitLab 19.2+). Pode definir reviewer_state mesmo sem rascunhos.
  54. list_merge_request_emoji_reactions - Listar todas as reações de emoji em um merge request
  55. list_merge_request_note_emoji_reactions - Listar todas as reações de emoji em uma nota de merge request. Passe discussion_id para respostas em threads de discussão.
  56. create_merge_request_emoji_reaction - Adicionar uma reação de emoji a um merge request (ex.: thumbsup, rocket, eyes)
  57. delete_merge_request_emoji_reaction - Remover uma reação de emoji de um merge request
  58. create_merge_request_note_emoji_reaction - Adicionar uma reação de emoji a uma nota de merge request. Passe discussion_id para respostas em threads de discussão.
  59. delete_merge_request_note_emoji_reaction - Remover uma reação de emoji de uma nota de merge request. Passe discussion_id para respostas em threads de discussão.
  60. update_issue_note - Modificar uma nota existente de thread de issue
  61. create_issue_note - Adicionar uma nota a uma issue, opcionalmente respondendo a uma thread de discussão
  62. list_issue_emoji_reactions - Listar todas as reações de emoji em uma issue
  63. list_issue_note_emoji_reactions - Listar todas as reações de emoji em uma nota de issue. Passe discussion_id para respostas em threads de discussão.
  64. create_issue_emoji_reaction - Adicionar uma reação de emoji a uma issue (ex.: thumbsup, rocket, eyes)
  65. delete_issue_emoji_reaction - Remover uma reação de emoji de uma issue
  66. create_issue_note_emoji_reaction - Adicionar uma reação de emoji a uma nota de issue. Passe discussion_id para respostas em threads de discussão.
  67. delete_issue_note_emoji_reaction - Remover uma reação de emoji de uma nota de issue. Passe discussion_id para respostas em threads de discussão.
  68. list_issues - Listar issues (padrão: criadas pelo usuário atual; use scope='all' para todas)
  69. my_issues - Listar issues atribuídas ao usuário autenticado
  70. get_issue - Obter detalhes de uma issue específica. Retorna um milestone resumido por padrão; defina full_response=true para o objeto milestone completo
  71. update_issue - Atualizar uma issue. Retorna uma confirmação resumida por padrão; defina full_response=true para o objeto completo da issue atualizada
  72. update_issue_description_patch - Aplicar um patch (busca/substituição ou diff unificado) à descrição de uma issue. Reduz o uso de tokens ao permitir pequenas alterações sem enviar a descrição completa. Suporta dry_run para pré-visualizar alterações e create_note para resumir atualizações.
  73. delete_issue - Excluir uma issue
  74. list_todos - Listar itens de tarefas (to-do) do GitLab para o usuário atual
  75. mark_todo_done - Marcar um item de tarefa (to-do) do GitLab como concluído
  76. mark_all_todos_done - Marcar todos os itens de tarefa (to-do) pendentes do GitLab como concluídos para o usuário atual
  77. list_issue_links - Listar todos os links de issue para uma issue específica
  78. list_issue_discussions - Listar discussões de uma issue
  79. get_issue_link - Obter um link de issue específico
  80. create_issue_link - Criar um link de issue entre duas issues
  81. delete_issue_link - Excluir um link de issue
  82. list_namespaces - Listar todos os namespaces (usuários e grupos) disponíveis para o usuário atual. Filtre por kind='group' para apenas grupos.
  83. get_namespace - Obter detalhes de um namespace (usuário ou grupo) por ID ou caminho. Grupos são namespaces com kind='group'.
  84. verify_namespace - Verificar se um caminho de namespace existe. Use parent_id para limitar a verificação a um namespace pai específico — obrigatório para namespaces aninhados onde o mesmo caminho pode existir sob diferentes pais.
  85. get_project - Obter detalhes de um projeto específico
  86. list_projects - Listar projetos acessíveis pelo usuário atual
  87. update_project - Atualizar configurações do projeto, como descrição, visibilidade, branch padrão e níveis de acesso a recursos
  88. list_project_members - Listar membros de um projeto GitLab
  89. list_group_members - Listar membros de um grupo GitLab com pesquisa opcional por nome ou nome de usuário
  90. list_labels - Listar labels de um projeto
  91. get_label - Obter um único label de um projeto
  92. create_label - Criar um novo label em um projeto
  93. update_label - Atualizar um label existente em um projeto
  94. delete_label - Excluir um label de um projeto
  95. list_group_projects - Listar projetos em um grupo
  96. list_wiki_pages - Listar páginas wiki em um projeto
  97. get_wiki_page - Obter detalhes de uma página wiki específica
  98. create_wiki_page - Criar uma página wiki em um projeto
  99. update_wiki_page - Atualizar uma página wiki em um projeto
  100. delete_wiki_page - Excluir uma página wiki de um projeto
  101. list_group_wiki_pages - Listar páginas wiki em um grupo
  102. get_group_wiki_page - Obter detalhes de uma página wiki específica de grupo
  103. create_group_wiki_page - Criar uma página wiki em um grupo
  104. update_group_wiki_page - Atualizar uma página wiki em um grupo
  105. delete_group_wiki_page - Excluir uma página wiki de um grupo
  106. get_repository_tree - Listar arquivos e diretórios em um repositório
  107. list_pipelines - Listar pipelines com opções de filtro
  108. get_pipeline - Obter detalhes de um pipeline específico
  109. get_pipeline_variables - Obter variáveis configuradas para um pipeline
  110. get_pipeline_test_report - Obter relatório de testes do pipeline
  111. get_pipeline_test_report_summary - Obter resumo do relatório de testes do pipeline
  112. delete_pipeline - Excluir um pipeline. Requer o papel de Proprietário do projeto, não pode ser desfeito e não exclui automaticamente pipelines filhos.
  113. update_pipeline_metadata - Atualizar metadados do pipeline
  114. list_deployments - Listar deployments com opções de filtro
  115. get_deployment - Obter detalhes do deployment, incluindo approval_summary, approvals e pending_approval_count quando o GitLab os fornecer
  116. create_deployment - Criar um deployment
  117. update_deployment - Atualizar o status de um deployment
  118. delete_deployment - Excluir um deployment
  119. list_deployment_merge_requests - Listar merge requests enviados com um deployment
  120. approve_deployment - Aprovar ou rejeitar um deployment de ambiente protegido
  121. list_environments - Listar ambientes em um projeto
  122. get_environment - Obter detalhes de um ambiente específico
  123. update_environment - Atualizar um ambiente
  124. delete_environment - Excluir um ambiente interrompido
  125. stop_environment - Interromper um ambiente
  126. stop_stale_environments - Interromper ambientes obsoletos elegíveis; ambientes protegidos são excluídos e os ambientes são interrompidos, não excluídos
  127. delete_review_app_environments - Agendar exclusão de ambientes de review-app interrompidos uma semana depois; dry_run padrão é true e o agendamento real requer dry_run=false
  128. list_pipeline_triggers - Listar tokens de trigger de pipeline do projeto
  129. get_pipeline_trigger - Obter um trigger de pipeline do projeto
  130. create_pipeline_trigger - Criar um trigger de pipeline do projeto
  131. update_pipeline_trigger - Atualizar um trigger de pipeline do projeto
  132. delete_pipeline_trigger - Excluir um trigger de pipeline do projeto
  133. trigger_pipeline - Acionar um pipeline com um token de trigger de pipeline
  134. list_pipeline_jobs - Listar todos os jobs em um pipeline específico
  135. list_pipeline_trigger_jobs - Listar jobs de trigger (bridges) em um pipeline
  136. get_pipeline_job - Obter detalhes de um número de job de pipeline do GitLab
  137. get_pipeline_job_output - Obter a saída/rastro de um job de pipeline com paginação opcional
  138. validate_ci_lint - Validar o conteúdo YAML de CI/CD do GitLab fornecido para um projeto
  139. validate_project_ci_lint - Validar uma configuração .gitlab-ci.yml existente para um projeto
  140. list_ci_catalog_resources - Listar recursos/componentes do Catálogo de CI/CD do GitLab visíveis para o usuário
  141. get_ci_catalog_resource - Obter detalhes de um recurso do Catálogo de CI/CD do GitLab, incluindo versões e componentes
  142. create_pipeline - Criar um novo pipeline para uma branch ou tag
  143. retry_pipeline - Repetir um pipeline com falha ou cancelado
  144. cancel_pipeline - Cancelar um pipeline em execução
  145. list_pipeline_schedules - Listar agendamentos de pipeline em um projeto, opcionalmente filtrados por ativos ou inativos
  146. get_pipeline_schedule - Obter detalhes de um agendamento de pipeline específico, incluindo suas variáveis e último pipeline
  147. list_pipeline_schedule_pipelines - Listar os pipelines que um agendamento de pipeline acionou
  148. create_pipeline_schedule - Criar um novo agendamento de pipeline para uma branch ou tag
  149. update_pipeline_schedule - Atualizar um agendamento de pipeline existente
  150. delete_pipeline_schedule - Excluir um agendamento de pipeline
  151. play_pipeline_schedule - Executar um agendamento de pipeline imediatamente
  152. take_ownership_pipeline_schedule - Assumir a propriedade de um agendamento de pipeline
  153. get_pipeline_schedule_variable - Obter uma única variável de um agendamento de pipeline
  154. create_pipeline_schedule_variable - Criar uma variável para um agendamento de pipeline
  155. update_pipeline_schedule_variable - Atualizar uma variável de um agendamento de pipeline
  156. delete_pipeline_schedule_variable - Excluir uma variável de um agendamento de pipeline
  157. play_pipeline_job - Executar um job de pipeline manual
  158. play_pipeline_jobs - Executar vários jobs de pipeline manual sequencialmente
  159. retry_pipeline_job - Tentar novamente um job de pipeline com falha ou cancelado
  160. cancel_pipeline_job - Cancelar um job de pipeline em execução
  161. erase_pipeline_job - Apagar o log e os artefatos de um job de pipeline
  162. wait_for_pipeline - Aguardar um pipeline atingir um status terminal
  163. wait_for_job - Aguardar um job atingir um status terminal
  164. list_job_artifacts - Listar arquivos de artefatos no arquivo de um job
  165. download_job_artifacts - Baixar o arquivo de artefatos do job (zip) e salvar em um caminho local
  166. get_job_artifact_file - Obter o conteúdo de um único arquivo dos artefatos de um job
  167. list_merge_requests - Listar merge requests (sem project_id: MRs do usuário; com project_id: MRs do projeto)
  168. list_group_merge_requests - Listar merge requests em todos os projetos de um grupo e seus subgrupos
  169. list_milestones - Listar marcos com opções de filtro
  170. get_milestone - Obter detalhes de um marco específico
  171. create_milestone - Criar um novo marco
  172. edit_milestone - Editar um marco existente
  173. delete_milestone - Excluir um marco
  174. get_milestone_issue - Obter issues associadas a um marco específico
  175. get_milestone_merge_requests - Obter merge requests associados a um marco específico
  176. promote_milestone - Promover um marco para o próximo estágio
  177. get_milestone_burndown_events - Obter eventos de burndown para um marco específico
  178. list_group_milestones - Listar marcos de grupo com opções de filtro
  179. get_group_milestone - Obter detalhes de um marco de grupo específico
  180. create_group_milestone - Criar um novo marco de grupo
  181. edit_group_milestone - Editar um marco de grupo existente
  182. delete_group_milestone - Excluir um marco de grupo
  183. get_group_milestone_issue - Obter issues associadas a um marco de grupo específico
  184. get_group_milestone_merge_requests - Obter merge requests associados a um marco de grupo específico
  185. get_group_milestone_burndown_events - Obter eventos de burndown para um marco de grupo específico
  186. get_users - Obter detalhes de usuário do GitLab por nomes de usuário
  187. get_user - Obter detalhes de usuário por ID
  188. whoami - Obter detalhes do usuário autenticado atual
  189. list_commits - Listar commits do repositório com opções de filtro
  190. get_commit - Obter detalhes de um commit específico
  191. get_commit_diff - Obter alterações/diffs de um commit específico
  192. get_file_blame - Obter git blame para um arquivo em uma ref específica. Cada entrada mapeia um intervalo contíguo de linhas de origem para o commit que as alterou por último (id, author, authored_date, message). Use range_start/range_end para limitar o blame a linhas específicas.
  193. list_commit_statuses - Listar status de um commit
  194. create_commit_status - Criar ou atualizar o status de um commit
  195. list_group_iterations - Listar iterações de grupo com opções de filtro
  196. upload_markdown - Enviar um arquivo para uso em conteúdo markdown
  197. download_attachment - Baixar um arquivo enviado de um projeto (imagens retornadas como base64; use local_path para salvar em disco)
  198. health_check - Verificar o status do servidor e a autenticação. Quando autenticado, também informa a versão da instância do GitLab de GET /api/v4/version (version, revision, enterprise). Falhas na consulta de versão não falham a verificação de saúde — esses campos são omitidos.
  199. list_events - Listar eventos do usuário autenticado (before/after: AAAA-MM-DD)
  200. get_project_events - Listar eventos de um projeto (before/after: AAAA-MM-DD)
  201. list_releases - Listar todos os releases de um projeto
  202. get_release - Obter um release pelo nome da tag
  203. create_release - Criar um novo release
  204. update_release - Atualizar um release existente
  205. delete_release - Excluir um release (não exclui a tag)
  206. create_release_evidence - Criar evidência de release (Premium/Ultimate)
  207. download_release_asset - Baixar um arquivo de asset de release pelo caminho direto do asset
  208. list_tags - Listar tags do repositório de um projeto
  209. get_tag - Obter uma tag do repositório pelo nome
  210. create_tag - Criar uma nova tag no repositório
  211. delete_tag - Excluir uma tag do repositório
  212. get_tag_signature - Obter a assinatura X.509 de uma tag assinada (404 se não assinada)
  213. get_work_item - Obter um work item com detalhes completos, incluindo status, hierarquia, tipo e widgets
  214. list_work_items - Listar work items com filtros (type, state, search, assignees, labels)
  215. create_work_item - Criar um work item (issue, task, incident, epic, etc.) com suporte completo de campos
  216. update_work_item - Atualizar um work item (title, description, labels, assignees, state, parent, custom fields, etc.)
  217. convert_work_item_type - Converter um work item para um tipo diferente
  218. list_work_item_statuses - Listar status disponíveis para um tipo de work item (Premium/Ultimate)
  219. list_custom_field_definitions - Listar definições de campos personalizados para um tipo de work item
  220. move_work_item - Mover um work item para um projeto diferente
  221. list_work_item_notes - Listar notas e discussões em um work item
  222. create_work_item_note - Adicionar uma nota a um work item (suporta Markdown, notas internas, threads)
  223. list_work_item_emoji_reactions - Listar todas as reações de emoji em um work item
  224. list_work_item_note_emoji_reactions - Listar todas as reações de emoji em uma nota de work item (comentário, thread ou resposta de thread)
  225. create_work_item_emoji_reaction - Adicionar uma reação de emoji a um work item (ex.: thumbsup, rocket, eyes)
  226. delete_work_item_emoji_reaction - Remover uma reação de emoji de um work item
  227. create_work_item_note_emoji_reaction - Adicionar uma reação de emoji a uma nota de work item (comentário, thread ou resposta de thread)
  228. delete_work_item_note_emoji_reaction - Remover uma reação de emoji de uma nota de work item (comentário, thread ou resposta de thread)
  229. get_timeline_events - Listar eventos de linha do tempo para um incidente
  230. create_timeline_event - Criar um evento de linha do tempo em um incidente
  231. list_webhooks - Listar webhooks de um projeto ou grupo
  232. create_webhook - Criar um webhook em um projeto ou grupo
  233. update_webhook - Atualizar um webhook existente de projeto ou grupo
  234. delete_webhook - Excluir um webhook de projeto ou grupo
  235. list_webhook_events - Listar eventos recentes de webhook (últimos 7 dias)
  236. get_webhook_event - Obter detalhes completos de um evento de webhook específico
  237. search_code - Pesquisar código em todos os projetos (requer pesquisa avançada ou Zoekt)
  238. search_project_code - Pesquisar código em um projeto específico (requer pesquisa avançada ou Zoekt)
  239. search_group_code - Pesquisar código em um grupo específico (requer pesquisa avançada ou Zoekt)
  240. list_project_variables - Listar variáveis de CI/CD de um projeto
  241. get_project_variable - Obter uma única variável de CI/CD de um projeto
  242. create_project_variable - Criar uma variável de CI/CD para um projeto
  243. update_project_variable - Atualizar uma variável de CI/CD existente em um projeto
  244. delete_project_variable - Excluir uma variável de CI/CD de um projeto
  245. list_group_variables - Listar variáveis de CI/CD de um grupo
  246. get_group_variable - Obter uma única variável de CI/CD de um grupo
  247. create_group_variable - Criar uma variável de CI/CD para um grupo
  248. update_group_variable - Atualizar uma variável de CI/CD existente em um grupo
  249. delete_group_variable - Excluir uma variável de CI/CD de um grupo
  250. get_dependency_proxy_settings - Obter configurações de proxy de dependência para um grupo
  251. update_dependency_proxy_settings - Atualizar configurações de proxy de dependência para um grupo (ativar/desativar, credenciais para pulls autenticados do Docker Hub)
  252. list_dependency_proxy_blobs - Listar blobs em cache do proxy de dependência para um grupo
  253. purge_dependency_proxy_cache - Agendar a limpeza de todos os blobs em cache do proxy de dependência para um grupo
  254. list_project_vulnerabilities - Listar vulnerabilidades de um projeto com filtros opcionais de estado, gravidade e tipo de relatório (baseado em GraphQL, paginação por cursor)
  255. get_vulnerability - Obter detalhes completos de uma vulnerabilidade específica
  256. dismiss_vulnerability - Dispensar uma vulnerabilidade com um motivo (acceptable_risk, false_positive, used_in_tests, mitigating_control, not_applicable) e comentário opcional
  257. confirm_vulnerability - Confirmar uma vulnerabilidade como um achado real que requer remediação
  258. orbit_query - Executar uma consulta de grafo GitLab Orbit sobre o grafo de conhecimento SDLC indexado
  259. orbit_get_schema - Buscar o esquema atual do grafo GitLab Orbit (tipos de nós e arestas)
  260. orbit_get_status - Verificar o status de indexação do GitLab Orbit para o escopo habilitado
  261. orbit_list_tools - Listar as definições de ferramentas MCP expostas pelo GitLab Orbit
  262. discover_tools - Descobrir e ativar categorias adicionais de ferramentas para esta sessão. Categorias disponíveis: merge_requests, issues, repositories, branches, projects, labels, ci, groups, pipelines, milestones, wiki, releases, tags, users, workitems, webhooks, search, variables, dependency_proxy, vulnerabilities, orbit. Categorias já ativas são listadas na resposta.

Títulos de páginas wiki vs. slugs

O GitLab deriva o slug de uma página wiki (sua URL, /-/wikis/<slug>) a partir do título da página. Passar title para update_wiki_page / update_group_wiki_page portanto renomeia a página e altera sua URL — para páginas aninhadas, também pode mover a página para um caminho diferente — o que quebra links existentes.

Para alterar apenas o título exibido mantendo a URL estável, não passe title. Em vez disso, armazene o título exibido no front matter YAML do conteúdo da página e atualize o conteúdo:

---
title: My Custom Display Title
---

Page body…

O GitLab mantém o slug/URL intacto e mostra o título do front matter na interface. Leia-o de volta com get_wiki_page usando render_html: true, que preenche o campo front_matter — o campo simples title sempre reflete o valor derivado do slug.

Testes 🧪

O projeto inclui cobertura de testes abrangente, incluindo autorização remota:

# Run all tests (API validation + remote auth)
npm test

# Run only remote authorization tests
npm run test:remote-auth

# Run all tests including readonly MCP tests
npm run test:all

# Run only API validation
npm run test:integration

Todos os testes de autorização remota usam um servidor GitLab simulado e não exigem credenciais reais do GitLab.