Skip to main content
Glama

diffchunk

CI PyPI version Python 3.10+ License: MIT uv

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:

  1. Erstellt die Diff-Datei (z. B. git diff main..develop > /tmp/changes.diff) basierend auf Ihrer Frage

  2. Verwendet list_chunks, um einen Überblick über die Diff-Struktur und den Gesamtumfang zu erhalten, einschließlich der Zeilenanzahl pro Datei über file_details

  3. Verwendet find_chunks_for_files, um relevante Abschnitte zu lokalisieren, wenn Sie nach bestimmten Dateitypen fragen

  4. Verwendet get_file_diff, um das vollständige Diff für eine bestimmte Datei abzurufen, ohne einen ganzen Chunk zu laden

  5. Verwendet get_chunk, um bestimmte Abschnitte zu untersuchen, ohne das gesamte Diff in den Kontext zu laden

  6. Verfolgt den Fortschritt systematisch durch große Changesets und analysiert Chunk für Chunk

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

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

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

Systematische Analyse:

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

Konfiguration

Pfadanforderungen

  • Nur absolute Pfade: /home/user/project/changes.diff

  • Plattformü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: 1000

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

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