Modell / Datensatz
jgravelle/jcodemunch-mcp avatar
jgravelle/jcodemunch-mcp

jCodeMunch MCP: symbolgenaue Codeabfragen statt ganzer Dateien

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 Sterne367 ForksPythonNOASSERTION

Auf einen Blick

Was ist das?
Ein lokaler MCP-Server, der Repositories einmal mit tree-sitter indexiert und Agenten danach nur noch einzelne Symbole liefern lässt. Die Ersparnis ist belegt, die Lizenz ist es nicht.
Für wen ist es gedacht?
Für Teams, die Claude Code, Cursor oder einen anderen MCP-Client bereits einsetzen und deren Agenten regelmäßig ganze Dateien lesen, ist jCodeMunch einen Installationsversuch wert, sofern die Lizenzfrage vorher geklärt ist. Wer keinen MCP-fähigen Client betreibt oder ausschließlich mit dynamisch erzeugtem Code arbeitet, für den ist der Indexierungsaufwand verlorene Zeit.
Darf ich es kommerziell nutzen?
Erst prüfen. Die Lizenz dieses Repositorys ordnen wir nicht automatisch ein; lesen Sie vor jeder kommerziellen Nutzung die LICENSE-Datei.
Wird es noch gepflegt?
Ja. Die letzten Commits kamen vor 1 Tag.
In welcher Sprache ist es geschrieben?
Hauptsächlich Python, laut der Sprachstatistik von GitHub.

Die Antworten beruhen auf den GitHub-Daten des Projekts (zuletzt abgeglichen am 15. September 2026) und auf unserer Analyse. Sie sind keine Rechtsberatung.

TIEFGEHENDE OPEN-SOURCE-ANALYSE

Warum grep-and-read der eigentliche Kostentreiber ist

Das Problem, das jCodeMunch adressiert, ist nicht die Qualität der Antwort eines Coding-Agenten, sondern der Weg dorthin. Ein Agent ohne Strukturwissen sucht Textstellen, öffnet die Dateien mit den meisten Treffern vollständig und liest sie. Die README nennt das einen Token-Verbrenner, und der Benchmark stützt die Einschätzung: Für drei öffentliche Repositories vergleicht das Projekt eine Grep-top-3-Baseline, also rg -l über die Suchbegriffe, Sortierung der Dateien nach Trefferzahl und Öffnen der besten drei, mit dem eigenen Vorgehen. Über 15 Task-Läufe stehen 664.975 Token gegen 23.467, ein Faktor von 28,3. Wichtiger als der Durchschnitt ist die Streuung: Die Einzelwerte reichen von 7,6x bis 81,2x, der Median liegt bei 26,1x. Wer mit einer festen Zahl wie 95 Prozent wirbt, verkauft eine Verteilung als Konstante. Die Zielgruppe sind Teams, die bereits einen MCP-fähigen Client wie Claude Code, Cursor, VS Code, Codex CLI oder Windsurf betreiben und deren Kontextfenster regelmäßig durch Dateiinhalte gefüllt wird, die niemand angefordert hat.

Der Index: tree-sitter parst, der Server speichert Byte-Offsets

Der Mechanismus ist zweistufig. Beim Indexieren parst jCodeMunch die Quelldateien mit tree-sitter und legt strukturierte Metadaten pro Symbol ab: Signatur, Art (Funktion, Klasse, Methode, Konstante), qualifizierter Name, Zusammenfassung und Byte-Offsets. Neben diesen Metadaten bleibt der rohe Dateiinhalt im lokalen Index. Zur Laufzeit beantwortet der Server dann Abfragen wie search_symbols, get_symbol_source oder get_outline, indem er über die Metadaten sucht und die Implementierung byte-genau aus dem gespeicherten Inhalt schneidet. Der Agent bekommt also nicht eine Datei mit Fundstelle, sondern genau den Rumpf der gesuchten Funktion. Die README beschreibt zusätzlich eine kompakte Wire-Kodierung namens MUNCH, die laut Projektangabe den Median der Antwortgröße um weitere 45,5 Prozent senkt. Das ist ein Transportdetail, kein Analyseverfahren, und es erklärt, warum die gemessene Ersparnis über die reine Symbolauswahl hinausgeht.

Strukturfragen, die Textsuche nicht beantworten kann

Interessanter als die Token-Zahlen sind die Abfragen, für die es ohne Index keine Entsprechung gibt. get_blast_radius beantwortet die Frage, was bricht, wenn ein Symbol geändert wird. find_importers findet Dateien, die ein bestimmtes Modul importieren. get_class_hierarchy und find_dead_code setzen ebenfalls eine Symboltabelle voraus. Ein Grep-Werkzeug kann diese Fragen nur über Skripte beantworten, und genau das ist der Unterschied in der Praxis: Ein A/B-Test auf einer Vue-3-plus-Firebase-Codebasis, 50 Iterationen mit Claude Sonnet 4.6 und frischer Sitzung pro Durchlauf, berichtet 80 Prozent Erfolgsquote gegenüber 72 Prozent bei nativen Werkzeugen und eine Timeout-Rate von 32 gegenüber 40 Prozent. Die isolierte Einsparung auf Werkzeugebene gibt das Projekt mit 15 bis 25 Prozent an, deutlich unter den 28,3x des synthetischen Benchmarks. Eine einzelne Fundkategorie trat ausschließlich in der jCodeMunch-Variante auf: verwaiste Dateien, gefunden über find_importers. Solche Zahlen sind ehrlicher als die Produktionszähler auf der Startseite, weil sie den Overhead des echten Agentenbetriebs nicht ausblenden.

Installation über uvx und die Konfiguration im Client

Die Installation läuft über PyPI. Der Ein-Klick-Link für VS Code übergibt dem Client den Befehl uvx mit dem Argument jcodemunch-mcp, also einen Aufruf ohne vorherige lokale Installation. Für Clients ohne Ein-Klick-Unterstützung ist derselbe Befehl in die MCP-Konfiguration einzutragen: als Kommando uvx, als Argument jcodemunch-mcp. Die README verweist für die einzelnen Clients auf CLIENTS.md, für den Einstieg auf QUICKSTART.md. Das Repository enthält außerdem benchmarks/REPRODUCING.md, mit dem sich der Token-Benchmark auf eigenen Repositories nachfahren lässt, sowie TOKEN_SAVINGS.md und die Spezifikation SPEC_MUNCH.md für das Wire-Format. Der Server arbeitet lokal, was bedeutet, dass der Index auf der Maschine liegt, auf der der Client läuft, und der Quellcode das Gerät nicht verlässt. Wer den Index in einer geteilten Umgebung oder einem Container betreibt, sollte klären, wo diese Dateien liegen und wer sie liest.

Die Lizenz ist der blinde Fleck dieser Veröffentlichung

Die Metadaten des Repositories melden NOASSERTION, der Lizenz-Badge im README sagt dual-use. Der Text ist deutlicher: kostenlos für den persönlichen Gebrauch, und wer damit Geld verdient, braucht eine kommerzielle Lizenz. Dazu kommt der Satz, dass man nicht zahlt, wenn sich jCodeMunch nicht bezahlt macht. Das ist eine attraktive Zusage, aber sie ist keine Lizenz, sondern eine Garantie, und die Bedingungen, unter denen sie greift, stehen nicht im README-Ausschnitt. Wer das Werkzeug im Unternehmen einsetzt, muss vorher die LICENSE-Datei und die Seite zur kommerziellen Nutzung lesen. Aus der Tatsache, dass das Repository öffentlich ist, folgt keine Nutzungserlaubnis für kommerzielle Zwecke. Das ist keine Rechtsberatung, sondern der Hinweis, dass die entscheidende Frage hier nicht technisch ist. Ein Werkzeug, das Tokenkosten senkt, aber unklare Nutzungsrechte hat, ist für einen Konzern mit Compliance-Prozess schwerer zu beschaffen als für eine Einzelperson.

Wenn der Index nicht passt: dynamischer Code und Nicht-Python-Repositories

Ein symbolbasierter Index hat eine strukturelle Grenze. Er beschreibt, was zur Indexierungszeit im Quelltext stand. Code, der zur Laufzeit erzeugt, aus Templates zusammengesetzt oder über Reflexion aufgerufen wird, erscheint nicht als Symbol mit Signatur und Byte-Offset. In solchen Repositories beantwortet der Index Fragen falsch, indem er sie gar nicht erst stellt. Dasselbe gilt für Sprachen ohne brauchbare tree-sitter-Grammatik: Dort fällt der Server auf Textsuche zurück oder liefert grobe Ergebnisse, und der Vorteil gegenüber grep schrumpft. Ein zweiter Punkt ist die Aktualität. Nach Änderungen muss der Index nachgezogen werden, sonst liefert get_symbol_source Byte-Offsets, die auf verschobenen Code zeigen. Wie der Server die Aktualisierung auslöst, ob automatisch bei Dateiänderung oder über einen expliziten Aufruf, geht aus dem vorliegenden Material nicht hervor. Das ist eine Lücke, die man vor dem Einsatz im Team klären sollte, weil ein veralteter Index schlimmer ist als gar keiner: Er liefert plausibel aussehenden, falschen Code.

Alternative: Language-Server-Protokoll statt MCP-Index

Die naheliegende Alternative ist ein Language Server, etwa pyright oder gopls, der dieselben Strukturfragen beantwortet: Definitionen, Referenzen, Hierarchien. Der Unterschied liegt im Ansatz. Ein Language Server hält ein Projektmodell im Speicher, löst Typen auf und folgt Importen über Modulgrenzen hinweg, arbeitet also semantisch. jCodeMunch arbeitet syntaktisch über tree-sitter und speichert Ergebnisse in einem persistenten Index, der auch nach dem Beenden des Prozesses bestehen bleibt und keine laufende Analyseumgebung braucht. Dafür sieht ein Language Server Dinge, die ein AST-Index nicht sieht: aufgelöste Typen, generische Instanziierungen, bedingte Kompilierung. Der zweite Unterschied ist die Anbindung. Ein Language Server spricht LSP und wird von Editoren konsumiert. jCodeMunch spricht MCP und wird von Agenten konsumiert. Wer bereits einen Language Server im Editor laufen hat, kann dessen Fähigkeiten nicht ohne Weiteres an einen Agenten durchreichen, weshalb beide Werkzeuge nebeneinander existieren können, statt einander zu ersetzen.

Wartung, Release-Tempo und was das für den Betrieb bedeutet

Die Release-Historie ist dicht: v1.108.317 vom 4. September 2026, davor v1.108.316 und v1.108.315 an den beiden Vortagen. Die Versionsnummern deuten auf häufige Patch-Releases mit fortlaufender Build-Nummer hin, und die Release-Titel beschreiben jeweils einen konkreten Fehler, etwa eine Anzeigeeinstellung, die die angezeigten Daten veränderte, oder einen Fix für ein falsches Positiv, der ein falsches Negativ einbauen kann. Das ist ein Tempo, das auf einen einzelnen Maintainer mit automatisierter Veröffentlichung hindeutet. Die Release-Notes zu v1.108.317 nennen einen CI-Harness, der bei jeder Änderung läuft, und einen separaten Workflow für das Publishing. Für den Betrieb heißt das: häufige Updates, jede mit kleinem Umfang. Wer den Server in einer festen Version pinnt, verpasst Fehlerkorrekturen, die genau die Symbolauflösung betreffen. Wer automatisch aktualisiert, muss mit Verhaltensänderungen in Patch-Releases rechnen. Ein Upgrade-Aufwand entsteht vor allem beim Neuindexieren nach einem Versionswechsel, falls sich das Indexformat ändert. Ob das der Fall ist, sagt das Material nicht.

Redaktionelles Fazit

Für Teams, die Claude Code, Cursor oder einen anderen MCP-Client bereits einsetzen und deren Agenten regelmäßig ganze Dateien lesen, ist jCodeMunch einen Installationsversuch wert, sofern die Lizenzfrage vorher geklärt ist. Wer keinen MCP-fähigen Client betreibt oder ausschließlich mit dynamisch erzeugtem Code arbeitet, für den ist der Indexierungsaufwand verlorene Zeit. Vor dem Einsatz zu prüfen: Inhalt der LICENSE-Datei und der Seite zur kommerziellen Nutzung, die tatsächliche Token-Ersparnis auf dem eigenen Repository mit benchmarks/REPRODUCING.md sowie die Antwortzeit der Tools auf einem Repository in der eigenen Größenklasse.

Offizielle Quellen

  1. Issues
  2. jgravelle/jcodemunch-mcp on GitHub
  3. Project website
  4. README
  5. Releases
Community-Notizen

Community-Notizen