MCP

MCP Git Ingest: GitHub-Verzeichnisbaum und wichtige Dateien lesen

Für alle, die in einem MCP-Client zuerst das GitHub-Verzeichnis sehen und dann benannte wichtige Dateien ziehen wollen; jede Abfrage klont nach der Repo-URL in ein lokales Temp-Verzeichnis.

Official source · MCP Git Ingest

Install

uvx --from git+https://github.com/adhikasp/mcp-git-ingest mcp-git-ingest

Für wen

Wenn ein MCP-Client zuerst den Verzeichnisbaum eines GitHub-Repos sehen und dann einige wichtige Dateien lesen soll, ohne dass du selbst klonst und das Verzeichnis durchgehst, passt dieser Dienst. Er legt zwei Werkzeuge offen: github_directory_structure liefert einen Baum, github_read_important_files liest die von dir genannten Dateiinhalte. Die Implementierung nutzt GitPython, um aus einem Hash der Repo-URL ein deterministisches Temp-Verzeichnis zu erzeugen; schon geklont wird wiederverwendet, sonst clone. Es passt zur Strukturerkundung öffentlicher Repos und zur Prüfung wichtiger Dateien. Es passt nicht zum Ziehen privater Repos ohne Autorisierung und nicht als vollständiger git-Arbeitsbereich. Klon und Dateilesen geschehen auf dieser Maschine; das ist nicht „kein Netz, keine lokalen Lesezugriffe, keine Privatsphäregrenze“.

Erster Versuch in 3 Minuten

Der offizielle Hauptweg ist uvx direkt aus dem Git-Repository. Zur Laufzeit braucht es Python 3.8+ sowie fastmcp und gitpython. Im Client den Befehl so schreiben:

uvx --from git+https://github.com/adhikasp/mcp-git-ingest  mcp-git-ingest

Nach dem Anschluss einen risikoarmen Aufruf: github_directory_structure auf das offizielle Repo selbst, Adresse https://github.com/adhikasp/mcp-git-ingest Die Evidenz sagt, das Werkzeug liefert einen Baum, nennt aber keine Parameternamen; verlangt der Client repo_url, genau diese schon geschriebene Adresse eintragen, keine Branch- oder Token-Parameter erfinden. Erfolgssignal ist der Verzeichnisbaum, keine umgeschriebene Datei. Dieser Lauf erreicht GitHub und hinterlässt einen Klon in einem hashbenannten Temp-Verzeichnis; die Zusammenfassung spricht von Aufräumen nach der Verarbeitung, die Evidenz schreibt weder Zeitpunkt noch Reste bei Fehler. Das Temp-Verzeichnis als möglichen Nebeneffekt behandeln. Ein Nur-Lese-Werkzeug ist kein Nullrisiko.

Anwendungsfälle

Fall 1: Zuerst den Verzeichnisbaum. Bei einem unbekannten öffentlichen Repo zuerst github_directory_structure aufrufen. Die Evidenz garantiert nur eine Baumdarstellung; keine Tiefengrenzen, Ignorierregeln oder Submodulverhalten. Fehlt das, den vollen Baum oder die Clientkürzung akzeptieren, keinen .gitignore-Parameter erfinden.

Fall 2: Dann wichtige Dateien lesen. Sind Pfade bekannt, mit github_read_important_files genannte Dateien lesen. Dies nutzt dieselbe Klonlogik erneut. Die Evidenz listet keine Standard-„wichtig“-Menge; Pfade musst du angeben. Zuerst README oder kurzen Text, nicht gleich viele unbekannte Dateien. Keine Größengrenze und keine Kodierungsbehandlung; ob eine riesige Datei vollständig zurückkommt, deckt die vorhandene Beschreibung nicht.

Nutzungsgrenzen

Das ist ein lokaler stdio-Dienst, kein gehostetes Nur-Lese-Gateway. Ohne Git-Fähigkeit (GitPython) kein Klon. Wie private Repos authentifizieren, steht nicht in der Evidenz; eine undokumentierte Token-Umgebungsvariable nicht als bereits unterstützt behandeln. clone_repo steht in den Implementierungshinweisen und legt per URL-Hash ein Temp-Verzeichnis an; nicht annehmen, die Platte behalte nie eine Kopie. Git-Schreiboperationen jenseits der zwei Werkzeuge sind außerhalb. Projektseite: https://github.com/adhikasp/mcp-git-ingest Der erste Versuch nur der offizielle Befehl uvx --from git+...; Erfolg ist der Verzeichnisbaum des offiziellen Repos.