Gitlab MCP Server

Servidor do Protocolo de Contexto de Modelo (MCP) para GitLab — expõe 1006 operações das APIs REST e GraphQL do GitLab como ferramentas MCP (28 meta-ferramentas / 43 empresariais), 24 recursos, 38 prompts e 17 tipos de conclusão para assistentes de IA. Escrito em Go, binário estático único, transporte stdio e HTTP.

Documentação

GitLab MCP Server — let your AI assistant drive GitLab in plain language

GitLab MCP Server

GitHub Release License: MIT Platform Quality Gate Coverage Go Reference

Glama MCP Score MCP Badge smithery badge Cursor Directory Hosted endpoint

Conecte seu assistente de IA ao GitLab para que ele possa revisar merge requests, fazer triagem de pipelines, gerenciar issues e redigir releases — em linguagem natural. Um único binário estático (ou um container), mais de 1000 ferramentas GitLab sobre a API REST + GraphQL completa, funcionando com Claude, Cursor, VS Code e qualquer cliente MCP.

Você conversa com seu assistente de IA; ele faz o trabalho no GitLab. Sem IDs de projeto, endpoints de API ou JSON para memorizar.

"Revise o merge request !15 — é seguro fazer merge?" · "Por que o último pipeline falhou?" · "Liste issues abertas atribuídas a mim" · "Gere notas de release da v1.0 para a v2.0"


🤖 Usando um assistente de IA? Dê a ele a URL deste repositório e peça para instalar o servidor para o seu cliente. Tudo o que um modelo precisa para fazer isso de forma autônoma — a configuração declarativa por cliente, os one-liners de claude mcp add e os padrões — está em llms.txt (nenhum assistente interativo necessário).

Instale em 60 segundos

Escolha uma opção. Cada caminho termina com você digitando um prompt para o seu assistente.

Instalação com um clique

ClienteBotão de um cliqueEtapa do token
VS CodeInstall in VS Codesolicita que você informe (mascarado)
VS Code InsidersInstall in VS Code Insiderssolicita que você informe (mascarado)
CursorInstall in Cursoredite YOUR_GITLAB_TOKEN
LM StudioAdd to LM Studioedite YOUR_GITLAB_TOKEN
KiroAdd to Kiroedite YOUR_GITLAB_TOKEN
Claude DesktopDownload .mcpb extensioninterface de configurações (keychain)

Cada botão registra o servidor baseado em Docker (baixa a imagem automaticamente na primeira execução; você precisa ter o Docker instalado). A linha do Claude Desktop baixa uma extensão de desktop .mcpb nativa (macOS universal + Windows, sem Docker) — abra com o Claude Desktop e preencha as configurações. Precisa de um token? Crie um Personal Access Token com o escopo api. GitLab auto-gerenciado? Adicione a variável de ambiente GITLAB_URL na configuração MCP do seu cliente após a instalação.

Claude Code (claude mcp add)

Docker (sem instalação — baixa a imagem na primeira execução):

claude mcp add gitlab --env GITLAB_TOKEN=glpat-xxxx --transport stdio \
  -- docker run -i --rm -e GITLAB_TOKEN ghcr.io/jmrplens/gitlab-mcp-server:latest --http=false

Ou instale o binário nativo primeiro e depois registre-o:

# macOS/Linux (Homebrew)
brew install jmrplens/tap/gitlab-mcp-server
# Linux/macOS (script)
curl -fsSL https://raw.githubusercontent.com/jmrplens/gitlab-mcp-server/main/scripts/install.sh | sh
# Windows (winget)
winget install --id jmrplens.gitlab-mcp-server -e
# Windows (PowerShell)
irm https://raw.githubusercontent.com/jmrplens/gitlab-mcp-server/main/scripts/install.ps1 | iex

claude mcp add gitlab --env GITLAB_TOKEN=glpat-xxxx -- gitlab-mcp-server

GitLab auto-gerenciado? Adicione --env GITLAB_URL=https://gitlab.example.com (e --env GITLAB_SKIP_TLS_VERIFY=true para certificados autoassinados).

Configuração guiada (qualquer cliente, sem flags para memorizar)

O binário inclui um assistente de configuração que coleta seu token do GitLab e configura seu cliente MCP para você — ideal se você preferir não editar JSON:

gitlab-mcp-server --setup

Ele detecta automaticamente VS Code, Claude Desktop, Claude Code, Cursor e Windsurf e grava a configuração correta. No Windows, clique duas vezes em .exe para iniciá-lo.

JSON manual (Claude Desktop, Cursor, VS Code, …)

Mostrar configuração JSON para binário nativo e Docker

Binário nativo (Claude Desktop mcpServers, Cursor, etc.):

{
  "mcpServers": {
    "gitlab": {
      "command": "/path/to/gitlab-mcp-server",
      "env": { "GITLAB_TOKEN": "glpat-xxxxxxxxxxxxxxxxxxxx" }
    }
  }
}

VS Code (.vscode/mcp.json, observe servers + type):

{
  "servers": {
    "gitlab": {
      "type": "stdio",
      "command": "/path/to/gitlab-mcp-server",
      "env": { "GITLAB_TOKEN": "glpat-xxxxxxxxxxxxxxxxxxxx" }
    }
  }
}

Variante Docker — substitua "command"/"args" por:

"command": "docker",
"args": ["run", "-i", "--rm", "-e", "GITLAB_TOKEN", "ghcr.io/jmrplens/gitlab-mcp-server:latest", "--http=false"]

Cline (VS Code) — abra a barra lateral do Cline → ícone de servidores MCP → Edit Global MCP, ou edite o arquivo de configurações diretamente:

  • macOS: ~/Library/Application Support/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json
  • Linux: ~/.config/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json
  • Windows: %APPDATA%\Code\User\globalStorage\saoudrizwan.claude-dev\settings\cline_mcp_settings.json

O Cline usa o formato mcpServers mostrado acima para o binário nativo.

Para uma implantação HTTP compartilhada e de longa duração em vez de stdio por usuário, consulte HTTP Server Mode.

Experimente sem instalar nada (endpoint hospedado)

Uma instância pública roda em https://mcp.jmrp.io/gitlab — nada para instalar, nenhuma conta além do seu próprio token do GitLab. Aponte qualquer cliente MCP com suporte a HTTP para ela:

{
  "mcpServers": {
    "gitlab": {
      "type": "http",
      "url": "https://mcp.jmrp.io/gitlab",
      "headers": { "PRIVATE-TOKEN": "glpat-xxxxxxxxxxxx" }
    }
  }
}

PRIVATE-TOKEN é obrigatório e viaja por requisição — nunca é armazenado no servidor. GITLAB-URL é opcional e o padrão é https://gitlab.com; defina-o para alcançar outra instância (ela deve estar acessível pela internet pública).

É a forma mais rápida de experimentar o servidor, e a maneira correta de continuar usando-o é ainda localmente (qualquer opção acima) ou por meio do Smithery — por um motivo concreto, não como aviso: seu token e cada requisição passam pela máquina de outra pessoa. Executá-lo localmente significa que suas credenciais e seu tráfego do GitLab nunca saem do seu computador, o que também o torna a única opção sensata para uma instância privada auto-gerenciada.

O endpoint é HTTP streamable sem estado na superfície padrão dynamic: POST é o transporte, GET nele responde a 405 por design, e https://mcp.jmrp.io/gitlab/health responde a ok. É um dos servidores listados em mcp.jmrp.io, um diretório dos servidores MCP que mantenho, cada um acessível em seu próprio endpoint; https://mcp.jmrp.io/servers.json é a mesma lista para clientes automatizados.

Então é só perguntar: abra seu cliente de IA e tente "Liste meus projetos do GitLab." Consulte o guia de Introdução para detalhes por cliente e mais exemplos de prompts.


Por que este servidor

  • 🗣️ GitLab em linguagem natural. A IA traduz "o MR !15 é seguro para merge?" nas chamadas de API corretas. Você não toca em endpoints, IDs ou JSON.
  • 🧰 A plataforma inteira — mais de 1000 ferramentas. Ampla cobertura do GitLab REST v4 + GraphQL: projetos, branches, tags, releases, merge requests, issues, pipelines, jobs, grupos, usuários, wikis, ambientes, deployments, pacotes, container registry, runners, feature flags, variáveis de CI/CD, segurança, admin, tokens e muito mais.
  • 🪶 Baixo consumo de tokens por padrão. A superfície dinâmica padrão expõe apenas 2 ferramentas (find + execute) enquanto alcança o catálogo completo — então cabe na janela de contexto de qualquer cliente. (Pegada de tokens →)
  • Comprovado com modelos reais. Um avaliador automatizado executa Anthropic, Google, OpenAI e Qwen contra instâncias reais do GitLab: 99,5% de sucesso agregado em milhares de operações. (Resultados →)
  • 🔒 Seguro por design. Modo somente leitura, modo seguro (pré-visualização dry-run de cada mutação), opções de TLS para GitLab auto-hospedado e portões contínuos de qualidade/segurança do SonarCloud.
  • 🖥️ Roda em qualquer lugar. Um único binário estático ou container; Windows, Linux e macOS; amd64 e arm64; stdio (desktop) e HTTP (remoto).
Mais: recursos, prompts e capacidades
  • 45 recursos MCP (dados somente leitura: projetos, issues, pipelines, MRs, branches, membros, o manifesto gitlab://tools ciente da superfície e guias de melhores práticas de fluxo de trabalho).
  • 37 prompts MCP (revisão de código, status de pipeline, avaliação de risco, notas de release, standup, analytics, auditoria e mais).
  • 4 assistentes de elicitação (criação interativa de issue/MR/release/projeto).
  • 3 capacidades MCP (completions, progress, elicitation) e 50 ícones SVG de ferramentas para identificação visual em clientes MCP.
  • Paginação em cada endpoint de listagem com metadados completos.

Superfícies de ferramentas

O servidor pode apresentar o GitLab em três formatos, controlados por TOOL_SURFACE. O padrão não precisa de configuração.

SuperfícieFerramentas visíveisMelhor para
Dinâmica (padrão)2 (gitlab_find_action, gitlab_execute_action)Menor custo de tokens; alcança o catálogo completo via find/execute.
Meta-ferramentas (meta)32 base / 49 Ultimate / 50 GitLab.com UltimateDespachantes agrupados por domínio com um parâmetro action.
Individual (individual)~847 Free/CE · ~999 Premium · 1065–1071 UltimateUma ferramenta MCP por operação do GitLab; precisa de uma janela de contexto grande.

As contagens de ferramentas escalam com sua edição do GitLab (GITLAB_TIER); níveis mais altos expõem mais ações. Consulte Dynamic Toolset e Meta-Tools Reference para o modelo de classificação, proteções de segurança e catálogos completos. Para execuções dinâmicas em que os recursos dominam o contexto, defina CAPABILITY_SURFACE=minimal.

Pegada de tokens

Medido com go run ./cmd/audit_tokens/ -footprint em relação ao catálogo atual. Os totais estimam o contexto de inicialização visível para um cliente MCP: esquemas de ferramentas visíveis mais recursos e prompts compartilhados, usando o tokenizador cl100k_base (codificação GPT-4/GPT-3.5). Para a matriz completa (superfícies meta e individual, todos os modos META_PARAM_SCHEMA), consulte Token Footprint Reference.

Configuração padrão: com TOOL_SURFACE não definido ou TOOL_SURFACE=dynamic, CAPABILITY_SURFACE=full, META_TOOLS não definidos, META_PARAM_SCHEMA=opaque e GITLAB_TIER não definido (detectado, fallback free), o servidor usa a superfície dinâmica find/execute. Use TOOL_SURFACE=meta apenas quando você quiser explicitamente meta-ferramentas de domínio; use TOOL_SURFACE=individual apenas quando seu cliente puder lidar com o catálogo completo de ferramentas.

Configuration (TOOL_SURFACE / CAPABILITY_SURFACE)NívelFerramentas visíveisAções alcançáveisMETA_PARAM_SCHEMATokens de esquema de ferramentasTokens compartilhadosTotal de tokens
dynamic / full (padrão)Free/CE2851n/a2,20431,75833,962
dynamic / minimalFree/CE2851n/a2,2041,0883,292
dynamic / full (padrão)Premium21,003n/a2,20431,75833,962
dynamic / minimalPremium21,003n/a2,2041,0883,292
dynamic / full (padrão)Ultimate21,069n/a2,20431,75833,962
dynamic / minimalUltimate21,069n/a2,2041,0883,292

As linhas usam o catálogo base da Community Edition, exceto quando a coluna Nível indica o contrário. GITLAB_TIER controla quais ações estão disponíveis; níveis superiores expõem mais ferramentas e, portanto, mais ações alcançáveis.

Compatibilidade

Recurso MCPSuporte
FerramentasAté 1071 individuais / 32–50 meta
Recursos45 (estáticos + modelos)
Prompts37 modelos
CompletionsProjeto, usuário, grupo, branch, tag
Registro de logEstruturado (texto/JSON) para stderr
ProgressoRelatório de progresso da execução de ferramentas
Elicitação4 assistentes interativos de criação

Testado com: VS Code + GitHub Copilot, Claude Desktop, Claude Code, Cursor, Windsurf, JetBrains IDEs, Zed, Kiro, Cline. Consulte a Matriz de Compatibilidade completa.

Avaliação do Uso de Ferramentas por Modelos de IA

O projeto inclui um avaliador automatizado para a qualidade do MCP voltada aos modelos. Ele executa verificações somente de esquema no catálogo de ferramentas ou executa chamadas de ferramentas validadas pelo modelo por meio do MCP contra instâncias Docker GitLab CE ou Enterprise licenciadas com fixtures. Ele avalia se cada modelo escolhe a ação correta, envia parâmetros válidos, se recupera de erros acionáveis do GitLab e respeita as proteções de ações destrutivas — abrangendo Anthropic, Google, OpenAI e Qwen.

Resultado publicado atual: Docker CE dinâmico 20260627-232303.

ProvedorModeloCompatibilidadePrecisão de ferramentasRecuperaçãoStatus ao vivo do Docker
Anthropicclaude-haiku-4-5-20251001OK100,0%100,0% (2/2)100,0% final em 555 operações
Googlegemini-flash-latestOK100,0%100,0% (4/4)100,0% final em 555 operações
OpenAIgpt-5.4-nanoRevisão99,3%84,6% (11/13)98,0% final em 555 operações
Qwenqwen3.6-flashOK100,0%100,0% (5/5)100,0% final em 555 operações

O conjunto publicado de avaliação de modelos cobre 596 tentativas de tarefas e 2220 operações MCP esperadas. Nos relatórios selecionados, os modelos emitiram 2265 chamadas de ferramentas em 2265 solicitações de modelos, com 99,5% de sucesso final agregado. Consulte Resultados da Avaliação de Modelos de IA para a matriz atual detalhada.

Enterprise meta e resultados de avaliação dinâmica

Resultado publicado atual: Docker Enterprise meta 20260527.

ProvedorModeloCompatibilidadePrecisão de ferramentasRecuperaçãoStatus ao vivo do Docker
Anthropicclaude-haiku-4-5-20251001OK100,0%100,0% (1/1)100,0% final em 84 operações
Googlegemini-flash-latestRevisão78,2%100,0% (7/7)100,0% final em 84 operações
OpenAIgpt-5.4-nanoRevisão100,0%100,0% (4/4)100,0% final em 84 operações
Qwenqwen3.6-flashOK100,0%100,0% (1/1)100,0% final em 84 operações

O conjunto publicado de avaliação de modelos cobre 92 tentativas de tarefas e 336 operações MCP esperadas. Nos relatórios selecionados, os modelos emitiram 345 chamadas de ferramentas em 350 solicitações de modelos, com 100,0% de sucesso final agregado. Consulte Resultados da Avaliação de Modelos de IA para a matriz atual detalhada.

Resultado publicado atual: Docker Enterprise dinâmico 20260628-015421.

ProvedorModeloCompatibilidadePrecisão de ferramentasRecuperaçãoStatus ao vivo do Docker
Anthropicclaude-haiku-4-5-20251001OK100,0%100,0% (1/1)100,0% final em 202 operações
Googlegemini-flash-latestOK100,0%100,0% (2/2)100,0% final em 202 operações
OpenAIgpt-5.4-nanoOK100,0%Sem reparos100,0% final em 202 operações
Qwenqwen3.6-flashOK100,0%100,0% (1/1)100,0% final em 202 operações

O conjunto publicado de avaliação de modelos cobre 124 tentativas de tarefas e 808 operações MCP esperadas. Nos relatórios selecionados, os modelos emitiram 817 chamadas de ferramentas em 817 solicitações de modelos, com 100,0% de sucesso final agregado. Consulte Resultados da Avaliação de Modelos de IA para a matriz atual detalhada.

Documentação

A documentação completa está em jmrplens.github.io/gitlab-mcp-server. Use este mapa para a referência de fonte da verdade em uma área específica:

DocumentoDescrição
IntroduçãoDownload, assistente de configuração, configuração por cliente
Configuração de IDEExemplos de stdio, HTTP legado e HTTP OAuth por cliente
ConfiguraçãoVariáveis de ambiente, modos de transporte, TLS
Variáveis de AmbienteTabela exaustiva de variáveis de ambiente com padrões e exemplos
Referência da CLITodas as flags de linha de comando, códigos de saída e exemplos em tempo de execução
Modo de Servidor HTTPImplantações HTTP compartilhadas, autenticação, isolamento do pool de servidores
Referência de FerramentasTodas as ferramentas individuais com esquemas de entrada/saída, incluindo o Orbit exclusivo do GitLab.com
Meta-Ferramentas32/48/49 meta-ferramentas de domínio com despacho de ações
Conjunto Dinâmico de FerramentasModo de baixo token com 2 ferramentas, catálogo canônico de ações, modelo de segurança e exemplos
RecursosTodos os 45 recursos com modelos de URI
PromptsTodos os 37 prompts com argumentos e formato de saída
Atualização AutomáticaMecanismo de auto-atualização, modos e formato de lançamento
TestesTestes unitários, E2E, avaliação de modelos por esquema, avaliação de modelos Docker e resultados selecionados de modelos
SegurançaModelo de segurança, escopos de token, validação de entrada
ArquiteturaArquitetura do sistema, design de componentes, fluxo de dados
Guia de DesenvolvimentoCompilação, testes, CI/CD, contribuição
Solução de ProblemasProblemas comuns de inicialização, token, TLS, transporte e descoberta de ferramentas

FAQ

Funciona com GitLab auto-hospedado?

Sim. Defina GITLAB_URL para a URL da sua instância. Quando GITLAB_URL é omitido, o modo stdio usa https://gitlab.com. Certificados TLS autoassinados são suportados via GITLAB_SKIP_TLS_VERIFY=true.

Meus dados estão seguros?

O servidor é executado localmente na sua máquina (modo stdio) ou na sua própria infraestrutura (modo HTTP). Nenhum dado é enviado a terceiros — todas as chamadas de API vão diretamente para a sua instância do GitLab. Consulte SECURITY.md para detalhes.

Posso usá-lo em modo somente leitura?

Sim. Defina GITLAB_READ_ONLY=true para desabilitar todas as ferramentas de mutação (criar, atualizar, excluir). Apenas operações de leitura estarão disponíveis.

Como alternativa, defina GITLAB_SAFE_MODE=true para um modo de execução simulada: as ferramentas de mutação permanecem visíveis, mas retornam uma prévia JSON estruturada em vez de executar. Útil para auditoria, treinamento ou revisão do que um assistente de IA faria.

Quais edições do GitLab são suportadas?

Tanto a Community Edition (CE) quanto a Enterprise Edition (EE). Defina GITLAB_TIER=premium ou GITLAB_TIER=ultimate no modo stdio para habilitar ferramentas adicionais para recursos Premium/Ultimate (métricas DORA, vulnerabilidades, conformidade, etc.); deixe sem definir para detectar o nível a partir da licença da instância (fallback free). No modo HTTP, --tier pode forçar o nível; caso contrário, ele é detectado por entrada do pool de token+URL a partir da licença.

Como ele lida com a limitação de taxa?

O servidor inclui lógica de nova tentativa com backoff para limites de taxa da API do GitLab. Erros são classificados como transitórios (passíveis de nova tentativa) ou permanentes, com dicas acionáveis nas mensagens de erro.

Quais clientes de IA são suportados?

Qualquer cliente compatível com MCP: VS Code + GitHub Copilot, Claude Desktop, Cursor, Claude Code, Windsurf, JetBrains IDEs, Zed, Kiro e outros. O assistente de configuração integrado pode configurar automaticamente a maioria dos clientes.

Compilação a partir do Código-Fonte

git clone https://github.com/jmrplens/gitlab-mcp-server.git
cd gitlab-mcp-server
make build

A imagem de contêiner publicada é ghcr.io/jmrplens/gitlab-mcp-server:latest. Consulte o Guia de Desenvolvimento para cross-compilation, Docker Compose e diretrizes de contribuição.

ComponenteTecnologia
LinguagemGo 1.26+
SDK MCPgithub.com/modelcontextprotocol/go-sdk v1.7.0
Cliente GitLabgitlab.com/gitlab-org/api/client-go/v2 v2.57.0
Transportestdio (padrão), HTTP (Streamable HTTP)

Política de Privacidade

O servidor é executado inteiramente na sua máquina e não possui telemetria, análises ou backend próprios — os dados fluem apenas entre o seu cliente MCP e a instância do GitLab que você configura (além de uma verificação opcional de atualização de binário assinado contra o GitHub Releases). O seu token é usado apenas para autenticar solicitações ao GitLab e nunca é registrado em logs. Detalhes completos: PRIVACY.md.

Contribuição e Segurança

Espelho do repositório: o GitHub é o repositório canônico. Um espelho somente leitura está disponível no GitLab.com para fins de descoberta; por favor, abra contribuições no GitHub.

Estatísticas desnecessárias — números que ninguém pediu

Contagem de arquivos

CategoriaArquivosLinhas
Código-fonte (.go, não-teste)975195.304
Testes unitários (_test.go)527301.738
Testes ponta a ponta17144.448
Total1.673541.490

Funções

CategoriaContagem
Funções de código-fonte7.485
— exportadas (públicas)2.629
— não exportadas (privadas)4.856
Funções de teste unitário (TestXxx)11.651
Subtestes (t.Run(...))2.922
Funções de teste ponta a ponta379

Proporções relevantes

ObservaçãoValor
Linhas de teste vs linhas de código1,54× mais testes que código
Tamanho médio de arquivo de código-fonte~200 linhas
Tamanho médio de arquivo de teste~572 linhas
Linhas de comentário no código-fonte21.636 (~11,1% do código-fonte)
Funções de teste por função de código-fonte1,6×

Padrões de código

PadrãoContagem
Verificações de if err != nil6.724
Declarações defer854
Tipos struct definidos2.729
Supressões de //nolint224
Comentários de TODO / FIXME / HACK3

Projeto

MétricaValor
Pacotes Go230
Dependências diretas (go.mod)13
Dependências indiretas50

Hall da fama

RecordeArquivo
Maior arquivo de código-fonteinternal/tools/projects/projects.go — 3.846 linhas
Maior arquivo de testeinternal/tools/projects/projects_test.go — 8.186 linhas

Por que não

FatoValor
Código-fonte impresso a 55 linhas/página~3.550 páginas de A4
Linhas de código mencionando "gitlab"12.560 (impossível evitar)
Maior nome de função no código-fonteassertDynamicCompatibilityPolicyOwnedByActionCompat (51 caracteres)
Maior nome de função de testeTestRequiredMissingAndUnknownParamNames_SchemaValidation_ReturnsSortedMissingAndUnknown (87 caracteres)