Modèle / jeu de données
jgravelle/jcodemunch-mcp avatar
jgravelle/jcodemunch-mcp

jCodeMunch MCP : retrieval de symboles par AST pour agents de code

Cut AI token costs 95%+ on code exploration. The leading MCP server for precise, symbol-level GitHub code retrieval via tree-sitter AST. Works with Claude Code, Cursor & any MCP client. 313B+ tokens saved.

2 687 étoiles367 forksPythonNOASSERTION

En bref

De quoi s’agit-il ?
jCodeMunch MCP indexe un dépôt une fois, puis sert aux agents des symboles précis plutôt que des fichiers entiers. Le README revendique 28,3x moins de tokens qu'un agent grep-and-read, mais la licence reste à clarifier.
À qui s’adresse-t-il ?
jCodeMunch convient aux équipes qui font explorer de gros dépôts par un agent et qui acceptent un index local. Il ne convient pas si votre code tient dans quelques fichiers, si vous dépendez de recherches non structurelles, ou si l'ambiguïté de licence bloque un usage commercial.
Puis-je l’utiliser commercialement ?
À vérifier. La licence de ce dépôt n’entre pas dans les catégories que nous classons automatiquement : lisez son fichier LICENSE avant tout usage commercial.
Est-il encore maintenu ?
Oui. Les derniers commits datent d’il y a 1 jour.
En quel langage est-il écrit ?
Principalement Python, d’après les statistiques de langage de GitHub.

Ces réponses reposent sur les données GitHub du projet (dernière synchronisation le 15 septembre 2026) et sur notre analyse. Elles ne constituent pas un avis juridique.

ANALYSE OPEN SOURCE APPROFONDIE

Le problème : l'agent ouvre des fichiers entiers pour trouver une fonction

Un agent qui explore un dépôt sans outil dédié fait toujours la même chose : il liste des fichiers, en ouvre quelques-uns en entier, lit des milliers de lignes hors sujet, recommence. Le README qualifie ce comportement de token incinerator, et le benchmark du projet chiffre le gaspillage : sur fastapi/fastapi, l'approche grep-top-3 consomme en moyenne 85 296 tokens par requête contre 2 218 avec jCodeMunch. Le public visé est précis : équipes qui utilisent Claude Code, Cursor, VS Code, Codex CLI ou Windsurf sur des bases de code assez grosses pour que la fenêtre de contexte devienne la ressource rare. Sur un projet de dix fichiers, le problème n'existe pas et l'outil non plus.

Indexation tree-sitter et métadonnées de symboles

Le mécanisme tient en deux temps. D'abord une indexation : tree-sitter parse chaque fichier source, et le projet stocke des métadonnées structurées par symbole (signature, kind, qualified name, résumé, byte offsets) à côté du contenu brut, dans un index local. Ensuite des requêtes : l'agent appelle search_symbols, récupère des identifiants de symboles, puis get_symbol_source pour obtenir l'implémentation exacte. Le README insiste sur byte-level precision : le serveur renvoie des plages d'octets, pas des fichiers. Autour de ces deux primitives, l'outillage expose des requêtes que la recherche textuelle ne sait pas formuler : get_blast_radius pour estimer ce qui casse si on modifie X, find_importers pour retrouver qui importe un module, get_class_hierarchy, find_dead_code. C'est là que se joue la différence réelle avec grep, plus que dans l'économie de tokens. Un point que le README ne détaille pas : le coût de construction et de maintien de l'index, ni le comportement quand un fichier change entre deux requêtes. Il mentionne un encodage compact MUNCH qui réduit encore les réponses, mais sans décrire le format dans le corps du README.

Installation et clés de configuration

Le README donne deux chemins. Le premier est un one-click pour VS Code, sous forme d'URI vscode:mcp/install avec un JSON embarqué : name jcodemunch, command uvx, args ["jcodemunch-mcp"]. Le second passe par PyPI, avec le paquet jcodemunch-mcp et le badge de version qui pointe sur pypi.org/project/jcodemunch-mcp. La commande uvx jcodemunch-mcp est donc le point d'entrée côté client MCP. Le README renvoie à CLIENTS.md pour la liste des clients compatibles et à QUICKSTART.md pour la prise en main. Je n'ai pas installé le paquet et je ne peux pas confirmer depuis ce matériel quels fichiers de configuration sont écrits par l'installeur, ni quelles variables d'environnement contrôlent l'emplacement de l'index. Si votre déploiement exige de savoir où sont écrites les données, c'est une question à trancher avant de généraliser l'outil à toute une équipe.

Ce que le chiffre de 28,3x couvre, et ce qu'il ne couvre pas

Le benchmark est reproduit dans le dépôt avec sa méthodologie, ses commits épinglés et son harness, ce qui est plus honnête que la moyenne des projets de cette catégorie. Il faut lire les colonnes. Le chiffre mis en avant est la comparaison avec grep-top-3 : 664 975 tokens pour la baseline contre 23 467 pour jCodeMunch sur 15 exécutions de tâches, soit 28,3x. Le chiffre de 99,6% contre read-all est un plafond que personne ne paie, le README le dit lui-même. Surtout, la dispersion par requête va de 7,6x à 81,2x avec une médiane de 26,1x : aucun multiple unique ne décrit toutes les requêtes. Les trois dépôts testés sont express, fastapi et gin, soit du JavaScript, du Python et du Go. Rien n'indique dans ce matériel comment l'outil se comporte sur des langages moins bien couverts par les grammaires tree-sitter, ni sur du code généré ou minifié. Le test A/B sur une base Vue 3 et Firebase donne d'ailleurs des écarts plus modestes : 15 à 25% d'économie au niveau de la couche outil, taux de succès 80% contre 72%.

Quand jCodeMunch est le mauvais outil

Trois cas de figure ressortent du matériel. Le premier est le petit dépôt : si votre code tient dans une poignée de fichiers, l'index ajoute une étape sans rien retirer au contexte. Le deuxième est la recherche non structurelle : chercher une chaîne dans un fichier de configuration, un message d'erreur, un commentaire ou un template, c'est du texte, pas du symbole, et un index de symboles n'a rien à y répondre. Le troisième est le code qui n'est pas du code source au sens de tree-sitter : migrations SQL, notebooks, fichiers de règles, DSL maison. Le README ne mentionne aucune de ces limites. Il faut aussi considérer le taux de timeout du test A/B : 32% avec jCodeMunch contre 40% avec les outils natifs. L'outil réduit les timeouts, il ne les élimine pas, et une requête sur trois qui expire reste une contrainte opérationnelle.

Alternatives : grep, ripgrep et LSP

L'alternative directe, c'est l'outillage natif de l'agent : rg -l pour localiser, puis ouverture des fichiers. C'est exactement la baseline grep-top-3 du benchmark, et elle a un avantage que jCodeMunch n'a pas : zéro index à construire, zéro état à maintenir, et une couverture totale du texte. Elle est moins précise et plus coûteuse en tokens, mais elle fonctionne sur n'importe quel fichier. L'autre famille d'alternatives, ce sont les serveurs LSP et les index de code déjà présents dans les IDE. La différence d'approche est nette : un LSP résout les références dans un projet compilé ou analysé en continu, avec une sémantique de langage complète, tandis que jCodeMunch s'appuie sur des grammaires tree-sitter et un index local orienté requêtes d'agent. Un LSP répond mieux à la question quelle est la définition exacte de ce nom dans ce contexte de compilation ; jCodeMunch répond mieux à donne-moi le code de ce symbole et dis-moi ce qui l'importe, dans un format pensé pour un prompt. Les deux ne s'excluent pas, mais ils ne se remplacent pas non plus.

Licence, maintenance et coût de mise à jour

Le point le plus incertain du projet est sa licence. GitHub rapporte NOASSERTION, le README affiche un badge dual-use et une phrase sans ambiguïté sur l'intention : gratuit pour un usage personnel, et une redevance si vous en tirez de l'argent. Le README promet aussi que si jCodeMunch ne s'amortit pas, vous ne payez pas jCodeMunch. Ce n'est pas une licence open source au sens de l'OSI, et je ne peux pas déterminer depuis ce matériel quels termes exacts s'appliquent à un usage en entreprise. C'est un point à faire trancher par votre service juridique avant tout déploiement commercial, pas une case à cocher en fin de projet. Côté maintenance, le rythme est élevé : trois versions publiées entre le 2 et le 4 septembre 2026, sur une numérotation en 1.108.x. Le README précise que la CI exécute le harness à chaque changement et que la publication est un workflow déclenché séparément. Une cadence de patch aussi rapide signifie des mises à jour fréquentes à absorber, et un index à reconstruire après chaque montée de version majeure du parseur. Le chiffre de 838B+ tokens économisés affiché en tête de README est daté du 17 août 2026 et valorisé au tarif d'entrée de Claude Opus ; c'est une estimation de l'auteur, pas une mesure indépendante.

Conclusion éditoriale

jCodeMunch convient aux équipes qui font explorer de gros dépôts par un agent et qui acceptent un index local. Il ne convient pas si votre code tient dans quelques fichiers, si vous dépendez de recherches non structurelles, ou si l'ambiguïté de licence bloque un usage commercial. Avant d'adopter, vérifiez trois choses : la licence exacte du paquet, le coût de réindexation après chaque merge, et si le benchmark benchmarks/REPRODUCING.md se reproduit sur votre propre corpus.

Sources officielles

  1. Issues
  2. jgravelle/jcodemunch-mcp on GitHub
  3. Project website
  4. README
  5. Releases
Notes de la communauté

Notes de la communauté