diffchunk
diffchunk
MCP-Server, der es LLMs ermöglicht, große Diff-Dateien effizient zu navigieren. Anstatt gesamte Diffs sequenziell zu lesen, können LLMs mithilfe musterbasierter Navigation direkt zu relevanten Änderungen springen.
Problem
Große Diffs überschreiten die Kontextlimits von LLMs und verschwenden Token für irrelevante Änderungen. Ein Diff mit über 50.000 Zeilen kann nicht direkt verarbeitet werden, und manuelles Aufteilen führt zum Verlust von Dateibeziehungen.
Lösung
MCP-Server mit 5 Navigationstools:
load_diff- Diff-Datei mit benutzerdefinierten Einstellungen parsen (optional)list_chunks- Chunk-Übersicht mit Dateizuordnungen und Zeilenanzahl pro Datei anzeigen (wird automatisch geladen)get_chunk- Spezifischen Chunk-Inhalt abrufen (wird automatisch geladen)find_chunks_for_files- Chunks anhand von Dateimustern lokalisieren (wird automatisch geladen)get_file_diff- Das vollständige Diff für eine einzelne Datei extrahieren (wird automatisch geladen)
Einrichtung
Voraussetzung: Installieren Sie uv (ein extrem schneller Python-Paketmanager), der den Befehl uvx bereitstellt.
Fügen Sie dies Ihrer MCP-Client-Konfiguration hinzu:
{
"mcpServers": {
"diffchunk": {
"command": "uvx",
"args": ["--from", "diffchunk", "diffchunk-mcp"]
}
}
}Verwendung
Ihr KI-Assistent kann nun massive Changesets verarbeiten, die zuvor in Cline, Roocode, Cursor und anderen Tools zu Fehlern führten.
Verwendung mit KI-Assistent
Sobald die Konfiguration abgeschlossen ist, kann Ihr KI-Assistent große Commits, Branches oder Diffs mithilfe von diffchunk analysieren.
Hier sind einige Anwendungsbeispiele:
Branch-Vergleiche:
"Überprüfe alle Änderungen in develop, die nicht im main-Branch sind, auf Fehler"
"Erzähl mir von allen Änderungen, die ich noch zusammenführen muss"
"Welche neuen Funktionen wurden dem staging-Branch hinzugefügt?"
"Fasse alle Änderungen an diesem Repository in den letzten 2 Wochen zusammen"
Code-Review:
"Verwende diffchunk, um meinen Feature-Branch auf Sicherheitslücken zu prüfen"
"Verwende diffchunk, um nach Breaking Changes zu suchen, bevor ich sie in die Produktion übernehme"
"Verwende diffchunk, um dieses große Refactoring auf potenzielle Probleme zu überprüfen"
Änderungsanalyse:
"Verwende diffchunk, um mir alle Datenbankmigrationen zu zeigen, die ausgeführt werden müssen"
"Verwende diffchunk, um herauszufinden, welche API-Änderungen unsere mobile App betreffen könnten"
"Verwende diffchunk, um alle kürzlich hinzugefügten neuen Abhängigkeiten zu analysieren"
Direkte Dateianalyse:
"Verwende diffchunk, um das Diff unter /tmp/changes.diff zu analysieren und Fehler zu finden"
"Erstelle ein Diff meiner nicht festgeschriebenen Änderungen und überprüfe es"
"Vergleiche meinen lokalen Branch mit origin und hebe Konflikte hervor"
Tipp: Regeln für den KI-Assistenten
Fügen Sie dies den benutzerdefinierten Anweisungen Ihres KI-Assistenten für die automatische Nutzung hinzu:
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.Funktionsweise
Wenn Sie Ihren KI-Assistenten bitten, Änderungen zu analysieren, verwendet er die Tools von diffchunk strategisch:
Erstellt die Diff-Datei (z. B.
git diff main..develop > /tmp/changes.diff) basierend auf Ihrer FrageVerwendet
list_chunks, um einen Überblick über die Diff-Struktur und den Gesamtumfang zu erhalten, einschließlich der Zeilenanzahl pro Datei überfile_detailsVerwendet
find_chunks_for_files, um relevante Abschnitte zu lokalisieren, wenn Sie nach bestimmten Dateitypen fragenVerwendet
get_file_diff, um das vollständige Diff für eine bestimmte Datei abzurufen, ohne einen ganzen Chunk zu ladenVerwendet
get_chunk, um bestimmte Abschnitte zu untersuchen, ohne das gesamte Diff in den Kontext zu ladenVerfolgt den Fortschritt systematisch durch große Changesets und analysiert Chunk für Chunk
Bereinigt temporäre Dateien nach Abschluss der Analyse
Dies ermöglicht es Ihrem KI-Assistenten, massive Diffs zu verarbeiten, die andere Tools normalerweise zum Absturz bringen würden, während gleichzeitig eine gründliche Analyse ohne Kontextverlust gewährleistet ist.
Tool-Nutzungsmuster
Zuerst Übersicht:
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 planningSpezifische Dateien ansteuern:
find_chunks_for_files("/tmp/changes.diff", "*.py")
# → [1, 3, 5] - Python file chunks
get_chunk("/tmp/changes.diff", 1)
# → Content of first Python chunkEinzeldatei-Diff:
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 fileSystematische Analyse:
# Process each chunk in sequence
get_chunk("/tmp/changes.diff", 1)
get_chunk("/tmp/changes.diff", 2)
# ... continue through all chunksKonfiguration
Pfadanforderungen
Nur absolute Pfade:
/home/user/project/changes.diffPlattformübergreifend: Windows (
C:\path) und Unix (/path)Home-Erweiterung:
~/project/changes.diff
Standardeinstellungen für das automatische Laden
Tools werden mit optimierten Einstellungen automatisch geladen:
max_chunk_lines: 1000skip_trivial: true (nur Leerzeichen)skip_generated: true (Lock-Dateien, Build-Artefakte)
Benutzerdefinierte Einstellungen
Verwenden Sie load_diff für ein Verhalten, das von den Standardeinstellungen abweicht:
load_diff(
"/tmp/large.diff",
max_chunk_lines=2000,
include_patterns="*.py,*.js",
exclude_patterns="*test*",
context_lines=2
)Formatoptionen
Verwenden Sie den Parameter format bei get_chunk, um die Ausgabe für die LLM-Verarbeitung zu transformieren:
# 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")Annotiertes Format fügt ## File:-Header, __new hunk__/__old hunk__-Abschnitte mit Zeilennummern der neuen Datei sowie Funktionskontext aus @@-Headern hinzu.
Kompaktes Format zeigt nur an, was hinzugefügt oder beibehalten wurde, und lässt entfernte Zeilen sowie __old hunk__-Abschnitte vollständig weg. Nützlich, wenn Sie nur den Endzustand sehen müssen.
Kontextreduzierung
Verwenden Sie context_lines bei load_diff, um die Kontextzeilen pro Hunk bereits beim Laden zu reduzieren:
# 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)Dies lässt sich mit format kombinieren – der Kontext wird beim Laden reduziert, und die Formatierung wird dann bei der Anzeige angewendet.
Unterstützte Formate
Git-Diff-Ausgabe (
git diff,git show)Unified-Diff-Format (
diff -u)Mehrere Dateien in einem einzigen Diff
Indikatoren für Binärdateiänderungen
Leistung
Verarbeitet effizient Diffs mit über 100.000 Zeilen
Speichereffizientes Streaming
Automatisches Neuladen bei Dateiänderungen
Dokumentation
Design - Architektur- und Implementierungsdetails
Mitwirken - Richtlinien für Mitwirkende und Entwicklungseinrichtung
Lizenz
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