jCodeMunch vs trace-mcp
| jCodeMunch | trace-mcp | |
|---|---|---|
| Token reduction on code exploration | ✓ 96.2% fewer tokens per lookup than grep-and-read (15-lookup benchmark) | ✓ Their benchmark: 72.7% fewer input tokens to review a pull request (median over 60 merged PRs in six repos they don’t own), with method and reproduction published |
| Symbol-level extraction (functions, classes) | ✓ 70+ languages (incl. YAML/Ansible, Razor/Blazor, SQL/dbt, Erlang, Fortran, Pascal, MATLAB, Ada, COBOL, Zig, PowerShell) | ✓ AST-first via tree-sitter across 81 languages; framework request-flow edges layered on by integration plugins (frameworks, 7 ORMs, view layers) |
| Doc section search | ✓ via jDocMunch | ~ Indexes markdown vaults into the same graph; no dedicated section-level doc-retrieval surface |
| Requires pre-indexing | ✓ One-time, incremental; SHA-based freshness managed automatically via freshness_mode config (relaxed/strict); list_repos exposes git_head for agent-side freshness reasoning; index_file for single-file surgical updates; watch-claude auto-discovers Claude Code worktrees | ~ trace init (global) + trace add per project (the npm package is still trace-mcp); incremental; index in ~/.trace/ |
| Works with AI agents (MCP) | ✓ Native MCP server (stdio, SSE, streamable-http); Claude Code hook integration (PreToolUse/PostToolUse → index-file); 5 built-in MCP prompt templates (workflow, explore, assess, triage, trace). Adaptive tool surface keeps the agent's tool budget in check: core/standard/full tiers, or tool_surface=counter collapses to a six-tool front door built on three verbs (order/menu/route) that fits any tool-count cap (e.g. a 50-tool limit) with zero capability loss | ~ Native MCP server; 182 tools exist. The default minimal preset shows up to 29 and defers the rest, which load_tools pulls in mid-session (full is opt-in). The default fits inside common tool-count caps; full does not |
| Import graph / reference tracing | ✓ find_importers (with has_importers flag), find_references, check_references, get_blast_radius (depth-scored risk + has_test_reach per file), get_changed_symbols, get_dependency_graph; get_untested_symbols (import-graph test reachability); TS/SvelteKit path alias resolution; cross-repo via cross_repo=true on find_importers, get_blast_radius, get_dependency_graph + dedicated get_cross_repo_map | ✓ Framework request flow (route→middleware→controller→service→view) with cross-language bridges (Inertia::render linking PHP→Vue) via per-framework integration plugins and 7 ORM adapters. jCodeMunch resolves route→handler and render→view edges with one call-shape resolver, then follows the AST call graph; plus find_importers / get_blast_radius / get_cross_repo_map |
| Architecture-decision context (revert/tradeoff/root-cause history surfaced during analysis) | ✓ get_blast_radius / get_impact_preview surface git-mined decision-bearing commits (revert/perf/refactor/rename/bugfix) + a volatility read (v1.108.59, opt-in include_decisions); get_symbol_provenance adds a per-symbol decision narrative. Read-only: surfaced from the commit record, never persisted | ✓ mine_sessions extracts decisions from agent session logs by pattern matching (no LLM calls) and stores them; query_decisions searches them and get_change_impact surfaces them. jCodeMunch reads decision context from git history at query time and stores nothing |
| Write / modify files | ✗ Read-only by design | ✗ Read-only on source |
| Runs fully offline / local | ✓ Local index, no backend (anonymous savings counter on by default) | ✓ Local Node/TypeScript; SQLite index in ~/.trace/; embeddings optional (local Ollama or OpenAI); anonymous once-a-day install ping, opt-out via TRACE_MCP_TELEMETRY=off |
| Commercial use permitted | ✓ Paid license available | ✓ MIT |
| License | Free non-commercial; paid commercial | MIT |
| Dead code detection | ✓ find_dead_code: free; confidence-scored; cascading dead-code chains; entry-point heuristics | ✗ No dedicated dead-code tool documented |
| Semantic / hybrid search | ✓ Opt-in BM25+vector (embed_repo); 4 providers: bundled ONNX, sentence-transformers, Gemini (task-aware), OpenAI; pure BM25 when disabled | ✓ SQLite FTS5 + optional bundled ONNX embeddings (Ollama / OpenAI swappable) |
| Token-budgeted retrieval | ✓ get_ranked_context (BM25 + PageRank strategies) + get_context_bundle budget params | ✗ No token-budget parameter on retrieval |
| Works alongside the others | ✓ Complements all of them | ~ Same MCP layer and the same grounded-retrieval lane: overlapping code-intelligence graph; pick one for primary code intelligence. Its default surface is now the 29-tool minimal preset, so co-loading is cheaper than it was, but two code-intelligence graphs still overlap |
trace-mcp
(Nikolai Vysotskyi) is a TypeScript/Node MCP server: MIT, 198 GitHub stars and v3.42.1 as of 29 October 2026,
AST-first via tree-sitter, SQLite + FTS5 with optional bundled ONNX embeddings, read-only on source. Its index
lives in ~/.trace/ (~/.trace-mcp/ on older installs), and the command is now trace.
It sends an anonymous usage ping: at most one per day per install, carrying a random install id, version, Node
major and OS platform, opt-out via TRACE_MCP_TELEMETRY=off. That’s disclosed in the README, and
worth knowing before it goes into a regulated environment. It starts from the same idea as jCodeMunch: give the
agent a structured index of the code instead of whole files. Two features stand out. get_request_flow
traces an HTTP request route→middleware→controller→service→view, with cross-language bridges (e.g.
Inertia::render('Users/Show') linking PHP→Vue). And mine_sessions pattern-matches agent
session logs for architecture decisions and stores them, so query_decisions can search them and
get_change_impact can show them. It has 182 tools and loads language and integration plugins by
project detection; the README lists 81 languages and 7 ORMs.
get_request_flowtraces route→middleware→controller→service→view, with cross-language prop mapping- Integration plugins for frameworks, ORMs and view layers, loaded by project detection; a new stack gets a new plugin
mine_sessionsextracts decisions from agent session logs (no LLM calls) and stores them;query_decisionsandget_change_impactsurface them- 182 MCP tools; per its comparison page (read 2026-10-26) the default
minimalpreset shows up to 29 and loads the rest on demand - Publishes a PR-review benchmark: 72.7% fewer input tokens, median over 60 merged PRs in six repos it doesn’t own
- TypeScript, MIT, read-only on source; tree-sitter AST + FTS5 + optional ONNX embeddings; very active
- Request flow:
get_signal_chainsfinds route registrations by call shape (Djangopath()/re_path(), Express/Fastify/Koarouter.get(p, h), Flaskadd_url_rule, Railsto:, and decorator routes), resolves each to its handler symbol as a typedroute->handleredge with a confidence, then follows the AST call graph from each handler. An unresolved handler is reported as unresolved, not dropped get_endpoint_impactuses the same edges for “what breaks if I change GET /users”. The edges are computed per query, not stored in the index, and an unusual registration shape is missed until a shape is added- Decision context:
get_blast_radius/get_impact_preview(opt-ininclude_decisions) show reverts, perf rewrites, refactors and root-cause fixes mined from git history, read at query time with nothing written - Front door: with
tool_surface=counterthe server advertises six tools;order,menuandroutedo the work.order()arguments are validated server-side against the target tool’s schema: a bad argument is refused with the schema error before the tool runs, and an unknown one is ignored and named in_meta.ignored_arguments plan_refactoringreturns index-scoped, word-boundary edit blocks (old_text/new_text) for the agent to apply; it does not AST-verify the result- 70+ languages, symbol retrieval, semantic search, dead-code detection, and jDocMunch for docs
Using it at work? A jCodeMunch license for commercial use is $79, one time, with a 30-day money-back guarantee (telemetry on; see terms). Non-commercial use stays free. See pricing
More comparisons
jCodeMunch vs caveman · jCodeMunch vs RTK · jCodeMunch vs Headroom · jCodeMunch vs CodeGraph · jCodeMunch vs Serena · jCodeMunch vs Repomix · jCodeMunch vs Context Mode · jCodeMunch vs RepoMapper · jCodeMunch vs codebase-memory-mcp · jCodeMunch vs Ponytail · jCodeMunch vs GitNexus
The full comparison of all 45 tools, with every one side by side in a single table.
caveman vs Ponytail vs RTK vs Headroom vs jCodeMunch: which one saves which tokens.