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).
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
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
- Entrada: URL del repositorio
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
- Entrada: URL del repositorio y lista de rutas de archivos
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
- Entrada: URL del repositorio, patrón de búsqueda, patrones de archivos opcionales, sensibilidad a mayúsculas y líneas de contexto
Operaciones de Ramas
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
- Entrada: URL del repositorio, rama de origen, rama de destino y bandera show_patch opcional
Operaciones de Confirmaciones
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
- Entrada: URL del repositorio, nombre de la rama, conteo máximo, filtro de autor, fecha desde, fecha hasta y búsqueda en mensajes
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
- 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
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
- Entrada: Ruta del repositorio local
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):
- 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
- Inicia sesión en tu cuenta de npm en npmjs.com
- 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"
- Ve a tu repositorio de GitHub
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.