Integrates with GitIngest to generate text digests and context files from GitHub repositories (both public and private), providing structured analysis of repository contents, directory structure, and file contents optimized for LLM consumption.
GitIngest MCP Server
Un servidor MCP (Model Context Protocol) que integra GitIngest para generar archivos de contexto de repositorios de GitHub privados, diseñado para nodos de resolución de tareas LLM.
🚀 Características
Integración completa con GitIngest: Soporte para repositorios públicos y privados de GitHub
Protocolo MCP: Compatible con el estándar MCP para integración con agentes de IA
Dockerizado: Fácil despliegue y ejecución en contenedores
Configuración flexible: Patrones de inclusión/exclusión personalizables
Manejo robusto de errores: Fallback automático a CLI si el paquete Python no está disponible
Seguridad: Ejecución como usuario no-root en contenedores
📋 Requisitos
Python 3.11+
Docker (opcional, para ejecución en contenedor)
Token de acceso personal de GitHub (para repositorios privados)
🛠️ Instalación
Opción 1: Ejecución Directa
Opción 2: Docker
3. Publicación de Imagen Docker
Para publicar la imagen en GitHub Container Registry:
⚙️ Configuración
Variables de Entorno
Crea un archivo .env basado en env.example:
Token de GitHub
Para acceder a repositorios privados, necesitas un token de acceso personal de GitHub:
Genera un nuevo token con los siguientes scopes:
repo(para repositorios privados)public_repo(para repositorios públicos)
Copia el token y configúralo en la variable
GITHUB_TOKEN
🚀 Uso
Ejecución Directa
Docker
🔧 Herramientas MCP Disponibles
ingest_git
Descripción: Clona y analiza el repositorio indicado, generando resumen, estructura y contenido. Evita la duplicación de cabeceras Authorization en entornos Docker persistentes.
Parámetros:
source(requerido): URL del repositorio Git o ruta local a analizartoken(requerido): Access token de GitHub para autenticaciónmax_file_size(opcional): Tamaño máximo de archivo permitido para ingestión (por defecto 10 MB)include_patterns(opcional): Patrones de archivos a incluir, ej. '*.py, src/'exclude_patterns(opcional): Patrones de archivos a excluir, ej. 'node_modules/, *.md'branch(opcional): Branch del repositorio a clonar (por defecto 'main')
Ejemplo de uso desde un cliente MCP:
Casos de uso comunes:
Analizar repositorio completo:
Solo archivos de código fuente:
Documentación específica:
📊 Formato de Salida
El servidor devuelve texto estructurado optimizado para consumo de LLM:
🔗 Integración con Nodos LLM
Configuración para GitHub Copilot (IntelliJ/VSCode)
Para integrar con GitHub Copilot, crea o actualiza el archivo de configuración MCP:
Archivo: ~/.config/github-copilot/intellij/mcp.json (IntelliJ) o ~/.config/github-copilot/vscode/mcp.json (VSCode)
Configuración usando Imagen Docker Local
Si prefieres construir la imagen localmente:
Configuración para Claude Desktop
Para usar con Claude Desktop, agrega al archivo de configuración:
Archivo: ~/Library/Application Support/Claude/claude_desktop_config.json (macOS)
Configuración para Cline (VSCode Extension)
Para usar con la extensión Cline en VSCode:
🎯 Guía de Uso Práctica
Configuración Inicial Rápida
Obtener un Token de GitHub:
# Ve a: https://github.com/settings/tokens # Genera un nuevo token con permisos: # - repo (para repositorios privados) # - public_repo (para repositorios públicos) # Nota: Este token se usará directamente en las llamadas al MCPConfigurar en GitHub Copilot (IntelliJ/VSCode):
# Crear directorio de configuración si no existe mkdir -p ~/.config/github-copilot/intellij # Crear archivo mcp.json cat > ~/.config/github-copilot/intellij/mcp.json << 'EOF' { "servers": { "gitingest": { "command": "docker", "args": [ "run", "-i", "--rm", "docker.io/develgooapps/gitingest-mcp:main-26b875d" ] } } } EOFReiniciar GitHub Copilot para que cargue la nueva configuración.
Casos de Uso Comunes
1. Análisis Completo de Repositorio
Escenario: Necesitas entender un repositorio completo para hacer contribuciones o debugging.
Comando en el chat de Copilot:
Llamada MCP interna:
2. Análisis de Solo Código Fuente
Escenario: Solo quieres ver el código, sin documentación ni archivos de configuración.
Comando en el chat:
Llamada MCP interna:
3. Análisis de Documentación
Escenario: Solo necesitas la documentación del proyecto.
Comando en el chat:
Llamada MCP interna:
4. Análisis de Branch Específico
Escenario: Quieres analizar una feature branch específica.
Comando en el chat:
Llamada MCP interna:
5. Análisis con Límite de Tamaño
Escenario: El repo es muy grande y solo quieres archivos pequeños.
Comando en el chat:
Llamada MCP interna:
Flujo de Trabajo Típico
Identificar Repositorio: Obtén la URL del repositorio que necesitas analizar
Determinar Scope: Decide qué archivos necesitas (código, docs, config, etc.)
Usar Filtros: Aplica patrones de inclusión/exclusión según tu necesidad
Ejecutar Análisis: Usa el comando con @gitingest en tu cliente MCP
Revisar Resultados: El MCP retornará el contenido estructurado del repositorio
Consejos de Uso
Repositorios Grandes: Usa
exclude_patternspara evitarnode_modules/,__pycache__/,.git/Análisis Específico: Usa
include_patternspara enfocarte en tipos de archivo específicosBranches: Especifica el branch si no quieres analizar
main/masterTamaño de Archivos: Limita
max_file_sizepara evitar archivos binarios grandesTokens: Usa tokens con permisos mínimos necesarios para el repositorio
🐳 Docker Compose
El archivo docker-compose.yml incluye:
Configuración de salud del contenedor
Límites de recursos
Política de reinicio
Configuración de seguridad
Sistema de archivos de solo lectura
🔒 Seguridad
Ejecución como usuario no-root en contenedores
Sistema de archivos de solo lectura
Límites de recursos configurados
Validación de URLs de GitHub
Manejo seguro de tokens
🐛 Solución de Problemas
Problemas Comunes y Soluciones
1. Error: "Authentication failed" o "Repository not found"
Síntomas:
Soluciones:
Verifica que la URL del repositorio sea correcta
Asegúrate de que el token de GitHub tenga los permisos necesarios:
repopara repositorios privadospublic_repopara repositorios públicos
Para repositorios de organizaciones, el token debe tener acceso a la organización
2. Error: "Docker image not found"
Síntomas:
Soluciones:
3. Error: "GITHUB_TOKEN not set"
Síntomas:
Soluciones:
Verificar que estés pasando el token correctamente en la llamada al MCP
Asegurar que el token no tenga espacios ni caracteres especiales
El token debe incluirse en cada llamada individual al MCP, no en la configuración
Ejemplo correcto de uso:
4. Error: "Rate limit exceeded"
Síntomas:
Soluciones:
Esperar una hora antes de hacer más requests
Usar un token de GitHub autenticado (aumenta el límite de 60 a 5000 requests/hora)
Para uso intensivo, considera usar GitHub Apps
5. Error: "File too large" o "Repository too large"
Síntomas:
Soluciones:
6. Error: "MCP server not responding"
Síntomas:
El chat no reconoce @gitingest
No aparecen las herramientas del MCP
Soluciones:
Verificar que Docker esté ejecutándose:
Probar la imagen manualmente:
Reiniciar GitHub Copilot/IDE después de cambios en mcp.json
Verificar logs de Docker:
Mejores Prácticas
Gestión de Tokens
Rotación: Rota los tokens de GitHub regularmente
Scope Mínimo: Usa tokens con el mínimo scope necesario
Seguridad: Nunca compartas tokens en código o logs
Uso Dinámico: El token se pasa directamente en cada llamada al MCP, no se almacena en configuración
Optimización de Rendimiento
Filtros Inteligentes: Usa patrones de exclusión para evitar archivos innecesarios
Límites de Tamaño: Establece límites apropiados para tu caso de uso
Uso Eficiente
Branches Específicos: Analiza branches específicos en lugar de todo el repositorio
Análisis Incremental: Para repos grandes, analiza directorios específicos
Cache Local: Docker cachea las imágenes, aprovecha esto para múltiples usos
Verificación de Configuración
Usa este script para verificar que todo esté configurado correctamente:
📝 Logs
Los logs se pueden configurar con la variable LOG_LEVEL:
DEBUG: Información detalladaINFO: Información general (por defecto)WARNING: Solo advertencias y erroresERROR: Solo errores
🤝 Contribución
Fork el proyecto
Crea una rama para tu feature (
git checkout -b feature/AmazingFeature)Commit tus cambios (
git commit -m 'Add some AmazingFeature')Push a la rama (
git push origin feature/AmazingFeature)Abre un Pull Request
📄 Licencia
Este proyecto está bajo la Licencia MIT. Ver el archivo LICENSE para más detalles.
🆘 Soporte
Issues: GitHub Issues
Documentación: GitIngest Docs
Comunidad: Discord
This server cannot be installed
hybrid server
The server is able to function both locally and remotely, depending on the configuration or use case.
Integrates GitIngest to generate context files from public and private GitHub repositories, optimized for LLM consumption. Supports flexible file filtering, Docker deployment, and secure token-based authentication for private repository access.