LabscoMCP early access ↗
jgravelleMCP SERVER · OFFICIAL PROJECT

jCodeMunch Code Retrieval

Read one function instead of a 700-line file — symbol-level code retrieval, blast-radius analysis and edit-safety checks over an indexed repository.

by jgravelle ↗Code Intelligence & Repository Indexing✓ Official

LABSCO SUMMARY

Most edits touch one function; most reads fetch the whole file.

That gap is what this closes — a symbol instead of a file, an outline instead of contents. It helps least where an edit genuinely needs the whole file, and most on large or unfamiliar repositories, which is also where the blast-radius and edit-safety answers have no equivalent in a plain read-and-grep loop.

What it is

A code-intelligence layer over a locally indexed repository. The README counts 90-plus tools; a fresh connection lists six, among them a three-tool front door — menu, order, route — that reaches the rest on demand. Instead of reading whole files, an agent asks for the symbol, the outline, or the structural answer it needs. Indexes live under ~/.code-index/, and 70-plus languages are parsed through tree-sitter, monorepos included.

What you get

  • One symbol returned byte-precise instead of the file around it, a file's names and signatures instead of its contents, and the whole file when the edit genuinely needs it (get_symbol_source, get_file_outline, get_file_content, search_symbols)
  • A whole task's context assembled in one call — intent classified, anchor symbols extracted, the right tool sequence run under one token budget — and the turn routed before the first read (assemble_task_context, plan_turn, get_ranked_context)
  • Structural questions grep cannot answer: who imports this, what breaks if it changes, the call hierarchy, what is dead, what changed, where the churn is, and AST-level anti-pattern sweeps (find_importers, get_blast_radius, get_call_hierarchy, find_dead_code, get_changed_symbols, get_hotspots, search_ast)
  • Preflight checks before a risky change, with edit-ready {old_text, new_text} blocks from the refactoring planner (check_edit_safe, check_delete_safe, get_pr_risk_profile, plan_refactoring, check_references)
  • A stop_rule.terminal flag on the two safety checks: true means no further call changes the verdict, so re-running the reference checks to be sure is wasted work — it means final, not safe. False names the specific thing that would change the answer
  • Calibrated confidence scores, freshness flags, coverage contracts on absence claims, compiler-verified references through SCIP import, and secret redaction before anything reaches the model
  • Session accounting: tokens served and savings for the session (get_session_stats)
  • Two ways to keep 90-plus tools out of the context prefix — a server-side counter that collapses the surface to a three-tool front door, or Anthropic's host-side tool search with defer_loading set once for the whole server
  • Watch modes, agent hooks and a VS Code extension to keep the index fresh, plus prebuilt starter packs for popular frameworks

Requirements

uv tool install jcodemunch-mcp then jcodemunch-mcp init, which detects Claude Code, Claude Desktop, Cursor, Windsurf and Continue, writes their config entries, installs the prompt policy so the agent actually uses it, and optionally indexes the project. uvx jcodemunch-mcp runs it with nothing left on disk — but the optional enforcement hooks resolve the executable by name from a minimal-PATH subshell, so those need a real install. It is local-first: indexes stay under ~/.code-index/, and the only default network behaviour is an anonymous savings counter carrying a random id and aggregate token counts, turned off with share_savings: false. The tool-schema deferral through Anthropic's connector needs the server over sse or streamable-http, not the default stdio setup.

Setup effort

One command — uv tool install jcodemunch-mcp && jcodemunch-mcp init