Git MCP Server

Un servidor MCP que permite a los agentes de IA interactuar con repositorios Git, admitiendo una amplia gama de operaciones como clonar, confirmar, crear ramas y enviar cambios.

Documentación

@cyanheads/git-mcp-server

Un servidor Git MCP para agentes de IA. STDIO y HTTP Streamable.

28 Herramientas · 1 Recurso · 1 Prompt

Version MCP Spec MCP SDK License Status TypeScript Bun


Herramientas

28 operaciones de git organizadas en siete categorías:

CategoríaHerramientasDescripción
Gestión de repositoriosgit_init, git_clone, git_status, git_cleanInicializar repos, clonar desde remotos, ver estado, limpiar archivos no rastreados
Staging y commitsgit_add, git_commit, git_diffPreparar cambios, crear commits, comparar cambios
Historial e inspeccióngit_log, git_show, git_blame, git_reflogVer historial de commits, inspeccionar objetos, rastrear autoría, ver registros de referencias
Análisisgit_changelog_analyzeRecopilar contexto de git e instrucciones para análisis de changelog impulsado por LLM
Ramas y fusionesgit_branch, git_checkout, git_merge, git_rebase, git_cherry_pickGestionar ramas, cambiar de contexto, integrar cambios, aplicar commits específicos
Operaciones remotasgit_remote, git_fetch, git_pull, git_pushConfigurar remotos, obtener actualizaciones, sincronizar repositorios, publicar cambios
Flujos de trabajo avanzadosgit_tag, git_stash, git_reset, git_worktree, git_set_working_dir, git_clear_working_dir, git_wrapup_instructionsEtiquetar versiones (listar/crear/eliminar/verificar), guardar cambios, restablecer estado, gestionar árboles de trabajo, establecer/limpiar directorio de sesión

Recursos

RecursoURIDescripción
Directorio de trabajo de Gitgit://working-directoryEl directorio de trabajo de la sesión actual, establecido mediante git_set_working_dir.

Prompts

PromptDescripciónParámetros
Resumen de GitProtocolo de flujo de trabajo para completar sesiones de git: revisar, documentar, confirmar y etiquetar cambios.changelogPath, createTag.

Primeros pasos

Entorno de ejecución

Funciona con Bun y Node.js. El entorno de ejecución se detecta automáticamente.

Entorno de ejecuciónComandoVersión mínima
Node.jsnpx @cyanheads/git-mcp-server@latest>= 20.0.0
Bunbunx @cyanheads/git-mcp-server@latest>= 1.2.0

Configuración del cliente MCP

Agrega lo siguiente a la configuración de tu cliente MCP (por ejemplo, cline_mcp_settings.json). Actualiza las variables de entorno para que coincidan con tu configuración, especialmente los campos de identidad de git.

{
  "mcpServers": {
    "git-mcp-server": {
      "type": "stdio",
      "command": "npx",
      "args": ["@cyanheads/git-mcp-server@latest"],
      "env": {
        "MCP_TRANSPORT_TYPE": "stdio",
        "MCP_LOG_LEVEL": "info",
        "GIT_BASE_DIR": "~/Developer/",
        "LOGS_DIR": "~/Developer/logs/git-mcp-server/",
        "GIT_USERNAME": "cyanheads",
        "GIT_EMAIL": "casey@caseyjhand.com",
        "GIT_SIGN_COMMITS": "true"
      }
    }
  }
}

Usuarios de Bun: reemplaza "command": "npx" con "command": "bunx".

Para HTTP Streamable, establece MCP_TRANSPORT_TYPE=http y MCP_HTTP_PORT=3015.

Características

Construido sobre mcp-ts-template.

CaracterísticaDetalles
Herramientas declarativasDefine capacidades en archivos únicos y autocontenidos. El framework gestiona el registro, la validación y la ejecución.
Manejo de erroresSistema unificado McpError para respuestas de error consistentes y estructuradas.
AutenticaciónAdmite modos none, jwt y oauth.
Almacenamiento conectableIntercambia backends (in-memory, filesystem, Supabase, Cloudflare KV/R2) sin cambiar la lógica de negocio.
ObservabilidadRegistro estructurado (Pino) y OpenTelemetry opcional con instrumentación automática para trazas y métricas.
Inyección de dependenciasConstruido con tsyringe para una arquitectura desacoplada y comprobable.
Multi-entornoDetecta automáticamente Bun o Node.js y utiliza el método de creación de procesos adecuado.
Arquitectura de proveedoresSistema de proveedores de git conectable. Actual: CLI. Planificado: isomorphic-git para implementación en el borde.
Gestión del directorio de trabajoContexto de directorio específico de la sesión para flujos de trabajo con múltiples repositorios.
Identidad de git configurableSobrescribe la información de autor/committer mediante variables de entorno, con respaldo a la configuración global de git.
Firma de commitsFirma GPG/SSH (habilitada por defecto) para commits, fusiones, rebases, cherry-picks y etiquetas. Respaldo silencioso a sin firma en caso de fallo con campos signed/signingWarning en las respuestas.
SeguridadLas operaciones destructivas (git clean, git reset --hard) requieren banderas de confirmación explícitas.

Seguridad

  • Todas las rutas de archivo se validan y sanean para prevenir el recorrido de directorios.
  • GIT_BASE_DIR opcional restringe las operaciones a un árbol de directorios específico para el sandboxing multiinquilino.
  • Los comandos de git utilizan argumentos validados mediante la creación de procesos, sin interpolación de shell.
  • Soporte de JWT y OAuth para implementaciones autenticadas.
  • Limitación de velocidad opcional mediante el servicio RateLimiter gestionado por DI.
  • Todas las operaciones se registran con contexto de solicitud para auditoría.

Configuración

Toda la configuración se valida al inicio en src/config/index.ts. Variables de entorno clave:

VariableDescripciónPredeterminado
MCP_TRANSPORT_TYPETransporte: stdio o http.stdio
MCP_SESSION_MODEModo de sesión HTTP: stateless, stateful o auto.auto
MCP_RESPONSE_FORMATFormato de respuesta: json (optimizado para LLM), markdown (legible para humanos) o auto.json
MCP_RESPONSE_VERBOSITYNivel de detalle: minimal, standard o full.standard
MCP_HTTP_PORTPuerto del servidor HTTP.3015
MCP_HTTP_HOSTNombre de host del servidor HTTP.127.0.0.1
MCP_HTTP_ENDPOINT_PATHRuta del endpoint de solicitudes MCP./mcp
MCP_AUTH_MODEModo de autenticación: none, jwt o oauth.none
STORAGE_PROVIDER_TYPEBackend de almacenamiento: in-memory, filesystem, supabase, cloudflare-kv, r2.in-memory
OTEL_ENABLEDHabilitar OpenTelemetry.false
MCP_LOG_LEVELNivel mínimo de registro: debug, info, warn, error.info
GIT_SIGN_COMMITSFirma GPG/SSH para commits, merges, rebases, cherry-picks y tags. Vuelve a sin firma en caso de error (ver respuesta signed/signingWarning).true
GIT_AUTHOR_NAMENombre del autor de Git. Aliases: GIT_USERNAME, GIT_USER. Vuelve a la configuración global de git.(none)
GIT_AUTHOR_EMAILCorreo electrónico del autor de Git. Aliases: GIT_EMAIL, GIT_USER_EMAIL. Vuelve a la configuración global de git.(none)
GIT_BASE_DIRRuta absoluta para restringir todas las operaciones de git a un árbol de directorios específico.(none)
GIT_WRAPUP_INSTRUCTIONS_PATHRuta a un archivo markdown personalizado con instrucciones de flujo de trabajo.(none)
MCP_AUTH_SECRET_KEYRequerido para autenticación jwt. Clave secreta de 32+ caracteres.(none)
OAUTH_ISSUER_URLRequerido para autenticación oauth. URL del proveedor OIDC.(none)

Ejecutar el servidor

Mediante gestor de paquetes (sin instalación)

npx @cyanheads/git-mcp-server@latest

Configura mediante variables de entorno o la configuración de tu cliente MCP.

Desarrollo local

# Build and run
npm run rebuild
npm run start:stdio   # or start:http

# Dev mode with hot reload
npm run dev:stdio     # or dev:http

# Checks and tests
npm run devcheck      # lint, format, typecheck
npm test

Cloudflare Workers

npm run build:worker   # Build the worker bundle
npm run deploy:dev     # Run locally with Wrangler
npm run deploy:prod    # Deploy to Cloudflare

Estructura del proyecto

DirectorioPropósito
src/mcp-server/toolsDefiniciones de herramientas (*.tool.ts). Las capacidades de Git residen aquí.
src/mcp-server/resourcesDefiniciones de recursos (*.resource.ts). Fuentes de datos de contexto de Git.
src/mcp-server/transportsImplementaciones de transporte HTTP y STDIO, incluida la autenticación.
src/storageAbstracción de StorageService e implementaciones de proveedores.
src/servicesProveedor de servicios Git (operaciones git basadas en CLI).
src/containerRegistros y tokens del contenedor de DI.
src/utilsUtilidades de registro, manejo de errores, rendimiento y seguridad.
src/configAnálisis y validación de variables de entorno (Zod).
tests/Pruebas unitarias y de integración, que reflejan la estructura de src/.

Formato de respuesta

Configura el formato de salida y la verbosidad mediante MCP_RESPONSE_FORMAT y MCP_RESPONSE_VERBOSITY.

Formato JSON (predeterminado, optimizado para consumo por LLM):

{
  "success": true,
  "branch": "main",
  "staged": ["src/index.ts", "README.md"],
  "unstaged": ["package.json"],
  "untracked": []
}

Formato Markdown (legible para humanos):

# Git Status: main

## Staged (2)
- src/index.ts
- README.md

## Unstaged (1)
- package.json

El LLM siempre recibe los datos estructurados completos mediante responseFormatter — listas de archivos completas, metadatos, marcas de tiempo — independientemente de lo que muestre el cliente. La verbosidad controla cuánto detalle se incluye: minimal (solo campos principales), standard (equilibrado) o full (todo).

Guía de desarrollo

Consulta AGENTS.md para arquitectura, patrones de desarrollo de herramientas y reglas de contribución.

Pruebas

Las pruebas utilizan el ejecutor de pruebas de Bun con compatibilidad con Vitest.

bun test              # Run all tests
bun test --coverage   # With coverage
bun run devcheck      # Lint, format, typecheck, audit

Hoja de ruta

El servidor utiliza una arquitectura basada en proveedores para operaciones de git:

  • Proveedor CLI (actual) — Cobertura completa de 28 herramientas mediante la CLI nativa de git. Requiere instalación local de git.
  • Proveedor git isomórfico (planificado) — Implementación pura en JS para despliegue en el edge (Cloudflare Workers, Vercel Edge, Deno Deploy). Utiliza isomorphic-git.
  • Proveedor de API de GitHub (quizás) — Operaciones nativas en la nube mediante las API REST/GraphQL de GitHub, sin necesidad de repositorio local.

Contribuciones

Las incidencias y solicitudes de extracción son bienvenidas. Ejecuta las verificaciones antes de enviar:

npm run devcheck
npm test

Licencia

Apache 2.0. Consulta LICENSE.