Skip to content
MCP Shelf

jCodeMunch

View on GitHub

Indexes your code so an agent can fetch one function instead of reading whole files.

  • Started in our test
  • ★ 2.8K GitHub stars
  • 20.5K downloads a week
  • Last commit 26 Oct 2026

At a glance

Coding agents burn much of their context opening whole files to find one function. jCodeMunch, by J. Gravelle, parses a repository once with tree-sitter (70-odd languages) and stores every function, class and method with its exact location. The agent can then search for a symbol and pull back just its source, an outline of a file, or a bundle of related code sized to a token budget.

On top of plain lookup it answers structural questions: who imports a module, what calls a function, what might break if you change it, and which code looks dead. To keep its own context cost down it starts with six small tools, a menu, an order call and a router, that reach its 90-plus actions on demand. Indexes stay on your machine under ~/.code-index. It is free for personal use, but commercial use needs a paid licence.

Made by
jgravelle (jMunch LLC)
Licence
LicenseRef-jCodeMunch-Dual-Use-1
Latest version
1.108.399 (26 Oct 2026)
PyPI package
jcodemunch-mcp
GitHub stars
2.8K
Downloads
20.5K a week
Last commit
26 Oct 2026
Tools
6
Runs on
Your computer

Our check: We ran this exact config on 27 Oct 2026: it started and answered with 6 tools.

What's in the pod: its tools

We found 6 tools when we started it on 27 Oct 2026. 2 only read. The rest can change things, so keep your app's "ask before each tool call" setting on for them.

Changes things4 tools · Can create, edit, send or delete.

ToolWhat it is for
announce_modelLets the agent say which model it is, so the server picks a matching tool tier.
orderRuns any jCodeMunch action by name, such as search_symbols or get_symbol_source. Read-only unless state changes are allowed.
routeSuggests the best action for a task in plain language, and can run it straight away.
set_tool_tierWidens or narrows the tools shown for the session: core, standard or full.

Only reads2 tools · Looks things up and changes nothing.

ToolWhat it is for
jcodemunch_guideReturns the current instructions an agent should follow to use jCodeMunch well.
menuLists the actions behind the front door, or those matching a search, with their arguments.

Tool groups

Front door (default)
The six tools above. The full catalogue is reached through menu, order and route, which keeps the schema cost small.
Retrieval
Index a folder, search symbols, read a symbol's source, file outlines and token-budgeted context bundles.
Structure
Importers, call hierarchies, class hierarchies, blast radius, dead code, hotspots and changed symbols.
Safety checks
check_edit_safe, check_delete_safe, PR risk profiles and refactoring plans.

Grouped and described by us. The README on GitHub lists the inputs each tool takes.

How clearly it describes its tools to your assistant

Tools with a description
6 of 6
Say if they change things
6 of 6
Context it takes, at least
~700 tokens

Every tool says whether it only reads or can change things, so a client can ask before the risky ones.

From the tool list it sent us. The token figure counts names, descriptions and input names; the full schemas your client loads add more.

Set it up

Pick your app for the exact snippet and where it goes.

Where it goes: claude_desktop_config.json (Settings → Developer → Edit Config)

Claude Desktop
{
  "mcpServers": {
    "jcodemunch": {
      "command": "uvx",
      "args": [
        "jcodemunch-mcp"
      ]
    }
  }
}

Running "jcodemunch-mcp init" after "uv tool install jcodemunch-mcp" detects your clients and writes their configs, and can add hooks that re-index after edits. Agents use it more reliably when your instructions file tells them to.

New to this? See the setup guides for Claude Code, Cursor, Claude Desktop and ChatGPT.

Settings

Names are exactly as the project spells them. Required ones are marked.

SettingWhat it does
jcodemunch-mcp initConfigA one-time command (after uv tool install jcodemunch-mcp) that writes client configs and can add hooks that keep the index fresh.
~/.code-index/config.jsoncConfigGlobal settings: tool tiers, file size limits, languages and the savings counter.
.jcodemunch.jsoncConfigPer-repository overrides placed at the repository root.
share_savingsConfigSet to false to turn off the anonymous token-savings counter, its only default network traffic."share_savings": false

What it can touch

It can read

  • Source code in the folders or repositories you index
  • Its own index under ~/.code-index

It can change

  • The index and session state, when allowed
  • Files, only through edit actions you allow explicitly

Safer setup: order is read-only by default; actions that change state or files need allow_state_change. Set share_savings to false if you want no network traffic at all.

Before you start

  • uv, for uvx
  • A commercial licence if you use it for paid work

If it does not work

The agent keeps reading whole files anyway
Add a line to CLAUDE.md or AGENTS.md telling it to call jcodemunch_guide and follow it, or ask for jcodemunch by name.
Results miss recent edits
Re-index, or let init install the hooks and watch mode that re-index after edits.
pip install is refused on Ubuntu or Debian
Use uv tool install jcodemunch-mcp or uvx, which avoid the system Python.

Peas in a pod: similar servers

How jCodeMunch lines up against other developer tools servers on the shelf.

ServerToolsRuns onLicenceStars
jCodeMunch6Your computerLicenseRef-jCodeMunch-Dual-Use-12.8K
iOS Simulator MCP17Your computerMIT2.2K
Desktop Commander25Your computerMIT10.1K
Serena3Your computer–30.7K
Context72Your computer or hostedMIT63.7K

Questions

Is it free?

Free for personal, non-commercial use. Commercial use needs a one-time paid licence from jMunch LLC.

Does my code leave my machine?

Indexes stay local. By default it only sends an anonymous counter of tokens saved, which you can turn off.

Which languages does it parse?

Around 70 through tree-sitter, including Python, TypeScript, Go, Rust, Java, C and C++, C#, PHP, Ruby, Swift and Kotlin.

How is it different from grep or RAG?

It looks things up by symbol with exact byte ranges, so the model gets the function itself rather than matching lines or fuzzy chunks.

Full docs on GitHubjgravelle/jcodemunch-mcp

Something wrong on this page? Tell us.

More in Developer tools