diffchunk
diffchunk
Servidor MCP que permite a los LLM navegar por archivos diff grandes de manera eficiente. En lugar de leer diffs completos secuencialmente, los LLM pueden saltar directamente a los cambios relevantes utilizando la navegación basada en patrones.
Problema
Los diffs grandes exceden los límites de contexto de los LLM y desperdician tokens en cambios irrelevantes. Un diff de más de 50 mil líneas no puede procesarse directamente y la división manual pierde las relaciones entre archivos.
Solución
Servidor MCP con 5 herramientas de navegación:
load_diff- Analiza el archivo diff con configuraciones personalizadas (opcional)list_chunks- Muestra una descripción general de los fragmentos con asignaciones de archivos y recuentos de líneas por archivo (carga automática)get_chunk- Recupera el contenido de un fragmento específico (carga automática)find_chunks_for_files- Localiza fragmentos por patrones de archivo (carga automática)get_file_diff- Extrae el diff completo para un solo archivo (carga automática)
Configuración
Requisito previo: Instale uv (un gestor de paquetes de Python extremadamente rápido) que proporciona el comando uvx.
Añada a la configuración de su cliente MCP:
{
"mcpServers": {
"diffchunk": {
"command": "uvx",
"args": ["--from", "diffchunk", "diffchunk-mcp"]
}
}
}Uso
Su asistente de IA ahora puede manejar conjuntos de cambios masivos que anteriormente causaban fallos en Cline, Roocode, Cursor y otras herramientas.
Uso con el asistente de IA
Una vez configurado, su asistente de IA puede analizar grandes commits, ramas o diffs utilizando diffchunk.
Aquí hay algunos casos de uso de ejemplo:
Comparaciones de ramas:
"Revisa todos los cambios en develop que no están en la rama principal en busca de errores"
"Cuéntame sobre todos los cambios que aún tengo que fusionar"
"¿Qué nuevas características se añadieron a la rama de staging?"
"Resume todos los cambios en este repositorio en las últimas 2 semanas"
Revisión de código:
"Usa diffchunk para comprobar mi rama de características en busca de vulnerabilidades de seguridad"
"Usa diffchunk para encontrar cualquier cambio disruptivo antes de fusionar a producción"
"Usa diffchunk para revisar esta gran refactorización en busca de posibles problemas"
Análisis de cambios:
"Usa diffchunk para mostrarme todas las migraciones de base de datos que deben ejecutarse"
"Usa diffchunk para encontrar qué cambios en la API podrían afectar a nuestra aplicación móvil"
"Usa diffchunk para analizar todas las nuevas dependencias añadidas recientemente"
Análisis directo de archivos:
"Usa diffchunk para analizar el diff en /tmp/changes.diff y encontrar errores"
"Crea un diff de mis cambios no confirmados y revísalo"
"Compara mi rama local con origin y resalta los conflictos"
Consejo: Reglas del asistente de IA
Añada a las instrucciones personalizadas de su asistente de IA para un uso automático:
When reviewing large changesets or git commits, use diffchunk to handle large diff files.
Create temporary diff files and tracking files as needed and clean up after analysis.Cómo funciona
Cuando le pide a su asistente de IA que analice cambios, utiliza las herramientas de diffchunk estratégicamente:
Crea el archivo diff (p. ej.,
git diff main..develop > /tmp/changes.diff) basado en su preguntaUtiliza
list_chunkspara obtener una visión general de la estructura del diff y el alcance total, incluyendo recuentos de líneas por archivo a través defile_detailsUtiliza
find_chunks_for_filespara localizar secciones relevantes cuando pregunte sobre tipos de archivos específicosUtiliza
get_file_diffpara obtener el diff completo de un archivo específico sin cargar un fragmento completoUtiliza
get_chunkpara examinar secciones específicas sin cargar todo el diff en el contextoRealiza un seguimiento sistemático del progreso a través de grandes conjuntos de cambios, analizando fragmento por fragmento
Limpia los archivos temporales después de completar el análisis
Esto permite que su asistente de IA maneje diffs masivos que normalmente bloquearían otras herramientas, mientras proporciona un análisis exhaustivo sin perder el contexto.
Patrones de uso de herramientas
Primero la visión general:
list_chunks("/tmp/changes.diff")
# -> 5 chunks across 12 files, 3,847 total lines, ~15,420 tokens
# Each chunk includes token_count and file_details with per-file line counts
# Response includes total_token_count for context-budget planningApuntar a archivos específicos:
find_chunks_for_files("/tmp/changes.diff", "*.py")
# → [1, 3, 5] - Python file chunks
get_chunk("/tmp/changes.diff", 1)
# → Content of first Python chunkDiff de un solo archivo:
get_file_diff("/tmp/changes.diff", "src/main.py")
# → Complete diff for src/main.py (header + all hunks)
# Glob patterns work when they match exactly one file
get_file_diff("/tmp/changes.diff", "*.config")
# → Complete diff for the single matching config fileAnálisis sistemático:
# Process each chunk in sequence
get_chunk("/tmp/changes.diff", 1)
get_chunk("/tmp/changes.diff", 2)
# ... continue through all chunksConfiguración
Requisitos de ruta
Solo rutas absolutas:
/home/user/project/changes.diffMultiplataforma: Windows (
C:\path) y Unix (/path)Expansión de inicio:
~/project/changes.diff
Valores predeterminados de carga automática
Las herramientas se cargan automáticamente con configuraciones optimizadas:
max_chunk_lines: 1000skip_trivial: true (solo espacios en blanco)skip_generated: true (archivos de bloqueo, artefactos de compilación)
Configuraciones personalizadas
Utilice load_diff para un comportamiento no predeterminado:
load_diff(
"/tmp/large.diff",
max_chunk_lines=2000,
include_patterns="*.py,*.js",
exclude_patterns="*test*",
context_lines=2
)Opciones de formato
Utilice el parámetro format en get_chunk para transformar la salida para el consumo del LLM:
# Default - raw diff output
get_chunk("/tmp/changes.diff", 1, format="raw")
# Annotated - structured with line numbers, file headers, hunk separation
get_chunk("/tmp/changes.diff", 1, format="annotated")
# Compact - token-efficient, only new hunks (context + added lines)
get_chunk("/tmp/changes.diff", 1, format="compact")El formato anotado añade encabezados ## File:, secciones __new hunk__/__old hunk__ con números de línea del nuevo archivo y contexto de función de los encabezados @@.
El formato compacto muestra solo lo que se añadió o mantuvo, omitiendo las líneas eliminadas y las secciones __old hunk__ por completo. Útil cuando solo necesita ver el estado final.
Reducción de contexto
Utilice context_lines en load_diff para reducir las líneas de contexto por fragmento en el momento de la carga:
# Keep only 2 lines of context around each change
load_diff("/tmp/large.diff", context_lines=2)
# Keep only changes, no context
load_diff("/tmp/large.diff", context_lines=0)Esto se combina con format: el contexto se reduce en el momento de la carga y luego se aplica el formato en el momento de la visualización.
Formatos admitidos
Salida de Git diff (
git diff,git show)Formato Unified diff (
diff -u)Múltiples archivos en un solo diff
Indicadores de cambio de archivo binario
Rendimiento
Maneja eficientemente diffs de más de 100 mil líneas
Transmisión eficiente de memoria
Recarga automática ante cambios de archivo
Documentación
Diseño - Detalles de arquitectura e implementación
Contribución - Directrices de contribución y configuración de desarrollo
Licencia
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/peteretelej/diffchunk'
If you have feedback or need assistance with the MCP directory API, please join our Discord server