Utiliser GAC comme serveur MCP
May 17, 2026 · View on GitHub
English | 简体中文 | 繁體中文 | 日本語 | 한국어 | हिन्दी | Tiếng Việt | Français | Русский | Español | Português | Norsk | Svenska | Deutsch | Nederlands | Italiano
GAC peut fonctionner comme un serveur du Model Context Protocol (MCP), permettant aux agents IA et aux éditeurs de générer des commits via des appels d'outils structurés au lieu de commandes shell.
Table des matières
Qu'est-ce que MCP ?
Le Model Context Protocol est un standard ouvert qui permet aux applications d'IA d'appeler des outils externes via une interface structurée. En exécutant GAC comme serveur MCP, tout client compatible MCP peut inspecter l'état du dépôt et créer des commits alimentés par l'IA sans invoquer directement des commandes shell.
Avantages
- Interaction structurée : Les agents appellent des outils typés avec des paramètres validés au lieu d'analyser la sortie du shell
- Flux de travail à deux outils :
gac_statuspour inspecter,gac_commitpour agir — un ajustement naturel pour le raisonnement des agents - Capacités complètes de GAC : Messages de commit IA, commits groupés, analyse de secrets et push — tout disponible via MCP
- Aucune configuration supplémentaire : Le serveur utilise votre configuration GAC existante (
~/.gac.env, paramètres de fournisseur, etc.)
Installation
Le serveur MCP est démarré avec uvx gac serve et communique via stdio, le transport standard MCP.
Claude Code
Ajoutez au .mcp.json de votre projet ou au ~/.claude/claude_code_config.json global :
{
"mcpServers": {
"gac": {
"command": "uvx",
"args": ["gac", "serve"]
}
}
}
Ou si vous avez GAC installé globalement :
{
"mcpServers": {
"gac": {
"command": "gac",
"args": ["serve"]
}
}
}
Cursor
Ajoutez aux paramètres MCP de Cursor (.cursor/mcp.json) :
{
"mcpServers": {
"gac": {
"command": "uvx",
"args": ["gac", "serve"]
}
}
}
Autres clients MCP
Tout client compatible MCP peut utiliser GAC. Le point d'entrée du serveur est :
command: uvx
args: ["gac", "serve"]
transport: stdio
Outils disponibles
Le serveur expose deux outils :
gac_status
Inspecte l'état du dépôt. Utilisez-le avant de commiter pour comprendre ce qui sera commité.
Paramètres :
| Parameter | Type | Default | Description |
|---|---|---|---|
format | "summary" | "detailed" | "json" | "summary" | Format de sortie |
include_diff | bool | false | Inclure le contenu complet du diff |
include_stats | bool | true | Inclure les statistiques de changements de lignes |
include_history | int | 0 | Nombre de commits récents à inclure |
staged_only | bool | false | Afficher uniquement les changements indexés |
include_untracked | bool | true | Inclure les fichiers non suivis |
max_diff_lines | int | 500 | Limiter la taille du diff (0 = illimité) |
Retourne : Nom de la branche, état des fichiers (indexés/non indexés/non suivis/conflits), contenu optionnel du diff, statistiques optionnelles et historique optionnel des commits.
gac_commit
Génère un message de commit alimenté par l'IA et exécute optionnellement le commit.
Paramètres :
| Parameter | Type | Default | Description |
|---|---|---|---|
stage_all | bool | false | Indexer tous les changements avant de commiter (git add -A) |
files | list[str] | [] | Fichiers spécifiques à indexer |
dry_run | bool | false | Aperçu sans exécution |
message_only | bool | false | Générer le message sans commiter |
push | bool | false | Pousser vers le distant après le commit |
group | bool | false | Diviser les changements en plusieurs commits logiques |
one_liner | bool | false | Message de commit sur une seule ligne |
scope | string | null | null | Portée de commit conventionnel (auto-détectée si non fournie) |
hint | string | "" | Contexte additionnel pour de meilleurs messages |
model | string | null | null | Remplacer le modèle IA (provider:model_name) |
language | string | null | null | Remplacer la langue du message de commit |
skip_secret_scan | bool | false | Ignorer l'analyse de sécurité |
no_verify | bool | false | Ignorer les hooks de pre-commit |
auto_confirm | bool | false | Ignorer les confirmations (requis pour les agents) |
Retourne : Statut de succès, message de commit généré, hash du commit (si commité), liste des fichiers modifiés et éventuels avertissements.
Flux de travail
Commit basique
1. gac_status() → Voir ce qui a changé
2. gac_commit(stage_all=true, auto_confirm=true) → Indexer, générer le message et commiter
Aperçu avant le commit
1. gac_status(include_diff=true, include_stats=true) → Examiner les changements en détail
2. gac_commit(stage_all=true, dry_run=true) → Aperçu du message de commit
3. gac_commit(stage_all=true, auto_confirm=true) → Exécuter le commit
Commits groupés
1. gac_status() → Voir tous les changements
2. gac_commit(stage_all=true, group=true, dry_run=true) → Aperçu des regroupements logiques
3. gac_commit(stage_all=true, group=true, auto_confirm=true) → Exécuter les commits groupés
Commit avec contexte
1. gac_status(include_history=5) → Voir les commits récents comme référence de style
2. gac_commit(
stage_all=true,
hint="Fixes login timeout bug from issue #42",
scope="auth",
auto_confirm=true
)
Configuration
Le serveur MCP utilise votre configuration GAC existante. Aucune configuration supplémentaire n'est nécessaire au-delà de :
- Fournisseur et modèle : Exécutez
uvx gac initouuvx gac modelpour configurer votre fournisseur d'IA - Clés API : Stockées dans
~/.gac.env(configurées lors deuvx gac init) - Paramètres optionnels : Toutes les variables d'environnement GAC s'appliquent (
GAC_LANGUAGE,GAC_VERBOSE, etc.)
Voir la documentation principale pour toutes les options de configuration.
Dépannage
"No model configured"
Exécutez uvx gac init pour configurer votre fournisseur d'IA et votre modèle avant d'utiliser le serveur MCP.
"No staged changes found"
Indexez les fichiers manuellement (git add) ou utilisez stage_all=true dans l'appel à gac_commit.
Le serveur ne démarre pas
Vérifiez que GAC est installé et accessible :
uvx gac --version
Si vous utilisez uvx, assurez-vous que uv est installé et dans votre PATH.
L'agent ne trouve pas le serveur
Assurez-vous que le fichier de configuration MCP est au bon emplacement pour votre client et que le chemin du command est accessible depuis votre environnement shell.
Corruption de la sortie Rich
Le serveur MCP redirige automatiquement toute la sortie de la console Rich vers stderr pour empêcher la corruption du protocole stdio. Si vous voyez une sortie illisible, assurez-vous d'exécuter uvx gac serve (et non uvx gac directement) lors de l'utilisation de MCP.