Usare GAC come Server MCP

May 17, 2026 · View on GitHub

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

GAC può funzionare come un server del Model Context Protocol (MCP), permettendo ad agenti IA ed editor di generare commit attraverso chiamate di strumenti strutturate invece di comandi shell.

Indice

Cos'è MCP?

Il Model Context Protocol è uno standard aperto che permette alle applicazioni IA di chiamare strumenti esterni attraverso un'interfaccia strutturata. Eseguendo GAC come server MCP, qualsiasi client compatibile con MCP può ispezionare lo stato del repository e creare commit alimentati dall'IA senza invocare direttamente comandi shell.

Benefici

  • Interazione strutturata: Gli agenti chiamano strumenti tipizzati con parametri validati invece di analizzare l'output della shell
  • Flusso di lavoro a due strumenti: gac_status per ispezionare, gac_commit per agire — un adattamento naturale per il ragionamento degli agenti
  • Capacità complete di GAC: Messaggi di commit IA, commit raggruppati, scansione di segreti e push — tutto disponibile tramite MCP
  • Nessuna configurazione aggiuntiva: Il server utilizza la tua configurazione GAC esistente (~/.gac.env, impostazioni provider, ecc.)

Installazione

Il server MCP viene avviato con uvx gac serve e comunica tramite stdio, il trasporto standard MCP.

Claude Code

Aggiungi al .mcp.json del tuo progetto o al ~/.claude/claude_code_config.json globale:

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

O se hai GAC installato globalmente:

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

Cursor

Aggiungi alle impostazioni MCP di Cursor (.cursor/mcp.json):

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

Altri Client MCP

Qualsiasi client compatibile con MCP può usare GAC. Il punto di ingresso del server è:

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

Strumenti Disponibili

Il server espone due strumenti:

gac_status

Ispeziona lo stato del repository. Usalo prima del commit per capire cosa verrà committato.

Parametri:

ParameterTypeDefaultDescrizione
format"summary" | "detailed" | "json""summary"Formato di output
include_diffboolfalseIncludere il contenuto completo del diff
include_statsbooltrueIncludere statistiche sulle modifiche alle righe
include_historyint0Numero di commit recenti da includere
staged_onlyboolfalseMostrare solo le modifiche nello staging
include_untrackedbooltrueIncludere file non tracciati
max_diff_linesint500Limitare la dimensione del diff (0 = illimitato)

Restituisce: Nome del branch, stato dei file (staging/non staging/non tracciati/conflitti), contenuto opzionale del diff, statistiche opzionali e cronologia opzionale dei commit.

gac_commit

Genera un messaggio di commit alimentato dall'IA e opzionalmente esegue il commit.

Parametri:

ParameterTypeDefaultDescrizione
stage_allboolfalseMettere in staging tutte le modifiche prima del commit (git add -A)
fileslist[str][]File specifici da mettere in staging
dry_runboolfalseAnteprima senza eseguire
message_onlyboolfalseGenerare il messaggio senza fare commit
pushboolfalsePush al remoto dopo il commit
groupboolfalseDividere le modifiche in più commit logici
one_linerboolfalseMessaggio di commit su una singola riga
scopestring | nullnullScope di commit convenzionale (auto-rilevato se non fornito)
hintstring""Contesto aggiuntivo per messaggi migliori
modelstring | nullnullSovrascrivere il modello IA (provider:model_name)
languagestring | nullnullSovrascrivere la lingua del messaggio di commit
skip_secret_scanboolfalseSaltare la scansione di sicurezza
no_verifyboolfalseSaltare gli hook di pre-commit
auto_confirmboolfalseSaltare le conferme (richiesto per gli agenti)

Restituisce: Stato di successo, messaggio di commit generato, hash del commit (se committato), lista dei file modificati e eventuali avvisi.

Flussi di Lavoro

Commit Base

1. gac_status()                              → Vedere cosa è cambiato
2. gac_commit(stage_all=true, auto_confirm=true)  → Staging, generazione messaggio e commit

Anteprima Prima del Commit

1. gac_status(include_diff=true, include_stats=true)  → Esaminare le modifiche in dettaglio
2. gac_commit(stage_all=true, dry_run=true)            → Anteprima del messaggio di commit
3. gac_commit(stage_all=true, auto_confirm=true)       → Eseguire il commit

Commit Raggruppati

1. gac_status()                                           → Vedere tutte le modifiche
2. gac_commit(stage_all=true, group=true, dry_run=true)   → Anteprima dei raggruppamenti logici
3. gac_commit(stage_all=true, group=true, auto_confirm=true)  → Eseguire i commit raggruppati

Commit con Contesto

1. gac_status(include_history=5)  → Vedere i commit recenti come riferimento di stile
2. gac_commit(
     stage_all=true,
     hint="Fixes login timeout bug from issue #42",
     scope="auth",
     auto_confirm=true
   )

Configurazione

Il server MCP utilizza la tua configurazione GAC esistente. Non è necessaria alcuna configurazione aggiuntiva oltre a:

  1. Provider e modello: Esegui uvx gac init o uvx gac model per configurare il tuo provider IA
  2. Chiavi API: Memorizzate in ~/.gac.env (configurate durante uvx gac init)
  3. Impostazioni opzionali: Tutte le variabili d'ambiente GAC si applicano (GAC_LANGUAGE, GAC_VERBOSE, ecc.)

Consulta la documentazione principale per tutte le opzioni di configurazione.

Risoluzione Problemi

"No model configured"

Esegui uvx gac init per configurare il tuo provider IA e il modello prima di usare il server MCP.

"No staged changes found"

Metti in staging i file manualmente (git add) o usa stage_all=true nella chiamata a gac_commit.

Il server non si avvia

Verifica che GAC sia installato e accessibile:

uvx gac --version

Se usi uvx, assicurati che uv sia installato e nel tuo PATH.

L'agente non trova il server

Assicurati che il file di configurazione MCP sia nella posizione corretta per il tuo client e che il percorso del command sia accessibile dal tuo ambiente shell.

Corruzione dell'output Rich

Il server MCP reindirizza automaticamente tutto l'output della console Rich su stderr per prevenire la corruzione del protocollo stdio. Se vedi output illeggibile, assicurati di eseguire uvx gac serve (non uvx gac direttamente) quando usi MCP.

Vedi Anche