MCP

MCP Git Ingest : lire l'arbre GitHub et des fichiers importants

Pour qui veut qu'un client MCP voie d'abord le répertoire d'un dépôt GitHub, puis extraie des fichiers importants nommés ; chaque requête clone vers un répertoire temporaire local selon l'URL du dépôt.

Official source · MCP Git Ingest

Install

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

Pour qui

Si vous voulez qu'un client MCP voie d'abord l'arbre d'un dépôt GitHub, puis lise quelques fichiers importants, sans cloner à la main et parcourir le répertoire, ce service convient. Il expose deux outils : github_directory_structure renvoie un arbre, github_read_important_files lit le contenu des fichiers que vous nommez. L'implémentation utilise GitPython pour créer un répertoire temporaire déterministe à partir d'un hachage de l'URL du dépôt ; déjà cloné, il réutilise, sinon il exécute clone. Il convient au repérage de structure d'un dépôt public et à la vérification de fichiers clés. Il ne convient pas à tirer un dépôt privé sans autorisation, ni à le traiter comme un espace de travail git complet. Clone et lectures se font sur cette machine ; ce n'est pas « pas de réseau, pas de lecture locale, pas de frontière de confidentialité ».

Premier essai en 3 minutes

Le chemin principal officiel est uvx lancé directement depuis le dépôt Git. L'exécution exige Python 3.8+, plus fastmcp et gitpython. Dans le client, écrire la commande ainsi :

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

Après connexion, un appel à faible risque : github_directory_structure sur le dépôt officiel lui-même, adresse https://github.com/adhikasp/mcp-git-ingest Les preuves disent que l'outil renvoie un arbre, sans nommer les paramètres ; si le client demande repo_url, remplir cette adresse déjà écrite, sans inventer de paramètre de branche ou de token. Le signal de succès est de voir l'arbre, pas un fichier réécrit. Cet appel atteint GitHub et laisse un clone dans un répertoire temporaire nommé par hachage ; le résumé parle d'un nettoyage après traitement, mais les preuves n'écrivent ni le moment ni les restes en cas d'échec. Traiter le répertoire temporaire comme un effet de bord possible. Un outil en lecture seule n'est pas un risque zéro.

Cas d'usage

Cas 1 : voir d'abord l'arbre. Face à un dépôt public inconnu, appeler d'abord github_directory_structure. Les preuves ne garantissent qu'une représentation en arbre ; pas de limite de profondeur, de règles d'ignore ni de sous-modules. S'ils manquent, accepter l'arbre complet ou la troncature du client, ne pas inventer de paramètre .gitignore.

Cas 2 : puis lire des fichiers importants. Une fois les chemins connus, github_read_important_files lit les fichiers nommés. Cela réutilise la même logique de clone. Les preuves ne listent pas un ensemble « important » par défaut ; vous devez donner les chemins. Commencer par README ou un texte court, sans nommer d'emblée beaucoup de fichiers inconnus. Pas de plafond de taille ni de gestion d'encodage ; qu'un très gros fichier revienne entier sort de la doc existante.

Limites d'usage

C'est un service stdio local, pas une passerelle hébergée en lecture seule. Sans capacité Git (GitPython), pas de clone. L'authentification des dépôts privés n'est pas écrite ; ne pas traiter une variable d'environnement token non documentée comme déjà prise en charge. clone_repo apparaît dans les notes d'implémentation et pose un répertoire temporaire selon le hachage d'URL ; ne pas supposer que le disque ne gardera jamais de copie. Les écritures git hors des deux outils sont hors périmètre. Page du projet : https://github.com/adhikasp/mcp-git-ingest Le premier essai n'utilise que la commande officielle uvx --from git+... ; le succès est de voir l'arbre du dépôt officiel.