Usando o GAC como Servidor MCP

May 17, 2026 · View on GitHub

English | 简体中文 | 繁體中文 | 日本語 | 한국어 | हिन्दी | Tiếng Việt | Français | Русский | Español | Português | Norsk | Svenska | Deutsch | Nederlands | Italiano

O GAC pode ser executado como um servidor do Model Context Protocol (MCP), permitindo que agentes de IA e editores gerem commits através de chamadas de ferramentas estruturadas em vez de comandos de shell.

Índice

O que é MCP?

O Model Context Protocol é um padrão aberto que permite que aplicações de IA chamem ferramentas externas através de uma interface estruturada. Ao executar o GAC como um servidor MCP, qualquer cliente compatível com MCP pode inspecionar o estado do repositório e criar commits alimentados por IA sem invocar comandos de shell diretamente.

Benefícios

  • Interação estruturada: Agentes chamam ferramentas tipadas com parâmetros validados em vez de analisar a saída do shell
  • Fluxo de trabalho de duas ferramentas: gac_status para inspecionar, gac_commit para agir — um ajuste natural para o raciocínio de agentes
  • Capacidades completas do GAC: Mensagens de commit com IA, commits agrupados, varredura de segredos e push — tudo disponível através do MCP
  • Sem configuração adicional: O servidor usa sua configuração existente do GAC (~/.gac.env, configurações de provedores, etc.)

Configuração

O servidor MCP é iniciado com uvx gac serve e se comunica via stdio, o transporte padrão do MCP.

Claude Code

Adicione ao .mcp.json do seu projeto ou ao ~/.claude/claude_code_config.json global:

{
  "mcpServers": {
    "gac": {
      "command": "uvx",
      "args": ["gac", "serve"]
    }
  }
}

Ou se você tem o GAC instalado globalmente:

{
  "mcpServers": {
    "gac": {
      "command": "gac",
      "args": ["serve"]
    }
  }
}

Cursor

Adicione às configurações MCP do Cursor (.cursor/mcp.json):

{
  "mcpServers": {
    "gac": {
      "command": "uvx",
      "args": ["gac", "serve"]
    }
  }
}

Outros Clientes MCP

Qualquer cliente compatível com MCP pode usar o GAC. O ponto de entrada do servidor é:

command: uvx
args: ["gac", "serve"]
transport: stdio

Ferramentas Disponíveis

O servidor expõe duas ferramentas:

gac_status

Inspeciona o estado do repositório. Use antes de fazer commit para entender o que será commitado.

Parâmetros:

ParameterTypeDefaultDescrição
format"summary" | "detailed" | "json""summary"Formato de saída
include_diffboolfalseIncluir conteúdo completo do diff
include_statsbooltrueIncluir estatísticas de alterações de linhas
include_historyint0Número de commits recentes a incluir
staged_onlyboolfalseMostrar apenas alterações preparadas
include_untrackedbooltrueIncluir arquivos não rastreados
max_diff_linesint500Limitar tamanho da saída do diff (0 = ilimitado)

Retorna: Nome da branch, status dos arquivos (preparados/não preparados/não rastreados/conflitos), conteúdo opcional do diff, estatísticas opcionais e histórico opcional de commits.

gac_commit

Gera uma mensagem de commit alimentada por IA e opcionalmente executa o commit.

Parâmetros:

ParameterTypeDefaultDescrição
stage_allboolfalsePreparar todas as alterações antes de commitar (git add -A)
fileslist[str][]Arquivos específicos para preparar
dry_runboolfalsePré-visualizar sem executar
message_onlyboolfalseGerar mensagem sem fazer commit
pushboolfalseFazer push para o remoto após o commit
groupboolfalseDividir alterações em múltiplos commits lógicos
one_linerboolfalseMensagem de commit de uma única linha
scopestring | nullnullScope de commit convencional (auto-detectado se não fornecido)
hintstring""Contexto adicional para melhores mensagens
modelstring | nullnullSobrescrever modelo de IA (provider:model_name)
languagestring | nullnullSobrescrever idioma da mensagem de commit
skip_secret_scanboolfalsePular varredura de segurança
no_verifyboolfalsePular hooks de pre-commit
auto_confirmboolfalsePular confirmações (obrigatório para agentes)

Retorna: Status de sucesso, mensagem de commit gerada, hash do commit (se commitado), lista de arquivos alterados e quaisquer avisos.

Fluxos de Trabalho

Commit Básico

1. gac_status()                              → Ver o que mudou
2. gac_commit(stage_all=true, auto_confirm=true)  → Preparar, gerar mensagem e commitar

Pré-visualizar Antes de Fazer Commit

1. gac_status(include_diff=true, include_stats=true)  → Revisar alterações em detalhe
2. gac_commit(stage_all=true, dry_run=true)            → Pré-visualizar a mensagem de commit
3. gac_commit(stage_all=true, auto_confirm=true)       → Executar o commit

Commits Agrupados

1. gac_status()                                           → Ver todas as alterações
2. gac_commit(stage_all=true, group=true, dry_run=true)   → Pré-visualizar agrupamentos lógicos
3. gac_commit(stage_all=true, group=true, auto_confirm=true)  → Executar commits agrupados

Commit com Contexto

1. gac_status(include_history=5)  → Ver commits recentes como referência de estilo
2. gac_commit(
     stage_all=true,
     hint="Fixes login timeout bug from issue #42",
     scope="auth",
     auto_confirm=true
   )

Configuração do Servidor

O servidor MCP usa sua configuração existente do GAC. Nenhuma configuração adicional é necessária além de:

  1. Provedor e modelo: Execute uvx gac init ou uvx gac model para configurar seu provedor de IA
  2. Chaves API: Armazenadas em ~/.gac.env (configuradas durante uvx gac init)
  3. Configurações opcionais: Todas as variáveis de ambiente do GAC se aplicam (GAC_LANGUAGE, GAC_VERBOSE, etc.)

Consulte a documentação principal para todas as opções de configuração.

Solução de Problemas

"No model configured"

Execute uvx gac init para configurar seu provedor de IA e modelo antes de usar o servidor MCP.

"No staged changes found"

Prepare arquivos manualmente (git add) ou use stage_all=true na chamada ao gac_commit.

O servidor não inicia

Verifique se o GAC está instalado e acessível:

uvx gac --version

Se estiver usando uvx, certifique-se de que uv está instalado e no seu PATH.

O agente não encontra o servidor

Certifique-se de que o arquivo de configuração MCP está na localização correta para o seu cliente e que o caminho do command está acessível a partir do seu ambiente de shell.

Corrupção de saída Rich

O servidor MCP redireciona automaticamente toda a saída do console Rich para stderr para prevenir a corrupção do protocolo stdio. Se você vir saída ilegível, certifique-se de estar executando uvx gac serve (não uvx gac diretamente) ao usar MCP.

Ver Também