Direct Alternative

jCodeMunch vs trace-mcp

What each one does, where they differ, and which to reach for when. One of 45 tool comparisons we keep up to date.

Direct Alternative

jCodeMunch vs trace-mcp

At a glance: jCodeMunch vs trace-mcp
jCodeMunchtrace-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
LicenseFree non-commercial; paid commercialMIT
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
See trace-mcp beside every other tool in the full table

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.

trace-mcp
Framework request flow from per-framework plugins
  • get_request_flow traces 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_sessions extracts decisions from agent session logs (no LLM calls) and stores them; query_decisions and get_change_impact surface them
  • 182 MCP tools; per its comparison page (read 2026-10-26) the default minimal preset 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
jCodeMunch
Route edges and decision context, read-only
  • Request flow: get_signal_chains finds route registrations by call shape (Django path()/re_path(), Express/Fastify/Koa router.get(p, h), Flask add_url_rule, Rails to:, and decorator routes), resolves each to its handler symbol as a typed route->handler edge with a confidence, then follows the AST call graph from each handler. An unresolved handler is reported as unresolved, not dropped
  • get_endpoint_impact uses 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-in include_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=counter the server advertises six tools; order, menu and route do 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_refactoring returns 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
Where they differ: trace-mcp gets its request-flow edges from a plugin per framework and an adapter per ORM, so where a plugin exists it traces middleware and service layers and maps props across languages. jCodeMunch finds route registrations by call shape over the index it already has, so one resolver covers several stacks, and a registration shape it doesn’t know is missed until one is added. trace-mcp’s flow covers more layers today. For decisions, trace-mcp mines agent session logs and stores what it finds; jCodeMunch reads git history at query time and stores nothing.
Where trace-mcp is worth a look: If you want request-flow tracing through middleware and services, and decision memory from your agent sessions, in one MCP server, and your stack is one it has plugins for, trace-mcp does both today. Its default preset keeps the visible tool count down; the full surface is 182 tools.
🤝
Verdict: same idea, different trade-offs
Both build a structured index so the agent reads less. trace-mcp leans on per-framework plugins and stored decision memory; jCodeMunch leans on one call-shape resolver and read-only decision context from git history. Pick trace-mcp for request flow through more layers and session-mined decisions inside its supported frameworks. Pick jCodeMunch for 70+ languages in one install and the doc and data companions. Try both on your own repository.

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.