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.
Related MCP server: Large File MCP Server
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
Available Tools
5 toolsfind_chunks_for_filesARead-only
Locate chunks containing files that match a specific glob pattern. Auto-loads the diff file if not already loaded. Essential for targeted analysis when you need to focus on specific file types, directories, or naming patterns (e.g., '.py' for Python files, 'test' for test files, 'src/' for source directory). Returns chunk numbers which you then examine using get_chunk. CRITICAL: You must use an absolute directory path - relative paths will fail. DO NOT attempt direct file reading. Use this for efficient navigation to relevant changes instead of processing entire large diffs sequentially.
| Name | Required | Description | Default |
|---|---|---|---|
| pattern | Yes | Glob pattern to match file paths (e.g., '*.py', '*test*', 'src/*') | |
| absolute_file_path | Yes | Absolute path to the diff file |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond readOnlyHint=true annotation, description reveals auto-loading behavior and that output is chunk numbers. Warns about relative path failure. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
5 sentences, front-loaded with purpose, each sentence adds unique value (purpose, auto-load, use case, examples, critical warnings). No redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 2 required parameters and no output schema, description covers all essential aspects: purpose, behavior, constraints, and next step (use get_chunk). Siblings listed for context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers 100% parameters, but description adds valuable context: pattern examples ('*.py'), and reiterates absolute path requirement with rationale.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clear verb+resource: 'Locate chunks containing files' with specific glob pattern. Distinguishes from siblings like get_chunk and list_chunks by focusing on file-pattern based searching.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use (targeted analysis instead of processing entire diffs), critical constraints (absolute path required, no direct file reading), and alternatives relative to sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_chunkARead-only
Retrieve the actual content of a specific numbered chunk from a diff file. Auto-loads the diff file if not already loaded. Use this for systematic analysis of changes chunk-by-chunk, or to examine specific chunks identified via list_chunks or find_chunks_for_files. CRITICAL: You must use an absolute directory path - relative paths will fail. DO NOT read diff files directly - they exceed LLM context windows. This tool provides manageable portions of large diffs. Track your progress through chunks when doing comprehensive analysis and clean up tracking documents before final results.
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | Output format: 'raw' (default, standard diff), 'annotated' (line numbers, new/old hunk separation), 'compact' (line numbers, new hunks only) | raw |
| chunk_number | Yes | The chunk number to retrieve (1-indexed) | |
| include_context | No | Include chunk header with metadata | |
| absolute_file_path | Yes | Absolute path to the diff file |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, and the description adds that it auto-loads the diff file if not loaded and that it provides manageable portions. It correctly notes the absolute path requirement. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is somewhat lengthy but every sentence adds value: purpose, usage, critical requirement, behavioral note, and progress tracking advice. Well-structured but could be slightly more concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite no output schema, the description covers all essential aspects: what the tool does, when to use it, critical requirements (absolute path), behavioral traits (auto-loading, manageable portions), and guidance for comprehensive analysis. No gaps identified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for each parameter, so baseline is 3. The description adds the critical constraint that 'absolute_file_path' must be an absolute path, which is not in the schema. It also implies chunk_number is 1-indexed. Adds meaningful value beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves content of a specific chunk from a diff file. It distinguishes from siblings by mentioning it is for individual chunks identified via list_chunks or find_chunks_for_files, and explicitly warns against reading diff files directly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear when-to-use scenarios: systematic chunk-by-chunk analysis or examining specific chunks. Includes a critical note about absolute paths and a 'DO NOT' instruction for reading diff files directly. Slightly less explicit about alternatives but gives good context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_file_diffARead-only
Extract the complete diff for a single file from a loaded diff. Returns the diff --git header and all hunks for that file. Use this when you need changes for one specific file without fetching the entire chunk. Auto-loads the diff file if not already loaded. Supports exact file paths or glob patterns that match exactly one file. Use list_chunks with file_details to see per-file line counts and decide whether to use this tool or get_chunk. CRITICAL: You must use an absolute directory path - relative paths will fail.
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes | Exact file path or glob pattern matching a single file within the diff (e.g., 'src/main.py', '*.config') | |
| absolute_file_path | Yes | Absolute path to the diff file |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint annotation, the description discloses auto-loading behavior and path requirement. No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Every sentence serves a purpose: purpose, usage guidance, behavioral note, error condition. Concise and front-loaded with essential information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description explains return value. With good annotations and clear parameter semantics, it provides complete contextual information for correct usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers both parameters with descriptions, but the tool description adds valuable context: file_path can be exact path or glob, and absolute_file_path must be absolute. Adds nuance beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('extract'), the resource ('complete diff for a single file'), and the output ('diff --git header and all hunks'). It distinguishes from sibling tools like get_chunk and list_chunks.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly tells when to use ('when you need changes for one specific file'), references sibling tools for decision-making ('Use list_chunks... decide whether to use this tool or get_chunk'), and includes a critical requirement ('absolute directory path - relative paths will fail').
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_chunksARead-only
Get an overview of all chunks in a diff file with file mappings and summaries. Auto-loads the diff file with optimal defaults if not already loaded. Use this as your first step to understand the scope and structure of changes before diving into specific chunks. CRITICAL: You must use an absolute directory path - relative paths will fail. DO NOT attempt to read the diff file directly as it will exceed context limits. This tool provides the roadmap for systematic chunk-by-chunk analysis. If using tracking documents to resume analysis, use this to orient yourself to remaining work. Each chunk includes a token_count estimate, and the response includes total_token_count for context-budget planning.
| Name | Required | Description | Default |
|---|---|---|---|
| absolute_file_path | Yes | Absolute path to the diff file |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark it as readOnlyHint=true. Description adds behavior: 'Auto-loads the diff file with optimal defaults if not already loaded' and mentions response includes 'total_token_count'. Does not contradict annotations. Could mention error behavior if file not found, but still adds significant context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is packed with useful information and front-loaded with purpose. While every sentence adds value, it is slightly verbose. Could be tightened but still clear and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having only one parameter and no output schema, the description covers all needed context: purpose, usage guidelines, critical requirements, and expected response (file mappings, summaries, token counts). No gaps identified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with one parameter. The description adds critical semantic info beyond the schema: 'You must use an absolute directory path - relative paths will fail.' This ensures correct usage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Get an overview of all chunks in a diff file with file mappings and summaries.' It distinguishes itself from siblings like 'get_chunk' by positioning itself as the first step for understanding scope and structure.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly guides when to use: 'Use this as your first step' and 'If using tracking documents to resume analysis, use this to orient yourself.' Also provides critical warnings: absolute path required, do not read diff file directly. Includes alternatives implicitly by describing the tool's role.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
load_diffARead-only
Parse and load a diff file with custom chunking settings. Use this tool ONLY when you need non-default settings (custom chunk sizes, filtering patterns). Otherwise, use list_chunks, get_chunk, or find_chunks_for_files which auto-load with optimal defaults. CRITICAL: You must use an absolute directory path - relative paths will fail. The diff file will be too large for direct reading, so you MUST use diffchunk tools for navigation. When using tracking documents for analysis, remember to clean up tracking state before presenting final results. The response includes a files_excluded count showing how many files were removed by exclude_patterns.
| Name | Required | Description | Default |
|---|---|---|---|
| skip_trivial | No | Skip whitespace-only changes | |
| context_lines | No | Number of context lines around each change (default: keep all from diff file) | |
| skip_generated | No | Skip generated files and build artifacts | |
| max_chunk_lines | No | Maximum lines per chunk | |
| exclude_patterns | No | Comma-separated glob patterns for files to exclude | |
| include_patterns | No | Comma-separated glob patterns for files to include | |
| absolute_file_path | Yes | Absolute path to the diff file to load |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=true, consistent with description. Description adds behavioral context: absolute path, file size limitation, and need to clean tracking state. However, does not detail error handling or response content.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is concise, front-loads purpose, and contains no redundant text. Slightly verbose with multiple sentences but still efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 7 parameters well-described in schema and text, no output schema, the description provides sufficient context for usage, warnings, and behavioral notes. Missing some details on return values, but overall adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, baseline 3. Description adds extra meaning for parameters (e.g., 'whitespace-only changes' for skip_trivial, 'build artifacts' for skip_generated, 'comma-separated glob patterns' for exclude/include), justifying higher score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states verb (parse/load) and resource (diff file), and distinguishes from siblings by specifying it is for non-default chunking settings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says when to use (custom settings) and when not to (use siblings for defaults). Provides critical warnings: absolute path required, file too large, cleanup of tracking state.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
5 tool updates
v0.1.5- Added
find_chunks_for_files - Added
get_chunk - Added
get_file_diff - Added
list_chunks - Added
load_diff
4 tool updates
v0.1.0- Removed
find_chunks_for_files - Removed
get_chunk - Removed
list_chunks - Removed
load_diff
4 tool updates
v0.1.7- First observed
find_chunks_for_files - First observed
get_chunk - First observed
list_chunks - First observed
load_diff
TDQS
Scored across 5 tools
Each tool has a clearly distinct purpose: loading, listing, chunk retrieval, file-pattern search, and full file diff. No overlap or ambiguity.
All tool names follow the consistent snake_case verb_noun pattern (e.g., load_diff, list_chunks). Predictable and clear.
5 tools is well-scoped for a diff chunking server. Each tool serves a necessary function without being superfluous.
The toolset covers loading, listing, searching, and retrieving diff content. No obvious missing operations for the domain.
Maintenance
Related MCP Connectors
Code intelligence for LLMs. Analyze, search, and retrieve code from any public git repository.
Code-map tools for AI agents: see a repo's structure first, then edit only what matters.
11Code intelligence for coding agents: semantic, AST, graph, and full-text search. 279+ languages.
Change-aware CI validation and affected-test guidance for coding agents.
Related MCP Servers
- AlicenseBqualityDmaintenanceEnables pattern-based file editing operations using copy/paste functionality with text landmarks instead of exact string matching. Allows AI agents to efficiently manipulate file content by identifying code patterns and insertion points without consuming large amounts of context tokens.1MIT
- AlicenseAqualityBmaintenanceEnables intelligent handling of large files through smart chunking, search with regex support, line navigation, and streaming capabilities without loading entire files into memory.651 npm18MIT
- AlicenseAqualityAmaintenanceReduces token consumption by over 80% through intelligent file caching, returning only diffs for modified files and suppressing unchanged content. It features a suite of 12 tools for semantic search, batch reading, and efficient file editing to optimize LLM interactions with large codebases.142MIT
- AlicenseNot gradedqualityDmaintenanceProvides file caching and diff tracking for AI coding agents, reducing token usage by returning changes or confirming no changes instead of full file contents on repeated reads.82 npm220MIT