Skip to main content
Glama

diffchunk

CI Versión de PyPI Python 3.10+ Licencia: MIT uv

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:

  1. Crea el archivo diff (p. ej., git diff main..develop > /tmp/changes.diff) basado en su pregunta

  2. Utiliza list_chunks para obtener una visión general de la estructura del diff y el alcance total, incluyendo recuentos de líneas por archivo a través de file_details

  3. Utiliza find_chunks_for_files para localizar secciones relevantes cuando pregunte sobre tipos de archivos específicos

  4. Utiliza get_file_diff para obtener el diff completo de un archivo específico sin cargar un fragmento completo

  5. Utiliza get_chunk para examinar secciones específicas sin cargar todo el diff en el contexto

  6. Realiza un seguimiento sistemático del progreso a través de grandes conjuntos de cambios, analizando fragmento por fragmento

  7. 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 planning

Apuntar 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 chunk

Diff 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 file

Análisis sistemático:

# Process each chunk in sequence
get_chunk("/tmp/changes.diff", 1)
get_chunk("/tmp/changes.diff", 2)
# ... continue through all chunks

Configuración

Requisitos de ruta

  • Solo rutas absolutas: /home/user/project/changes.diff

  • Multiplataforma: 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: 1000

  • skip_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

MIT

Install Server
A
security – no known vulnerabilities
A
license - permissive license
-
quality - not tested

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