Code Summarizer
Una herramienta de línea de comandos que resume archivos de código en un directorio usando Gemini Flash 2.0.
Documentación
Code Summarizer
Una herramienta de línea de comandos que resume archivos de código en un directorio determinado usando Gemini Flash 2.0. ¡Ahora con soporte de servidor MCP para integración con herramientas LLM!
Características
- Procesa recursivamente archivos de código en un directorio
- Respeta las reglas de
.gitignore - Omite directorios irrelevantes como
node_modules,dist, etc. - Resume archivos de código usando Gemini Flash 2.0
- Genera resúmenes en un archivo de texto
- Nivel de detalle y longitud de resumen configurables
- Servidor MCP para integración con Claude Desktop y otras herramientas LLM
- Diseño modular para fácil integración en otras aplicaciones
- Gestión segura de claves API
- Autenticación para endpoints del servidor MCP
- Mecanismo de reintento con retroceso exponencial para llamadas LLM
- Limitación de velocidad para prevenir abuso
Requisitos
- Node.js 18+
Instalación
-
Clona el repositorio
git clone https://github.com/nicobailon/code-summarizer.git cd code-summarizer -
Instala las dependencias:
npm install -
Crea un archivo
.envcon tu clave API de Google:GOOGLE_API_KEY=your_api_key_here -
Compila el proyecto:
npm run build
Configuración e Integración del Servidor MCP
El resumidor de código incluye un servidor de Protocolo de Contexto de Modelo (MCP) que permite que herramientas LLM como Claude Desktop, Cursor AI y Cline accedan a resúmenes de código y contenido de archivos.
Iniciando el Servidor MCP
# Start the MCP server
npm start -- server
Por defecto, el servidor se ejecuta en el puerto 24312. Puedes cambiar esto en tu configuración:
# Set custom MCP server port
npm start -- config set --port 8080
Conexión con Claude Desktop
- Inicia el servidor MCP de code-summarizer
- Abre Claude Desktop y haz clic en el menú de Claude, luego en "Settings..."
- Navega a la sección "Developer"
- Crea un archivo en
~/.claude/claude_desktop_config.json(macOS/Linux) o%USERPROFILE%\.claude\claude_desktop_config.json(Windows) con este contenido:
{
"code-summarizer": {
"command": "npx",
"args": ["-y", "your-path-to-code-summarizer/bin/code-summarizer.js", "server"],
"env": {
"GOOGLE_API_KEY": "your_api_key_here"
}
}
}
- Reinicia Claude Desktop
- Después de reiniciar, puedes pedirle a Claude que acceda a tu código, por ejemplo, "Resume los archivos en mi proyecto"
Ejemplos de prompts para Claude Desktop:
- "¿Puedes resumir todos los archivos JavaScript en mi proyecto?"
- "Por favor, dame una visión general de alto nivel de mi código."
- "Explica qué hace el archivo 'src/config/config.ts'."
- "Encuentra todas las funciones relacionadas con autenticación en mi código."
Conexión con Cursor AI
- Inicia el servidor MCP de code-summarizer
- Crea un archivo
.cursor/mcp.jsonen tu directorio de proyecto:
{
"mcpServers": {
"code-summarizer": {
"transport": "sse",
"url": "http://localhost:24312/sse",
"headers": {
"x-api-key": "your_api_key_here"
}
}
}
}
- Reinicia Cursor o recarga tu proyecto
- Pregunta a Cursor sobre tu código, por ejemplo, "¿Puedes resumir mi código?"
Ejemplos de prompts para Cursor:
- "Resume la estructura de este código para mí."
- "¿Cuáles son los componentes clave en este proyecto?"
- "Dame una explicación detallada de la implementación del servidor MCP."
- "Ayúdame a entender cómo funciona el mecanismo de reintento."
Conexión con Cline
- Inicia el servidor MCP de code-summarizer
- En Cline, puedes agregar el servidor MCP con un comando:
/mcp add code-summarizer http://localhost:24312/sse
- Luego autentícate con tu clave API:
/mcp config code-summarizer headers.x-api-key your_api_key_here
- Puedes pedirle a Cline que use code-summarizer, por ejemplo, "Por favor, resume mis archivos de código"
Ejemplos de prompts para Cline:
- "¿Qué hace cada archivo en mi proyecto?"
- "Crea un resumen de todos los archivos TypeScript."
- "Explica el flujo de autenticación en este código."
- "¿Cuáles son las funciones principales en el directorio 'summarizer'?"
Qué Puedes Hacer con la Integración MCP
Usando la integración MCP, puedes:
- Obtener resúmenes de archivos: Solicitar explicaciones concisas de qué hacen archivos específicos
- Explorar directorios: Navegar por la estructura de tu código
- Procesamiento por lotes: Resumir múltiples archivos a la vez
- Consultas dirigidas: Encontrar patrones o funcionalidades específicas en tu código
- Personalizar resúmenes: Controlar el nivel de detalle y la longitud del resumen
- Actualizar configuraciones: Cambiar opciones de configuración a través de la interfaz MCP
El servidor MCP expone tu código a las herramientas LLM de manera estructurada, permitiéndoles leer, navegar y resumir tu código sin tener que pegar fragmentos de código manualmente.
Detalles de Integración del Servidor MCP
Recursos MCP
code://file/*- Accede a archivos de código individualescode://directory/*- Lista archivos de código en un directoriosummary://file/*- Obtén el resumen de un archivo específicosummary://batch/*- Obtén resúmenes de múltiples archivos
Herramientas MCP
summarize_file- Resume un solo archivo con opcionessummarize_directory- Resume un directorio con opcionesset_config- Actualiza opciones de configuración
Prompts MCP
code_summary- Plantilla de prompt para resumir códigodirectory_summary- Plantilla de prompt para resumir directorios completos
Solución de Problemas
Problemas Comunes de Conexión MCP
-
Conexión Rechazada
- Asegúrate de que el servidor MCP esté ejecutándose (
npm start -- server) - Verifica que el puerto sea correcto en tu configuración
- Revisa si hay problemas de firewall que bloqueen la conexión
- Asegúrate de que el servidor MCP esté ejecutándose (
-
Errores de Autenticación
- Verifica que hayas agregado la clave API correcta en los encabezados (
x-api-key) - Comprueba que tu clave API sea válida y esté formateada correctamente
- Asegúrate de que las variables de entorno estén configuradas correctamente
- Verifica que hayas agregado la clave API correcta en los encabezados (
-
Errores de Transporte
- Asegúrate de que el tipo de transporte especificado sea correcto (SSE)
- Comprueba que la URL incluya el endpoint correcto (
/sse) - Verifica la conectividad de red entre el cliente y el servidor
-
Problemas de Permisos
- Asegúrate de que el servidor MCP tenga acceso de lectura a tu código
- Revisa los permisos de archivos si falla el resumen de archivos específicos
-
Claude Desktop No Encuentra el Servidor MCP
- Verifica que la ruta en
claude_desktop_config.jsonsea correcta - Asegúrate de que el comando y los argumentos apunten a la ubicación correcta
- Revisa los registros de Claude Desktop para ver errores de configuración
- Verifica que la ruta en
-
Limitación de Velocidad
- Si ves errores de "Demasiadas solicitudes", espera e inténtalo de nuevo más tarde
- Considera ajustar la configuración de limitación de velocidad en el código del servidor
Para otros problemas, revisa los registros del servidor o abre un problema en el repositorio de GitHub.
Uso
Interfaz de Línea de Comandos
# Default command (summarize)
npm start -- summarize [directory] [output-file] [options]
# Summarize code in the current directory (output to summaries.txt)
npm start -- summarize
# Summarize code with specific detail level and max length
npm start -- summarize --detail high --max-length 1000
# Show help
npm start -- --help
Gestión de Configuración
# Set your API key
npm start -- config set --api-key "your-api-key"
# Set default detail level and max length
npm start -- config set --detail-level high --max-length 1000
# Set MCP server port (default: 24312)
npm start -- config set --port 8080
# Show current configuration
npm start -- config show
# Reset configuration to defaults
npm start -- config reset
Autenticación de API
Al conectarte al servidor MCP, debes incluir tu clave API en los encabezados de la solicitud:
x-api-key: your_api_key_here
Todos los endpoints (excepto /health) requieren autenticación.
Opciones
--detail,-d: Establece el nivel de detalle de los resúmenes. Las opciones son 'low', 'medium' o 'high'. El valor predeterminado es 'medium'.--max-length,-l: Longitud máxima de cada resumen en caracteres. El valor predeterminado es 500.
Características de Seguridad
Gestión de Claves API
- Las claves API se almacenan de forma segura y priorizan las variables de entorno sobre los archivos de configuración
- Las claves se validan para verificar su formato antes de su uso
- Las claves API nunca se exponen en registros o mensajes de error
- El archivo de configuración no almacena claves API cuando se proporcionan mediante variables de entorno
Autenticación
- Todos los endpoints del servidor MCP (excepto la verificación de salud) requieren autenticación mediante clave API
- La autenticación utiliza el encabezado
x-api-keypara una transmisión segura - Los intentos de autenticación fallidos se registran para monitoreo de seguridad
Limitación de Velocidad
- La limitación de velocidad integrada previene el abuso del servicio
- Valor predeterminado: 60 solicitudes por minuto por dirección IP
- Configurable a través de la configuración del servidor
Manejo de Errores
- Sistema de errores estructurado con categorización
- La información sensible nunca se expone en mensajes de error
- Se devuelven códigos de error adecuados para diferentes escenarios de fallo
Resiliencia de Llamadas LLM
- Reintento automático con retroceso exponencial para fallos transitorios
- Configuración de reintento ajustable que incluye reintentos máximos, retrasos y factor de retroceso
- Se agrega jitter al tiempo de reintento para prevenir problemas de avalancha
- Seguimiento de ID de solicitud para rastrear problemas en todo el sistema
Tipos de Archivos Soportados
- TypeScript (.ts, .tsx)
- JavaScript (.js, .jsx)
- Python (.py)
- Java (.java)
- C++ (.cpp)
- C (.c)
- Go (.go)
- Ruby (.rb)
- PHP (.php)
- C# (.cs)
- Swift (.swift)
- Rust (.rs)
- Kotlin (.kt)
- Scala (.scala)
- Vue (.vue)
- HTML (.html)
- CSS (.css, .scss, .less)
Cómo Funciona
- La herramienta escanea el directorio especificado recursivamente, respetando las reglas de
.gitignore. - Filtra archivos según las extensiones soportadas.
- Para cada archivo soportado, lee el contenido y determina el lenguaje de programación.
- Envía el código a Gemini Flash 2.0 con un prompt para resumir, incluyendo restricciones de nivel de detalle y longitud.
- Los resúmenes se recopilan y escriben en el archivo de salida especificado.
Formato de Salida
El archivo de salida tendrá el siguiente formato:
relative/path/to/file
Summary text here
relative/path/to/next/file
Next summary text here
Estructura del Proyecto
index.ts: Implementación principal de CLIsrc/: Directorio de código fuentesummarizer/: Funcionalidad principal de resumenmcp/: Implementación del servidor MCPconfig/: Gestión de configuración
bin/: Punto de entrada de CLIconfig.json: Archivo de configuración predeterminadotsconfig.json: Configuración de TypeScriptpackage.json: Dependencias y scripts del proyecto.env.example: Plantilla para configurar variables de entorno.gitignore: Archivos y directorios a ignorar en Git__tests__: Pruebas unitarias y de integración__mocks__/mock-codebase: Código de prueba simulado
Variables de Entorno
Las siguientes variables de entorno se pueden usar para configurar la aplicación:
| Variable | Descripción | Valor Predeterminado |
|---|---|---|
GOOGLE_API_KEY | Tu clave API de Google Gemini | Ninguno (requerido) |
PORT | Puerto para el servidor MCP | 24312 |
ALLOWED_ORIGINS | Lista separada por comas de orígenes CORS permitidos | http://localhost:3000 |
LOG_LEVEL | Nivel de registro (error, warn, info, debug) | info |
Consulta .env.example para ver una plantilla.
Desarrollo
Ejecutando Pruebas
# Run all tests
npm test
# Run tests with coverage
npm test -- --coverage
# Test MCP server setup
npm run test:setup
Mejoras Futuras
- Soporte para más tipos de archivos
- Soporte para proveedores LLM alternativos
- Integración con una aplicación Electron para una interfaz gráfica
- Capacidades mejoradas del servidor MCP
- Seguimiento avanzado de uso de tokens
- Observabilidad basada en OpenTelemetry
- Capacidades mejoradas de registro de auditoría
- Integración de escaneo de secretos