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 disponíveis no site de documentação hospedado.

Star History Chart

@zereight/mcp-gitlab

MCP do GitLab 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 MCP do GitLab?

  • 232 ferramentas + discover_tools — comece com um conjunto pequeno de ferramentas; ative mais em tempo de execução sem agrupamento no estilo CQRS
  • Revisão de MR em 2 etapaslist_merge_request_changed_files → diff em lote get_merge_request_file_diff
  • Skill de agente integrada — 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~232 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 maior 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

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 que estas documentações recomendam), por exemplo npx -y @zereight/mcp-gitlab@2.1.56. 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 recente 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 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 - Personal Access Token do GitLab (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 conjuntos 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 retroativa. 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 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 MCP OAuth (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 a URL de callback de cada cliente no GitLab, ative GITLAB_OAUTH_CALLBACK_PROXY=true. Com o modo de proxy de callback, o GitLab precisa apenas de uma URI de redirecionamento registrada: {MCP_SERVER_URL}/callback.

GITLAB_OAUTH_REDIRECT_URI é para OAuth local (GITLAB_USE_OAUTH) apenas. Ele não substitui URLs de callback de clientes MCP OAuth 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 do servidor MCP e escuta o callback em um servidor HTTP local, por exemplo http://127.0.0.1:8888/callback.

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 do 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 initialize, notifications/initialized, tools/list e server/discover não autenticados apenas (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 o endereço local do servidor como fallback. Defina MCP_TRUST_PROXY=true apenas 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 múltiplos 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 reinicia 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 Personal Access Token.

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 → Admin Area > Applications (em toda a instância) ou User Settings > Applications (pessoal)
  2. Crie um novo aplicativo com:
    • Confidential: desmarcado
    • Scopes: api, read_api, read_user (ou quaisquer escopos que você pretenda solicitar via GITLAB_OAUTH_SCOPES)
  3. Salve e copie o Application ID — 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 Dynamic Client Registration (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_IDSimClient ID 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/Origin /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 Dynamic Client Registration (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 de 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 do 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 em um projeto GitLab
  2. approve_merge_request - Aprovar um merge request (requer permissões apropriadas)
  3. unapprove_merge_request - Desaprovar um merge request previamente aprovado
  4. get_merge_request_approval_state - Obter detalhes de aprovação de merge request, incluindo aprovadores (usa approval_state quando disponível; caso contrário, usa approvals)
  5. get_merge_request_conflicts - Obter os conflitos de um merge request em um projeto GitLab
  6. list_merge_request_pipelines - Listar pipelines de um merge request com suporte a paginação
  7. execute_graphql - Executar uma consulta GraphQL do GitLab
  8. create_or_update_file - Criar ou atualizar um único arquivo em um projeto GitLab
  9. search_repositories - Pesquisar projetos GitLab
  10. create_repository - Criar um novo projeto GitLab
  11. create_group - Criar um novo grupo ou subgrupo GitLab (nome, caminho, descrição, visibilidade e parent_id opcional)
  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 para um projeto GitLab em um único commit
  14. create_issue - Criar uma nova issue em um projeto GitLab
  15. create_merge_request - Criar um novo merge request em um projeto GitLab
  16. fork_repository - Criar um fork de um projeto GitLab para sua conta ou namespace especificado
  17. create_branch - Criar uma nova branch em um projeto GitLab
  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, com suporte a 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 para push/merge/desproteção)
  24. unprotect_branch - Remover a proteção de uma branch previamente protegida
  25. update_default_branch - Alterar a branch padrão de um projeto
  26. get_merge_request - Obter detalhes de um merge request com resumo compacto de implantação, contagem de commits pendentes, resumo de adições de commits e resumo de aprovação (é necessário fornecer mergeRequestIid ou branchName)
  27. get_merge_request_diffs - Obter as alterações/diffs de um merge request (é necessário fornecer mergeRequestIid ou branchName)
  28. list_merge_request_changed_files - ETAPA 1 do fluxo de revisão de código. Retorna SOMENTE a lista de caminhos de arquivos alterados em um merge request — SEM conteúdo de diff. Chame primeiro para obter os caminhos dos arquivos e depois chame get_merge_request_file_diff com vários arquivos em uma única chamada em lote (recomendado 3-5 arquivos por chamada). Suporta filtragem por excluded_file_patterns usando regex. (É necessário fornecer mergeRequestIid ou branchName)
  29. list_merge_request_diffs - Listar diffs de merge request com suporte a paginação (é necessário fornecer mergeRequestIid ou branchName)
  30. get_merge_request_file_diff - ETAPA 2 do fluxo de revisão de código. Obter diffs de um ou mais arquivos de um merge request. Chame list_merge_request_changed_files primeiro e depois passe-os como um array para buscar os diffs de forma eficiente. O agrupamento de vários arquivos (recomendado 3-5) é suportado. (É necessário fornecer mergeRequestIid ou branchName)
  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 as alterações/diffs entre duas branches ou commits em um projeto GitLab
  34. update_merge_request - Atualizar um merge request (é necessário fornecer mergeRequestIid ou branchName)
  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 uma thread existente de 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 de thread 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
  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. Informe 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. Informe 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. Informe discussion_id para respostas em threads de discussão.
  60. update_issue_note - Modificar uma nota de thread existente de issue
  61. create_issue_note - Adicionar uma nova nota a uma thread existente de issue
  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. Informe 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. Informe 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. Informe discussion_id para respostas em threads de discussão.
  68. list_issues - Listar issues (padrão: criadas pelo usuário atual apenas; use scope='all' para todas as issues acessíveis)
  69. my_issues - Listar issues atribuídas ao usuário autenticado (padrão: issues abertas)
  70. get_issue - Obter detalhes de uma issue específica em um projeto GitLab
  71. update_issue - Atualizar uma issue em um projeto GitLab
  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 enviar apenas a alteração em vez da descrição completa. Suporta dry_run para pré-visualizar e create_note para resumir.
  73. delete_issue - Excluir uma issue de um projeto GitLab
  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 em um projeto GitLab
  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 disponíveis para o usuário atual
  83. get_namespace - Obter detalhes de um namespace por ID ou caminho
  84. verify_namespace - Verificar se um caminho de namespace existe
  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 GitLab com opções de filtragem
  96. list_wiki_pages - Listar páginas wiki em um projeto GitLab
  97. get_wiki_page - Obter detalhes de uma página wiki específica
  98. create_wiki_page - Criar uma nova página wiki em um projeto GitLab
  99. update_wiki_page - Atualizar uma página wiki existente em um projeto GitLab
  100. delete_wiki_page - Excluir uma página wiki de um projeto GitLab
  101. list_group_wiki_pages - Listar páginas wiki em um grupo GitLab
  102. get_group_wiki_page - Obter detalhes de uma página wiki específica de grupo
  103. create_group_wiki_page - Criar uma nova página wiki em um grupo GitLab
  104. update_group_wiki_page - Atualizar uma página wiki existente em um grupo GitLab
  105. delete_group_wiki_page - Excluir uma página wiki de um grupo GitLab
  106. get_repository_tree - Obter a árvore do repositório de um projeto GitLab (listar arquivos e diretórios)
  107. list_pipelines - Listar pipelines em um projeto GitLab com opções de filtragem
  108. get_pipeline - Obter detalhes de um pipeline específico em um projeto GitLab
  109. list_deployments - Listar deployments em um projeto GitLab com opções de filtragem
  110. get_deployment - Obter detalhes de um deployment específico em um projeto GitLab
  111. list_environments - Listar ambientes em um projeto GitLab
  112. get_environment - Obter detalhes de um ambiente específico em um projeto GitLab
  113. list_pipeline_jobs - Listar todos os jobs em um pipeline específico
  114. list_pipeline_trigger_jobs - Listar todos os jobs de gatilho (bridges) em um pipeline específico que acionam pipelines downstream
  115. get_pipeline_job - Obter detalhes de um job de pipeline GitLab por número
  116. get_pipeline_job_output - Obter a saída/rastro de um job de pipeline GitLab com paginação opcional para limitar o uso da janela de contexto
  117. validate_ci_lint - Validar o conteúdo YAML de CI/CD do GitLab fornecido para um projeto
  118. validate_project_ci_lint - Validar uma configuração .gitlab-ci.yml existente para um projeto
  119. list_ci_catalog_resources - Listar recursos/componentes do Catálogo de CI/CD do GitLab visíveis para o usuário
  120. get_ci_catalog_resource - Obter detalhes de um recurso do Catálogo de CI/CD do GitLab, incluindo versões e componentes
  121. create_pipeline - Criar um novo pipeline para uma branch ou tag
  122. retry_pipeline - Tentar novamente um pipeline com falha ou cancelado
  123. cancel_pipeline - Cancelar um pipeline em execução
  124. list_pipeline_schedules - Listar agendamentos de pipeline em um projeto, opcionalmente filtrados por ativos ou inativos
  125. get_pipeline_schedule - Obter detalhes de um agendamento de pipeline específico, incluindo suas variáveis e o último pipeline
  126. list_pipeline_schedule_pipelines - Listar os pipelines que um agendamento de pipeline acionou
  127. create_pipeline_schedule - Criar um novo agendamento de pipeline para uma branch ou tag
  128. update_pipeline_schedule - Atualizar um agendamento de pipeline existente
  129. delete_pipeline_schedule - Excluir um agendamento de pipeline
  130. play_pipeline_schedule - Executar um agendamento de pipeline imediatamente, sem alterar sua próxima execução agendada
  131. take_ownership_pipeline_schedule - Assumir a propriedade de um agendamento de pipeline
  132. get_pipeline_schedule_variable - Obter uma única variável de um agendamento de pipeline
  133. create_pipeline_schedule_variable - Criar uma variável para um agendamento de pipeline
  134. update_pipeline_schedule_variable - Atualizar uma variável de um agendamento de pipeline
  135. delete_pipeline_schedule_variable - Excluir uma variável de um agendamento de pipeline
  136. play_pipeline_job - Executar um job de pipeline manual
  137. retry_pipeline_job - Tentar novamente um job de pipeline com falha ou cancelado
  138. cancel_pipeline_job - Cancelar um job de pipeline em execução
  139. list_job_artifacts - Listar arquivos de artefato no arquivo de artefatos de um job. Retorna nomes de arquivos, caminhos, tipos e tamanhos
  140. download_job_artifacts - Baixar o arquivo completo de artefatos (zip) de um job para um caminho local. Retorna o caminho do arquivo salvo
  141. get_job_artifact_file - Obter o conteúdo de um único arquivo dos artefatos de um job pelo seu caminho dentro do arquivo
  142. list_merge_requests - Listar merge requests globalmente ou em um projeto GitLab específico com opções de filtragem (project_id agora é opcional)
  143. list_group_merge_requests - Listar merge requests em todos os projetos de um grupo e seus subgrupos com opções de filtragem
  144. list_milestones - Listar marcos em um projeto GitLab com opções de filtragem
  145. get_milestone - Obter detalhes de um marco específico
  146. create_milestone - Criar um novo marco em um projeto GitLab
  147. edit_milestone - Editar um marco existente em um projeto GitLab
  148. delete_milestone - Excluir um marco de um projeto GitLab
  149. get_milestone_issue - Obter issues associadas a um marco específico
  150. get_milestone_merge_requests - Obter merge requests associados a um marco específico
  151. promote_milestone - Promover um marco para o próximo estágio
  152. get_milestone_burndown_events - Obter eventos de burndown para um marco específico
  153. list_group_milestones - Listar marcos em um grupo GitLab com opções de filtragem
  154. get_group_milestone - Obter detalhes de um marco de grupo específico
  155. create_group_milestone - Criar um novo marco em um grupo GitLab
  156. edit_group_milestone - Editar um marco de grupo existente
  157. delete_group_milestone - Excluir um marco de um grupo GitLab
  158. get_group_milestone_issue - Obter issues associadas a um marco de grupo específico
  159. get_group_milestone_merge_requests - Obter merge requests associados a um marco de grupo específico
  160. get_group_milestone_burndown_events - Obter eventos de burndown para um marco de grupo específico
  161. get_users - Obter detalhes de usuários do GitLab por nomes de usuário
  162. get_user - Obter detalhes de usuário por ID
  163. whoami - Obter detalhes do usuário autenticado atual
  164. list_commits - Listar commits do repositório com opções de filtragem
  165. get_commit - Obter detalhes de um commit específico
  166. get_commit_diff - Obter alterações/diffs de um commit específico
  167. get_file_blame - Obter git blame para um arquivo em uma ref específica. Cada entrada mapeia um intervalo contíguo de linhas de código-fonte para o commit que as alterou por último (id, autor, data de autoria, mensagem). Use range_start/range_end para limitar o blame a linhas específicas.
  168. list_commit_statuses - Listar status para um commit específico
  169. create_commit_status - Criar ou atualizar o status de um commit específico
  170. list_group_iterations - Listar iterações de grupo com opções de filtragem
  171. upload_markdown - Enviar um arquivo para um projeto GitLab para uso em conteúdo markdown
  172. download_attachment - Baixar um arquivo enviado de um projeto GitLab por secret e nome de arquivo
  173. health_check - Verificar status do servidor e autenticação; quando autenticado, relata a versão da instância GitLab de /api/v4/version (version, revision, enterprise)
  174. list_events - Listar todos os eventos para o usuário atualmente autenticado
  175. get_project_events - Listar todos os eventos visíveis para um projeto especificado
  176. list_releases - Listar todos os releases de um projeto
  177. get_release - Obter um release pelo nome da tag
  178. create_release - Criar um novo release em um projeto GitLab
  179. update_release - Atualizar um release existente em um projeto GitLab
  180. delete_release - Excluir um release de um projeto GitLab (não exclui a tag associada)
  181. create_release_evidence - Criar evidência de release para um release existente (somente GitLab Premium/Ultimate)
  182. download_release_asset - Baixar um arquivo de asset de release pelo caminho direto do asset
  183. list_tags - Listar tags do repositório com suporte a filtragem e paginação
  184. get_tag - Obter detalhes de uma tag específica do repositório
  185. create_tag - Criar uma nova tag no repositório
  186. delete_tag - Excluir uma tag do repositório
  187. get_tag_signature - Obter a assinatura de uma tag assinada
  188. get_work_item - Obter um único work item com detalhes completos, incluindo status, hierarquia (pai/filhos), tipo, labels, assignees e todos os widgets
  189. list_work_items - Listar work items em um projeto com filtros (tipo, estado, busca, assignees, labels). Retorna itens com status e informações de hierarquia
  190. create_work_item - Criar um novo work item (issue, task, incident, test_case, epic, key_result, objective, requirement, ticket). Suporta definição de título, descrição, labels, assignees, peso, pai, status de saúde, datas de início/término, marco e confidencialidade
  191. update_work_item - Atualizar um work item. Pode modificar título, descrição, labels, assignees, peso, estado, status, hierarquia de pai, filhos, status de saúde, datas de início/término, marco, confidencialidade, itens vinculados e campos personalizados
  192. convert_work_item_type - Converter um work item para um tipo diferente (ex.: issue para task, task para incident)
  193. list_work_item_statuses - Listar status disponíveis para um tipo de work item em um projeto. Requer GitLab Premium/Ultimate com status configuráveis
  194. list_custom_field_definitions - Listar definições de campos personalizados disponíveis para um tipo de work item em um projeto. Retorna nomes de campos, tipos e IDs necessários para definir campos personalizados via update_work_item
  195. move_work_item - Mover um work item (issue, task, etc.) para um projeto diferente. Usa a mutação issueMove do GitLab GraphQL
  196. list_work_item_notes - Listar notas e discussões em um work item. Retorna discussões em tópicos com autor, corpo, timestamps e flags de sistema/internas
  197. create_work_item_note - Adicionar uma nota/comentário a um work item. Suporta Markdown, notas internas e respostas em tópicos
  198. list_work_item_emoji_reactions - Listar todas as reações de emoji em um work item
  199. list_work_item_note_emoji_reactions - Listar todas as reações de emoji em uma nota de work item (comentário, tópico ou resposta de tópico)
  200. create_work_item_emoji_reaction - Adicionar uma reação de emoji a um work item (ex.: thumbsup, rocket, eyes)
  201. delete_work_item_emoji_reaction - Remover uma reação de emoji de um work item
  202. create_work_item_note_emoji_reaction - Adicionar uma reação de emoji a uma nota de work item (comentário, tópico ou resposta de tópico)
  203. delete_work_item_note_emoji_reaction - Remover uma reação de emoji de uma nota de work item (comentário, tópico ou resposta de tópico)
  204. get_timeline_events - Listar eventos de linha do tempo para um incident. Retorna eventos cronológicos com notas, timestamps e tags
  205. create_timeline_event - Criar um evento de linha do tempo em um incident. Suporta tags: 'Start time', 'End time', 'Impact detected', 'Response initiated', 'Impact mitigated', 'Cause identified'
  206. list_webhooks - Listar todos os webhooks configurados para um projeto ou grupo GitLab. Forneça project_id ou group_id
  207. create_webhook - Criar um webhook em um projeto ou grupo GitLab
  208. update_webhook - Atualizar um webhook existente de projeto ou grupo
  209. delete_webhook - Excluir um webhook de projeto ou grupo
  210. list_webhook_events - Listar eventos recentes de webhook (últimos 7 dias) para um webhook de projeto ou grupo. Use o modo de resumo para visão geral e depois get_webhook_event para detalhes completos
  211. get_webhook_event - Obter detalhes completos de um evento de webhook específico por ID, incluindo payloads de requisição/resposta
  212. search_code - Buscar código em todos os projetos da instância GitLab (requer busca avançada ou busca exata de código habilitada)
  213. search_project_code - Buscar código dentro de um projeto GitLab específico (requer busca avançada ou busca exata de código habilitada)
  214. search_group_code - Buscar código dentro de um grupo GitLab específico (requer busca avançada ou busca exata de código habilitada)
  215. list_project_variables - Listar variáveis de CI/CD para um projeto com filtro opcional de escopo de ambiente
  216. get_project_variable - Obter uma única variável de CI/CD de um projeto por chave, com filtro opcional de escopo de ambiente
  217. create_project_variable - Criar uma nova variável de CI/CD em um projeto
  218. update_project_variable - Atualizar uma variável de CI/CD existente em um projeto, com filtro opcional para desambiguar por escopo de ambiente
  219. delete_project_variable - Excluir uma variável de CI/CD de um projeto, com filtro opcional para desambiguar por escopo de ambiente
  220. list_group_variables - Listar variáveis de CI/CD para um grupo com filtro opcional de escopo de ambiente
  221. get_group_variable - Obter uma única variável de CI/CD de um grupo por chave, com filtro opcional de escopo de ambiente
  222. create_group_variable - Criar uma nova variável de CI/CD em um grupo
  223. update_group_variable - Atualizar uma variável de CI/CD existente em um grupo, com filtro opcional para desambiguar por escopo de ambiente
  224. delete_group_variable - Excluir uma variável de CI/CD de um grupo, com filtro opcional para desambiguar por escopo de ambiente
  225. get_dependency_proxy_settings - Obter configurações de proxy de dependência para um grupo (status de habilitação, contagem de blobs, tamanho total, prefixo de imagem, política de TTL)
  226. update_dependency_proxy_settings - Atualizar configurações de proxy de dependência para um grupo (habilitar/desabilitar, credenciais para pulls autenticados do Docker Hub)
  227. list_dependency_proxy_blobs - Listar blobs de proxy de dependência em cache para um grupo com paginação baseada em cursor
  228. purge_dependency_proxy_cache - Agendar purga de todos os blobs de proxy de dependência em cache para um grupo
  229. list_project_vulnerabilities - Listar vulnerabilidades para um projeto com filtros opcionais de estado, severidade e tipo de relatório (baseado em GraphQL, paginação por cursor)
  230. get_vulnerability - Obter detalhes completos de uma vulnerabilidade específica
  231. dismiss_vulnerability - Dispensar uma vulnerabilidade com um motivo (acceptable_risk, false_positive, used_in_tests, mitigating_control, not_applicable) e comentário opcional
  232. confirm_vulnerability - Confirmar uma vulnerabilidade como um achado real que requer remediação
  233. 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. 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 abrangente de testes, 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.