MCP Git Repo Browser

Un navegador de repositorios Git que permite navegar e inspeccionar repositorios Git locales utilizando el Model Context Protocol.

Documentación

MCP Git Repo Browser (Node.js)

Una implementación en Node.js de un navegador de repositorios Git utilizando el Protocolo de Contexto de Modelo (MCP).

GitHub Repository npm package

Instalación

NPM (Recomendado)

npm install -g git-commands-mcp

Instalación Manual

git clone https://github.com/bsreeram08/git-commands-mcp.git
cd git-commands-mcp
npm install

Configuración

Agrega esto a tu archivo de configuración de ajustes de MCP:

{
  "mcpServers": {
    "git-commands-mcp": {
      "command": "git-commands-mcp"
    }
  }
}

Para instalación manual, usa:

{
  "mcpServers": {
    "git-commands-mcp": {
      "command": "node",
      "args": ["/path/to/git-commands-mcp/src/index.js"]
    }
  }
}

Características

El servidor proporciona las siguientes herramientas:

Operaciones Básicas de Repositorio

  1. git_directory_structure: Devuelve una representación tipo árbol de la estructura de directorios de un repositorio
    • Entrada: URL del repositorio
      • Salida: Representación de árbol ASCII de la estructura del repositorio
  2. git_read_files: Lee y devuelve el contenido de archivos específicos en un repositorio
    • Entrada: URL del repositorio y lista de rutas de archivos
      • Salida: Diccionario que mapea rutas de archivos a sus contenidos
  3. git_search_code: Busca patrones en el código del repositorio
    • Entrada: URL del repositorio, patrón de búsqueda, patrones de archivos opcionales, sensibilidad a mayúsculas y líneas de contexto
      • Salida: JSON con resultados de búsqueda incluyendo líneas coincidentes y contexto

Operaciones de Ramas

  1. git_branch_diff: Compara dos ramas y muestra los archivos modificados entre ellas
    • Entrada: URL del repositorio, rama de origen, rama de destino y bandera show_patch opcional
      • Salida: JSON con el conteo de confirmaciones y resumen de diferencias

Operaciones de Confirmaciones

  1. git_commit_history: Obtiene el historial de confirmaciones de una rama con filtrado opcional
    • Entrada: URL del repositorio, nombre de la rama, conteo máximo, filtro de autor, fecha desde, fecha hasta y búsqueda en mensajes
      • Salida: JSON con detalles de confirmaciones
  2. git_commits_details: Obtiene información detallada sobre confirmaciones incluyendo mensajes completos y diferencias
    • Entrada: URL del repositorio, nombre de la rama, conteo máximo, bandera include_diff, filtro de autor, fecha desde, fecha hasta y búsqueda en mensajes
      • Salida: JSON con información detallada de confirmaciones
  3. git_local_changes: Obtiene cambios no confirmados en el directorio de trabajo
    • Entrada: Ruta del repositorio local
      • Salida: JSON con información de estado y diferencias

Estructura del Proyecto

git-commands-mcp/
├── src/
│   ├── index.js         # Entry point
│   ├── server.js        # Main server implementation
│   ├── handlers/        # Tool handlers
│   │   └── index.js     # Tool implementation functions
│   └── utils/           # Utility functions
│       └── git.js       # Git-related helper functions
├── package.json
└── readme.md

Detalles de Implementación

  • Utiliza módulos nativos de Node.js (crypto, path, os) para funcionalidad principal
  • Aprovecha fs-extra para operaciones de archivos mejoradas
  • Utiliza simple-git para operaciones de repositorios Git
  • Implementa manejo limpio de errores y limpieza de recursos
  • Crea directorios temporales deterministas basados en hashes de URL de repositorios
  • Reutiliza repositorios clonados cuando es posible para mayor eficiencia
  • Estructura de código modular para mejor mantenibilidad

Requisitos

  • Node.js 14.x o superior
  • Git instalado en el sistema

Uso

Si se instala globalmente mediante npm:

git-commands-mcp

Si se instala manualmente:

node src/index.js

El servidor se ejecuta en stdio, lo que lo hace compatible con clientes MCP.

CI/CD

Este proyecto utiliza GitHub Actions para integración y despliegue continuos:

Publicación Automática en NPM

El repositorio está configurado con un flujo de trabajo de GitHub Actions que publica automáticamente el paquete en npm cuando se envían cambios a la rama master.

Configuración de NPM_AUTOMATION_TOKEN

Para habilitar la publicación automática, necesitas agregar un token de automatización de npm como secreto de GitHub (esto funciona incluso con cuentas que tienen 2FA habilitado):

  1. Genera un token de automatización de npm:
    • Inicia sesión en tu cuenta de npm en npmjs.com
      • Ve a la configuración de tu perfil
      • Selecciona "Access Tokens"
      • Haz clic en "Generate New Token"
      • Selecciona el tipo de token "Automation"
      • Establece los permisos apropiados (necesita "Read and write" para paquetes)
      • Copia el token generado
  2. Agrega el token a tu repositorio de GitHub:
    • Ve a tu repositorio de GitHub
      • Navega a "Settings" > "Secrets and variables" > "Actions"
      • Haz clic en "New repository secret"
      • Nombre: NPM_AUTOMATION_TOKEN
      • Valor: Pega tu token de automatización de npm
      • Haz clic en "Add secret"

Una vez configurado, cualquier envío a la rama master activará el flujo de trabajo para publicar el paquete en npm.

Licencia

Licencia MIT - consulta el archivo LICENSE para más detalles.

Enlaces