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
📖 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.
@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 etapas —
list_merge_request_changed_files→ diff em loteget_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-gitlab | GitLab MCP A (comunidade estilo CQRS) | |
|---|---|---|
| Melhor para | Fluxos de trabalho de agentes de IA | Empresas multi-instância / ferramentas agrupadas |
| Modelo de ferramentas | ~232 ferramentas granulares + discover_tools | ~50–60 ferramentas agrupadas browse_* / manage_* |
| Revisão de MR | Diff em lote em 2 etapas | Varia |
| Node.js | >=18.17 | Frequentemente >=24 |
| Licença | MIT | Varia |
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
- Guia de Configuração do Claude Code
- Guia de Configuração do VS Code
- Guia de Configuração do GitHub Copilot
- Guia de Configuração do Codex
- Guia de Configuração do Cursor
- Guia de Configuração de Clientes MCP Baseados em JSON - para clientes estilo Factory AI Droid, OpenClaw e OpenCode
- Guia de Configuração de Autenticação OAuth2
- Referência de Variáveis de Ambiente
- Modo Stateless — HPA Multi-Pod
- Configuração de Agentes Personalizados e Múltiplos PATs
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):
- Personal Access Token (
GITLAB_PERSONAL_ACCESS_TOKEN) — configuração mais simples - OAuth2 — Navegador Local (
GITLAB_USE_OAUTH) — recomendado para maior segurança
Para implantações servidor/remotas:
- OAuth2 — Proxy MCP (
GITLAB_MCP_OAUTH) — para clientes MCP remotos como Claude.ai - Autorização Remota (
REMOTE_AUTHORIZATION) — implantações multi-usuário onde cada chamador fornece seu próprio token
Caminhos de configuração rápida
- Claude Code: veja Guia de Configuração do Claude Code
- VS Code: veja Guia de Configuração do VS Code
- GitHub Copilot: veja Guia de Configuração do GitHub Copilot
- Codex: veja Guia de Configuração do Codex
- Cursor: veja Guia de Configuração do Cursor
- Clientes estilo Factory AI Droid / OpenClaw / OpenCode: veja Guia de Configuração de Clientes MCP Baseados em JSON
- Detalhes do fluxo OAuth no navegador: veja Guia de Configuração de Autenticação OAuth2
- OAuth sem callback localhost (SSO, shell remoto, clientes em segundo plano): execute
zereight-mcp-gitlab auth(fluxo de dispositivo GitLab 17.9+; 17.2–17.8 precisam deoauth2_device_grant_flow) e depois inicie o servidor comGITLAB_USE_OAUTH=true. Veja comando standalone de fluxo de dispositivo.
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 (substituiGITLAB_PERSONAL_ACCESS_TOKEN)--api-url- URL da API do GitLab (substituiGITLAB_API_URL)--read-only=true- Ativa o modo somente leitura (substituiGITLAB_READ_ONLY_MODE, obsoleto — prefira--permission-mode=readonly)--permission-mode- Nível de permissão:readonly,modify(sem ferramentas de exclusão) oufull(substituiGITLAB_PERMISSION_MODE, padrãofull)--use-wiki=true- Ativa a API de wiki (substituiUSE_GITLAB_WIKI, legado — prefiraGITLAB_TOOLSETS=wiki)--use-milestone=true- Ativa a API de marcos (substituiUSE_MILESTONE, legado — prefiraGITLAB_TOOLSETS=milestones)--use-pipeline=true- Ativa a API de pipelines (substituiUSE_PIPELINE, legado — prefiraGITLAB_TOOLSETS=pipelines)--disable-version-check=true- Desativa o aviso de nova versão na inicialização (substituiGITLAB_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=modifypara permitir create/update enquanto bloqueia toda ferramenta de exclusão (incluindo mutações de exclusão viaexecute_graphqle açõespush_filesdelete/move), ouGITLAB_PERMISSION_MODE=readonlypara acesso somente leitura. Você também pode ativar grupos de conjuntos de ferramentas comGITLAB_TOOLSETS=<group,…>, permitir ferramentas individuais comGITLAB_TOOLS=<tool,…>(por exemplo, grupos somente leitura mais algumas ferramentas de escrita específicas), e negar por padrão comGITLAB_DENIED_TOOLS_REGEX. As flags legadasUSE_GITLAB_WIKI/USE_MILESTONE/USE_PIPELINEsã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_OAUTHacima.
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.
| Modo | Ativar com | Variável de callback | URI de redirecionamento do GitLab |
|---|---|---|---|
| OAuth local | GITLAB_USE_OAUTH=true | GITLAB_OAUTH_REDIRECT_URI | http://127.0.0.1:8888/callback ou seu callback local |
| OAuth MCP remoto | GITLAB_MCP_OAUTH=true | GITLAB_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:
- Uma URL de servidor HTTPS publicamente acessível (
MCP_SERVER_URL) — use ngrok para testes locais - Um aplicativo OAuth do GitLab pré-registrado com escopos
api(ouread_api) — Vá paraAdmin area→Applications, defina a URI de redirecionamento para{MCP_SERVER_URL}/callback
| Variável de Ambiente | Obrigatória | Descrição |
|---|---|---|
GITLAB_MCP_OAUTH | ✅ | Defina como true para ativar |
GITLAB_API_URL | ✅ | URL base da API do GitLab |
GITLAB_OAUTH_APP_ID | ✅ | ID do aplicativo OAuth do GitLab |
MCP_SERVER_URL | ✅ | URL HTTPS pública deste servidor MCP |
STREAMABLE_HTTP | ✅ | Deve ser true |
GITLAB_OAUTH_CALLBACK_PROXY | opcional | Defina como true para usar a URL fixa /callback do servidor MCP |
GITLAB_OAUTH_SCOPES | opcional | Escopos separados por vírgula (padrão: api,read_api,read_user) |
GITLAB_OAUTH_ALLOWED_GROUPS | opcional | Caminhos 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_uriVerifique o
redirect_urina URL do navegador. Se ele apontar para um callback de cliente comohttp://127.0.0.1:xxxxx/.../callback, habilite:GITLAB_OAUTH_CALLBACK_PROXY=trueNã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 Ambiente | Obrigatória | Descrição |
|---|---|---|
REMOTE_AUTHORIZATION | ✅ | Defina como true para habilitar |
STREAMABLE_HTTP | ✅ | Deve ser true |
ENABLE_DYNAMIC_API_URL | opcional | Permitir URL do GitLab por requisição via cabeçalho X-GitLab-API-URL |
GITLAB_ALLOWED_HOSTS | opcional | Hosts X-GitLab-API-URL permitidos separados por vírgula; hosts GITLAB_API_URL são sempre permitidos |
GITLAB_ALLOW_UNAUTHENTICATED_TOOL_DISCOVERY | opcional | Permitir 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_ORIGINS | opcional | Valores permitidos de host/origem pública /mcp para proteção contra rebinding de DNS |
MCP_TRUST_PROXY | opcional | Confiar 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_AUTHORIZATIONnã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(ouGITLAB_MCP_OAUTH=true),MCP_TRUST_PROXY=true(atrás de um proxy reverso),MAX_REQUESTS_PER_MINUTE=300,MCP_SERVER_URLouMCP_ALLOWED_HOSTS,HOST,PORT - Múltiplas implantações lado a lado: defina um
MCP_SERVER_NAMEdistinto 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_URLGITLAB_PERSONAL_ACCESS_TOKENGITLAB_USE_OAUTHREMOTE_AUTHORIZATIONMCP_TRUST_PROXYMAX_REQUESTS_PER_MINUTEMAX_SESSIONSMCP_ALLOWED_HOSTSMCP_ALLOWED_ORIGINSGITLAB_MCP_OAUTHGITLAB_OAUTH_CALLBACK_PROXYOAUTH_REGISTER_RATE_LIMIT_PER_HOUROAUTH_STATELESS_MODEOAUTH_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
/mcpsão limitadas aMAX_REQUESTS_PER_MINUTEpor 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_SESSIONSsessõ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).
- Vá para sua instância do GitLab → Admin Area > Applications (em toda a instância) ou User Settings > Applications (pessoal)
- Crie um novo aplicativo com:
- Confidential: desmarcado
- Scopes:
api,read_api,read_user(ou quaisquer escopos que você pretenda solicitar viaGITLAB_OAUTH_SCOPES)
- Salve e copie o Application ID — este é seu
GITLAB_OAUTH_APP_ID
Como funciona:
- O usuário adiciona a URL do seu servidor MCP no Claude.ai
- O Claude.ai descobre os endpoints OAuth via
/.well-known/oauth-authorization-server - O Claude.ai se registra via Dynamic Client Registration (
POST /register) — tratado localmente pelo servidor MCP (cada cliente recebe um ID de cliente virtual) - O Claude.ai redireciona o navegador do usuário para a página de login do GitLab usando o aplicativo OAuth pré-registrado
- O usuário autentica; o GitLab redireciona de volta para
https://claude.ai/api/mcp/auth_callback - O Claude.ai envia
Authorization: Bearer <token>em cada requisição MCP - 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ável | Obrigatória | Descrição |
|---|---|---|
GITLAB_MCP_OAUTH | Sim | Defina como true para habilitar |
GITLAB_OAUTH_APP_ID | Sim | Client ID do aplicativo OAuth do GitLab pré-registrado |
MCP_SERVER_URL | Sim | URL HTTPS pública do seu servidor MCP; também permitida para verificações de Host/Origin /mcp |
GITLAB_API_URL | Sim | URL da API da sua instância do GitLab (ex.: https://gitlab.com/api/v4) |
STREAMABLE_HTTP | Sim | Deve ser true (SSE não é suportado) |
GITLAB_OAUTH_SCOPES | Não | Escopos 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_HOUR | Não | Limite contínuo por IP para Dynamic Client Registration (POST /register). Padrão 20/hora; intervalo 1–1000. 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_URL | Não | Defina 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 aOAUTH_REGISTER_RATE_LIMIT_PER_HOURpor IP do cliente (padrão 20/hora). Separado dos limites de/mcpe 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-TokenouJOB-TOKENestã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 — usePrivate-Tokenpara 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
merge_merge_request- Mesclar um merge request em um projeto GitLabapprove_merge_request- Aprovar um merge request (requer permissões apropriadas)unapprove_merge_request- Desaprovar um merge request previamente aprovadoget_merge_request_approval_state- Obter detalhes de aprovação de merge request, incluindo aprovadores (usaapproval_statequando disponível; caso contrário, usaapprovals)get_merge_request_conflicts- Obter os conflitos de um merge request em um projeto GitLablist_merge_request_pipelines- Listar pipelines de um merge request com suporte a paginaçãoexecute_graphql- Executar uma consulta GraphQL do GitLabcreate_or_update_file- Criar ou atualizar um único arquivo em um projeto GitLabsearch_repositories- Pesquisar projetos GitLabcreate_repository- Criar um novo projeto GitLabcreate_group- Criar um novo grupo ou subgrupo GitLab (nome, caminho, descrição, visibilidade e parent_id opcional)get_file_contents- Obter o conteúdo de um arquivo ou diretório de um projeto GitLabpush_files- Enviar vários arquivos para um projeto GitLab em um único commitcreate_issue- Criar uma nova issue em um projeto GitLabcreate_merge_request- Criar um novo merge request em um projeto GitLabfork_repository- Criar um fork de um projeto GitLab para sua conta ou namespace especificadocreate_branch- Criar uma nova branch em um projeto GitLabget_branch- Obter detalhes da branch (commit, status de proteção)list_branches- Listar branches no projeto com filtro de pesquisadelete_branch- Excluir branch do projetolist_protected_branches- Listar branches protegidas em um projeto, com suporte a filtro de pesquisaget_protected_branch- Obter detalhes de uma única branch protegida (níveis de acesso, configurações de push forçado)protect_branch- Proteger uma branch do repositório (definir níveis de acesso para push/merge/desproteção)unprotect_branch- Remover a proteção de uma branch previamente protegidaupdate_default_branch- Alterar a branch padrão de um projetoget_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)get_merge_request_diffs- Obter as alterações/diffs de um merge request (é necessário fornecer mergeRequestIid ou branchName)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)list_merge_request_diffs- Listar diffs de merge request com suporte a paginação (é necessário fornecer mergeRequestIid ou branchName)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)list_merge_request_versions- Listar todas as versões de um merge requestget_merge_request_version- Obter uma versão específica de um merge requestget_branch_diffs- Obter as alterações/diffs entre duas branches ou commits em um projeto GitLabupdate_merge_request- Atualizar um merge request (é necessário fornecer mergeRequestIid ou branchName)create_note- Criar uma nova nota (comentário) em uma issue ou merge requestcreate_merge_request_thread- Criar uma nova thread em um merge requestresolve_merge_request_thread- Resolver uma thread em um merge requestmr_discussions- Listar itens de discussão de um merge requestdelete_merge_request_discussion_note- Excluir uma nota de discussão em um merge requestupdate_merge_request_discussion_note- Atualizar uma nota de discussão em um merge requestcreate_merge_request_discussion_note- Adicionar uma nova nota de discussão a uma thread existente de merge requestcreate_merge_request_note- Adicionar uma nova nota a uma thread existente de merge requestdelete_merge_request_note- Excluir uma nota existente de merge requestget_merge_request_note- Obter uma nota específica de um merge requestget_merge_request_notes- Listar notas de um merge requestupdate_merge_request_note- Modificar uma nota de thread existente de merge requestget_draft_note- Obter uma única nota de rascunho de um merge requestlist_draft_notes- Listar notas de rascunho de um merge requestcreate_draft_note- Criar uma nota de rascunho para um merge requestupdate_draft_note- Atualizar uma nota de rascunho existentedelete_draft_note- Excluir uma nota de rascunhopublish_draft_note- Publicar uma única nota de rascunhobulk_publish_draft_notes- Publicar todas as notas de rascunho de um merge requestlist_merge_request_emoji_reactions- Listar todas as reações de emoji em um merge requestlist_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.create_merge_request_emoji_reaction- Adicionar uma reação de emoji a um merge request (ex.: thumbsup, rocket, eyes)delete_merge_request_emoji_reaction- Remover uma reação de emoji de um merge requestcreate_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.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.update_issue_note- Modificar uma nota de thread existente de issuecreate_issue_note- Adicionar uma nova nota a uma thread existente de issuelist_issue_emoji_reactions- Listar todas as reações de emoji em uma issuelist_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.create_issue_emoji_reaction- Adicionar uma reação de emoji a uma issue (ex.: thumbsup, rocket, eyes)delete_issue_emoji_reaction- Remover uma reação de emoji de uma issuecreate_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.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.list_issues- Listar issues (padrão: criadas pelo usuário atual apenas; use scope='all' para todas as issues acessíveis)my_issues- Listar issues atribuídas ao usuário autenticado (padrão: issues abertas)get_issue- Obter detalhes de uma issue específica em um projeto GitLabupdate_issue- Atualizar uma issue em um projeto GitLabupdate_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. Suportadry_runpara pré-visualizar ecreate_notepara resumir.delete_issue- Excluir uma issue de um projeto GitLablist_todos- Listar itens de tarefas (to-do) do GitLab para o usuário atualmark_todo_done- Marcar um item de tarefa (to-do) do GitLab como concluídomark_all_todos_done- Marcar todos os itens de tarefa (to-do) pendentes do GitLab como concluídos para o usuário atuallist_issue_links- Listar todos os links de issue para uma issue específicalist_issue_discussions- Listar discussões de uma issue em um projeto GitLabget_issue_link- Obter um link de issue específicocreate_issue_link- Criar um link de issue entre duas issuesdelete_issue_link- Excluir um link de issuelist_namespaces- Listar todos os namespaces disponíveis para o usuário atualget_namespace- Obter detalhes de um namespace por ID ou caminhoverify_namespace- Verificar se um caminho de namespace existeget_project- Obter detalhes de um projeto específicolist_projects- Listar projetos acessíveis pelo usuário atualupdate_project- Atualizar configurações do projeto, como descrição, visibilidade, branch padrão e níveis de acesso a recursoslist_project_members- Listar membros de um projeto GitLablist_group_members- Listar membros de um grupo GitLab com pesquisa opcional por nome ou nome de usuáriolist_labels- Listar labels de um projetoget_label- Obter um único label de um projetocreate_label- Criar um novo label em um projetoupdate_label- Atualizar um label existente em um projetodelete_label- Excluir um label de um projetolist_group_projects- Listar projetos em um grupo GitLab com opções de filtragemlist_wiki_pages- Listar páginas wiki em um projeto GitLabget_wiki_page- Obter detalhes de uma página wiki específicacreate_wiki_page- Criar uma nova página wiki em um projeto GitLabupdate_wiki_page- Atualizar uma página wiki existente em um projeto GitLabdelete_wiki_page- Excluir uma página wiki de um projeto GitLablist_group_wiki_pages- Listar páginas wiki em um grupo GitLabget_group_wiki_page- Obter detalhes de uma página wiki específica de grupocreate_group_wiki_page- Criar uma nova página wiki em um grupo GitLabupdate_group_wiki_page- Atualizar uma página wiki existente em um grupo GitLabdelete_group_wiki_page- Excluir uma página wiki de um grupo GitLabget_repository_tree- Obter a árvore do repositório de um projeto GitLab (listar arquivos e diretórios)list_pipelines- Listar pipelines em um projeto GitLab com opções de filtragemget_pipeline- Obter detalhes de um pipeline específico em um projeto GitLablist_deployments- Listar deployments em um projeto GitLab com opções de filtragemget_deployment- Obter detalhes de um deployment específico em um projeto GitLablist_environments- Listar ambientes em um projeto GitLabget_environment- Obter detalhes de um ambiente específico em um projeto GitLablist_pipeline_jobs- Listar todos os jobs em um pipeline específicolist_pipeline_trigger_jobs- Listar todos os jobs de gatilho (bridges) em um pipeline específico que acionam pipelines downstreamget_pipeline_job- Obter detalhes de um job de pipeline GitLab por númeroget_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 contextovalidate_ci_lint- Validar o conteúdo YAML de CI/CD do GitLab fornecido para um projetovalidate_project_ci_lint- Validar uma configuração.gitlab-ci.ymlexistente para um projetolist_ci_catalog_resources- Listar recursos/componentes do Catálogo de CI/CD do GitLab visíveis para o usuárioget_ci_catalog_resource- Obter detalhes de um recurso do Catálogo de CI/CD do GitLab, incluindo versões e componentescreate_pipeline- Criar um novo pipeline para uma branch ou tagretry_pipeline- Tentar novamente um pipeline com falha ou canceladocancel_pipeline- Cancelar um pipeline em execuçãolist_pipeline_schedules- Listar agendamentos de pipeline em um projeto, opcionalmente filtrados por ativos ou inativosget_pipeline_schedule- Obter detalhes de um agendamento de pipeline específico, incluindo suas variáveis e o último pipelinelist_pipeline_schedule_pipelines- Listar os pipelines que um agendamento de pipeline acionoucreate_pipeline_schedule- Criar um novo agendamento de pipeline para uma branch ou tagupdate_pipeline_schedule- Atualizar um agendamento de pipeline existentedelete_pipeline_schedule- Excluir um agendamento de pipelineplay_pipeline_schedule- Executar um agendamento de pipeline imediatamente, sem alterar sua próxima execução agendadatake_ownership_pipeline_schedule- Assumir a propriedade de um agendamento de pipelineget_pipeline_schedule_variable- Obter uma única variável de um agendamento de pipelinecreate_pipeline_schedule_variable- Criar uma variável para um agendamento de pipelineupdate_pipeline_schedule_variable- Atualizar uma variável de um agendamento de pipelinedelete_pipeline_schedule_variable- Excluir uma variável de um agendamento de pipelineplay_pipeline_job- Executar um job de pipeline manualretry_pipeline_job- Tentar novamente um job de pipeline com falha ou canceladocancel_pipeline_job- Cancelar um job de pipeline em execuçãolist_job_artifacts- Listar arquivos de artefato no arquivo de artefatos de um job. Retorna nomes de arquivos, caminhos, tipos e tamanhosdownload_job_artifacts- Baixar o arquivo completo de artefatos (zip) de um job para um caminho local. Retorna o caminho do arquivo salvoget_job_artifact_file- Obter o conteúdo de um único arquivo dos artefatos de um job pelo seu caminho dentro do arquivolist_merge_requests- Listar merge requests globalmente ou em um projeto GitLab específico com opções de filtragem (project_id agora é opcional)list_group_merge_requests- Listar merge requests em todos os projetos de um grupo e seus subgrupos com opções de filtragemlist_milestones- Listar marcos em um projeto GitLab com opções de filtragemget_milestone- Obter detalhes de um marco específicocreate_milestone- Criar um novo marco em um projeto GitLabedit_milestone- Editar um marco existente em um projeto GitLabdelete_milestone- Excluir um marco de um projeto GitLabget_milestone_issue- Obter issues associadas a um marco específicoget_milestone_merge_requests- Obter merge requests associados a um marco específicopromote_milestone- Promover um marco para o próximo estágioget_milestone_burndown_events- Obter eventos de burndown para um marco específicolist_group_milestones- Listar marcos em um grupo GitLab com opções de filtragemget_group_milestone- Obter detalhes de um marco de grupo específicocreate_group_milestone- Criar um novo marco em um grupo GitLabedit_group_milestone- Editar um marco de grupo existentedelete_group_milestone- Excluir um marco de um grupo GitLabget_group_milestone_issue- Obter issues associadas a um marco de grupo específicoget_group_milestone_merge_requests- Obter merge requests associados a um marco de grupo específicoget_group_milestone_burndown_events- Obter eventos de burndown para um marco de grupo específicoget_users- Obter detalhes de usuários do GitLab por nomes de usuárioget_user- Obter detalhes de usuário por IDwhoami- Obter detalhes do usuário autenticado atuallist_commits- Listar commits do repositório com opções de filtragemget_commit- Obter detalhes de um commit específicoget_commit_diff- Obter alterações/diffs de um commit específicoget_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.list_commit_statuses- Listar status para um commit específicocreate_commit_status- Criar ou atualizar o status de um commit específicolist_group_iterations- Listar iterações de grupo com opções de filtragemupload_markdown- Enviar um arquivo para um projeto GitLab para uso em conteúdo markdowndownload_attachment- Baixar um arquivo enviado de um projeto GitLab por secret e nome de arquivohealth_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)list_events- Listar todos os eventos para o usuário atualmente autenticadoget_project_events- Listar todos os eventos visíveis para um projeto especificadolist_releases- Listar todos os releases de um projetoget_release- Obter um release pelo nome da tagcreate_release- Criar um novo release em um projeto GitLabupdate_release- Atualizar um release existente em um projeto GitLabdelete_release- Excluir um release de um projeto GitLab (não exclui a tag associada)create_release_evidence- Criar evidência de release para um release existente (somente GitLab Premium/Ultimate)download_release_asset- Baixar um arquivo de asset de release pelo caminho direto do assetlist_tags- Listar tags do repositório com suporte a filtragem e paginaçãoget_tag- Obter detalhes de uma tag específica do repositóriocreate_tag- Criar uma nova tag no repositóriodelete_tag- Excluir uma tag do repositórioget_tag_signature- Obter a assinatura de uma tag assinadaget_work_item- Obter um único work item com detalhes completos, incluindo status, hierarquia (pai/filhos), tipo, labels, assignees e todos os widgetslist_work_items- Listar work items em um projeto com filtros (tipo, estado, busca, assignees, labels). Retorna itens com status e informações de hierarquiacreate_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 confidencialidadeupdate_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 personalizadosconvert_work_item_type- Converter um work item para um tipo diferente (ex.: issue para task, task para incident)list_work_item_statuses- Listar status disponíveis para um tipo de work item em um projeto. Requer GitLab Premium/Ultimate com status configuráveislist_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_itemmove_work_item- Mover um work item (issue, task, etc.) para um projeto diferente. Usa a mutação issueMove do GitLab GraphQLlist_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/internascreate_work_item_note- Adicionar uma nota/comentário a um work item. Suporta Markdown, notas internas e respostas em tópicoslist_work_item_emoji_reactions- Listar todas as reações de emoji em um work itemlist_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)create_work_item_emoji_reaction- Adicionar uma reação de emoji a um work item (ex.: thumbsup, rocket, eyes)delete_work_item_emoji_reaction- Remover uma reação de emoji de um work itemcreate_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)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)get_timeline_events- Listar eventos de linha do tempo para um incident. Retorna eventos cronológicos com notas, timestamps e tagscreate_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'list_webhooks- Listar todos os webhooks configurados para um projeto ou grupo GitLab. Forneça project_id ou group_idcreate_webhook- Criar um webhook em um projeto ou grupo GitLabupdate_webhook- Atualizar um webhook existente de projeto ou grupodelete_webhook- Excluir um webhook de projeto ou grupolist_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 completosget_webhook_event- Obter detalhes completos de um evento de webhook específico por ID, incluindo payloads de requisição/respostasearch_code- Buscar código em todos os projetos da instância GitLab (requer busca avançada ou busca exata de código habilitada)search_project_code- Buscar código dentro de um projeto GitLab específico (requer busca avançada ou busca exata de código habilitada)search_group_code- Buscar código dentro de um grupo GitLab específico (requer busca avançada ou busca exata de código habilitada)list_project_variables- Listar variáveis de CI/CD para um projeto com filtro opcional de escopo de ambienteget_project_variable- Obter uma única variável de CI/CD de um projeto por chave, com filtro opcional de escopo de ambientecreate_project_variable- Criar uma nova variável de CI/CD em um projetoupdate_project_variable- Atualizar uma variável de CI/CD existente em um projeto, com filtro opcional para desambiguar por escopo de ambientedelete_project_variable- Excluir uma variável de CI/CD de um projeto, com filtro opcional para desambiguar por escopo de ambientelist_group_variables- Listar variáveis de CI/CD para um grupo com filtro opcional de escopo de ambienteget_group_variable- Obter uma única variável de CI/CD de um grupo por chave, com filtro opcional de escopo de ambientecreate_group_variable- Criar uma nova variável de CI/CD em um grupoupdate_group_variable- Atualizar uma variável de CI/CD existente em um grupo, com filtro opcional para desambiguar por escopo de ambientedelete_group_variable- Excluir uma variável de CI/CD de um grupo, com filtro opcional para desambiguar por escopo de ambienteget_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)update_dependency_proxy_settings- Atualizar configurações de proxy de dependência para um grupo (habilitar/desabilitar, credenciais para pulls autenticados do Docker Hub)list_dependency_proxy_blobs- Listar blobs de proxy de dependência em cache para um grupo com paginação baseada em cursorpurge_dependency_proxy_cache- Agendar purga de todos os blobs de proxy de dependência em cache para um grupolist_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)get_vulnerability- Obter detalhes completos de uma vulnerabilidade específicadismiss_vulnerability- Dispensar uma vulnerabilidade com um motivo (acceptable_risk, false_positive, used_in_tests, mitigating_control, not_applicable) e comentário opcionalconfirm_vulnerability- Confirmar uma vulnerabilidade como um achado real que requer remediaçãodiscover_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.
