Usar 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
GAC puede ejecutarse como un servidor del Model Context Protocol (MCP), permitiendo que agentes de IA y editores generen commits a través de llamadas de herramientas estructuradas en lugar de comandos de shell.
Tabla de Contenidos
- Usar GAC como Servidor MCP
¿Qué es MCP?
El Model Context Protocol es un estándar abierto que permite a las aplicaciones de IA llamar a herramientas externas a través de una interfaz estructurada. Al ejecutar GAC como un servidor MCP, cualquier cliente compatible con MCP puede inspeccionar el estado del repositorio y crear commits impulsados por IA sin invocar comandos de shell directamente.
Beneficios
- Interacción estructurada: Los agentes llaman a herramientas tipadas con parámetros validados en lugar de analizar la salida del shell
- Flujo de trabajo de dos herramientas:
gac_statuspara inspeccionar,gac_commitpara actuar — un ajuste natural para el razonamiento de agentes - Capacidades completas de GAC: Mensajes de commit con IA, commits agrupados, escaneo de secretos y push — todo disponible a través de MCP
- Sin configuración adicional: El servidor usa tu configuración existente de GAC (
~/.gac.env, configuración de proveedores, etc.)
Configuración
El servidor MCP se inicia con uvx gac serve y se comunica a través de stdio, el transporte estándar de MCP.
Claude Code
Añade a tu .mcp.json del proyecto o al ~/.claude/claude_code_config.json global:
{
"mcpServers": {
"gac": {
"command": "uvx",
"args": ["gac", "serve"]
}
}
}
O si tienes GAC instalado globalmente:
{
"mcpServers": {
"gac": {
"command": "gac",
"args": ["serve"]
}
}
}
Cursor
Añade a la configuración MCP de Cursor (.cursor/mcp.json):
{
"mcpServers": {
"gac": {
"command": "uvx",
"args": ["gac", "serve"]
}
}
}
Otros Clientes MCP
Cualquier cliente compatible con MCP puede usar GAC. El punto de entrada del servidor es:
command: uvx
args: ["gac", "serve"]
transport: stdio
Herramientas Disponibles
El servidor expone dos herramientas:
gac_status
Inspecciona el estado del repositorio. Úsalo antes de hacer commit para entender qué se va a commitear.
Parámetros:
| Parameter | Type | Default | Descripción |
|---|---|---|---|
format | "summary" | "detailed" | "json" | "summary" | Formato de salida |
include_diff | bool | false | Incluir contenido completo del diff |
include_stats | bool | true | Incluir estadísticas de cambios de líneas |
include_history | int | 0 | Número de commits recientes a incluir |
staged_only | bool | false | Mostrar solo cambios preparados |
include_untracked | bool | true | Incluir archivos sin seguimiento |
max_diff_lines | int | 500 | Limitar tamaño de salida del diff (0 = ilimitado) |
Retorna: Nombre de rama, estado de archivos (preparados/no preparados/sin seguimiento/conflictos), contenido opcional del diff, estadísticas opcionales e historial opcional de commits.
gac_commit
Genera un mensaje de commit impulsado por IA y opcionalmente ejecuta el commit.
Parámetros:
| Parameter | Type | Default | Descripción |
|---|---|---|---|
stage_all | bool | false | Preparar todos los cambios antes de commitear (git add -A) |
files | list[str] | [] | Archivos específicos a preparar |
dry_run | bool | false | Vista previa sin ejecutar |
message_only | bool | false | Generar mensaje sin hacer commit |
push | bool | false | Hacer push al remoto después del commit |
group | bool | false | Dividir cambios en múltiples commits lógicos |
one_liner | bool | false | Mensaje de commit de una sola línea |
scope | string | null | null | Scope de commit convencional (auto-detectado si no se proporciona) |
hint | string | "" | Contexto adicional para mejores mensajes |
model | string | null | null | Sobrescribir modelo de IA (provider:model_name) |
language | string | null | null | Sobrescribir idioma del mensaje de commit |
skip_secret_scan | bool | false | Omitir escaneo de seguridad |
no_verify | bool | false | Omitir hooks de pre-commit |
auto_confirm | bool | false | Omitir confirmaciones (requerido para agentes) |
Retorna: Estado de éxito, mensaje de commit generado, hash del commit (si se commiteó), lista de archivos modificados y cualquier advertencia.
Flujos de Trabajo
Commit Básico
1. gac_status() → Ver qué ha cambiado
2. gac_commit(stage_all=true, auto_confirm=true) → Preparar, generar mensaje y commitear
Vista Previa Antes de Hacer Commit
1. gac_status(include_diff=true, include_stats=true) → Revisar cambios en detalle
2. gac_commit(stage_all=true, dry_run=true) → Vista previa del mensaje de commit
3. gac_commit(stage_all=true, auto_confirm=true) → Ejecutar el commit
Commits Agrupados
1. gac_status() → Ver todos los cambios
2. gac_commit(stage_all=true, group=true, dry_run=true) → Vista previa de agrupaciones lógicas
3. gac_commit(stage_all=true, group=true, auto_confirm=true) → Ejecutar commits agrupados
Commit con Contexto
1. gac_status(include_history=5) → Ver commits recientes como referencia de estilo
2. gac_commit(
stage_all=true,
hint="Fixes login timeout bug from issue #42",
scope="auth",
auto_confirm=true
)
Configuración del Servidor
El servidor MCP usa tu configuración existente de GAC. No se necesita configuración adicional más allá de:
- Proveedor y modelo: Ejecuta
uvx gac initouvx gac modelpara configurar tu proveedor de IA - Claves API: Almacenadas en
~/.gac.env(configuradas duranteuvx gac init) - Ajustes opcionales: Todas las variables de entorno de GAC aplican (
GAC_LANGUAGE,GAC_VERBOSE, etc.)
Consulta la documentación principal para todas las opciones de configuración.
Solución de Problemas
"No model configured"
Ejecuta uvx gac init para configurar tu proveedor de IA y modelo antes de usar el servidor MCP.
"No staged changes found"
Prepara archivos manualmente (git add) o usa stage_all=true en la llamada a gac_commit.
El servidor no inicia
Verifica que GAC esté instalado y accesible:
uvx gac --version
Si usas uvx, asegúrate de que uv esté instalado y en tu PATH.
El agente no encuentra el servidor
Asegúrate de que el archivo de configuración MCP esté en la ubicación correcta para tu cliente y que la ruta del command sea accesible desde tu entorno de shell.
Corrupción de salida Rich
El servidor MCP redirige automáticamente toda la salida de la consola Rich a stderr para prevenir la corrupción del protocolo stdio. Si ves salida ilegible, asegúrate de estar ejecutando uvx gac serve (no uvx gac directamente) al usar MCP.