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

¿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_status para inspeccionar, gac_commit para 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:

ParameterTypeDefaultDescripción
format"summary" | "detailed" | "json""summary"Formato de salida
include_diffboolfalseIncluir contenido completo del diff
include_statsbooltrueIncluir estadísticas de cambios de líneas
include_historyint0Número de commits recientes a incluir
staged_onlyboolfalseMostrar solo cambios preparados
include_untrackedbooltrueIncluir archivos sin seguimiento
max_diff_linesint500Limitar 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:

ParameterTypeDefaultDescripción
stage_allboolfalsePreparar todos los cambios antes de commitear (git add -A)
fileslist[str][]Archivos específicos a preparar
dry_runboolfalseVista previa sin ejecutar
message_onlyboolfalseGenerar mensaje sin hacer commit
pushboolfalseHacer push al remoto después del commit
groupboolfalseDividir cambios en múltiples commits lógicos
one_linerboolfalseMensaje de commit de una sola línea
scopestring | nullnullScope de commit convencional (auto-detectado si no se proporciona)
hintstring""Contexto adicional para mejores mensajes
modelstring | nullnullSobrescribir modelo de IA (provider:model_name)
languagestring | nullnullSobrescribir idioma del mensaje de commit
skip_secret_scanboolfalseOmitir escaneo de seguridad
no_verifyboolfalseOmitir hooks de pre-commit
auto_confirmboolfalseOmitir 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:

  1. Proveedor y modelo: Ejecuta uvx gac init o uvx gac model para configurar tu proveedor de IA
  2. Claves API: Almacenadas en ~/.gac.env (configuradas durante uvx gac init)
  3. 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.

Ver También