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.
| Tool | What it is for |
|---|---|
announce_model | Lets the agent say which model it is, so the server picks a matching tool tier. |
order | Runs any jCodeMunch action by name, such as search_symbols or get_symbol_source. Read-only unless state changes are allowed. |
route | Suggests the best action for a task in plain language, and can run it straight away. |
set_tool_tier | Widens or narrows the tools shown for the session: core, standard or full. |
Only reads2 tools · Looks things up and changes nothing.
| Tool | What it is for |
|---|---|
jcodemunch_guide | Returns the current instructions an agent should follow to use jCodeMunch well. |
menu | Lists 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)
{
"mcpServers": {
"jcodemunch": {
"command": "uvx",
"args": [
"jcodemunch-mcp"
]
}
}
}Where it goes: Your terminal, in the project folder
claude mcp add-json jcodemunch '{"command":"uvx","args":["jcodemunch-mcp"]}'Where it goes: ~/.cursor/mcp.json, or .cursor/mcp.json in a project
{
"mcpServers": {
"jcodemunch": {
"command": "uvx",
"args": [
"jcodemunch-mcp"
]
}
}
}Where it goes: .vscode/mcp.json in your project
{
"servers": {
"jcodemunch": {
"type": "stdio",
"command": "uvx",
"args": [
"jcodemunch-mcp"
]
}
}
}Where it goes: ~/.codeium/windsurf/mcp_config.json
{
"mcpServers": {
"jcodemunch": {
"command": "uvx",
"args": [
"jcodemunch-mcp"
]
}
}
}Where it goes: Not supported
ChatGPT only connects to remote servers by URL. This one runs on your computer, so use Claude, Cursor or VS Code.
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.
| Setting | What it does |
|---|---|
jcodemunch-mcp initConfig | A 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.jsoncConfig | Global settings: tool tiers, file size limits, languages and the savings counter. |
.jcodemunch.jsoncConfig | Per-repository overrides placed at the repository root. |
share_savingsConfig | Set 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.
| Server | Tools | Runs on | Licence | Stars |
|---|---|---|---|---|
| jCodeMunch | 6 | Your computer | LicenseRef-jCodeMunch-Dual-Use-1 | 2.8K |
| iOS Simulator MCP | 17 | Your computer | MIT | 2.2K |
| Desktop Commander | 25 | Your computer | MIT | 10.1K |
| Serena | 3 | Your computer | – | 30.7K |
| Context7 | 2 | Your computer or hosted | MIT | 63.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.
Something wrong on this page? Tell us.
