---
title: "jCodeMunch MCP: Read Code by Symbol and Save Tokens"
url: "https://mcpshelf.co/servers/jcodemunch"
description: "jCodeMunch indexes a repository with tree-sitter so an agent can fetch one function instead of a whole file. Setup, licence terms and what it sends out."
updated: "2026-10-27"
site: "MCP Shelf"
---

# jCodeMunch

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

## 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) |
| GitHub | https://github.com/jgravelle/jcodemunch-mcp |
| Licence | LicenseRef-jCodeMunch-Dual-Use-1 |
| PyPI package | [jcodemunch-mcp](https://pypi.org/project/jcodemunch-mcp/) 1.108.399 (26 Oct 2026) |
| GitHub stars | 2.8K |
| Downloads | 20.5K a week |
| Last commit | 26 Oct 2026 |
| Tools | 6 |
| Runs on | Your computer |
| Install check | Started in our test |
| Category | [Developer tools](https://mcpshelf.co/categories/developer-tools) |

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

## Tools

We listed 6 tools on 27 Oct 2026. 2 only read; the rest can change things or run commands.

| Tool | Kind | What it is for |
| --- | --- | --- |
| `set_tool_tier` | changes | Widens or narrows the tools shown for the session: core, standard or full. |
| `announce_model` | changes | Lets the agent say which model it is, so the server picks a matching tool tier. |
| `jcodemunch_guide` | reads | Returns the current instructions an agent should follow to use jCodeMunch well. |
| `order` | changes | Runs any jCodeMunch action by name, such as search_symbols or get_symbol_source. Read-only unless state changes are allowed. |
| `menu` | reads | Lists the actions behind the front door, or those matching a search, with their arguments. |
| `route` | changes | Suggests the best action for a task in plain language, and can run it straight away. |

### How clearly it describes its tools

6 of 6 tools have a description and 6 of 6 say whether they change things. The tool list takes at least ~700 tokens of context. Every tool says whether it only reads or can change things, so a client can ask before the risky ones.

### Tool groups

| Group | Covers |
| --- | --- |
| `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. |

## Set it up

### Claude Desktop

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

```json
{
  "mcpServers": {
    "jcodemunch": {
      "command": "uvx",
      "args": [
        "jcodemunch-mcp"
      ]
    }
  }
}
```

### Claude Code

Where: Your terminal, in the project folder

```bash
claude mcp add-json jcodemunch '{"command":"uvx","args":["jcodemunch-mcp"]}'
```

### Cursor

Where: ~/.cursor/mcp.json, or .cursor/mcp.json in a project

```json
{
  "mcpServers": {
    "jcodemunch": {
      "command": "uvx",
      "args": [
        "jcodemunch-mcp"
      ]
    }
  }
}
```

### VS Code

Where: .vscode/mcp.json in your project

```json
{
  "servers": {
    "jcodemunch": {
      "type": "stdio",
      "command": "uvx",
      "args": [
        "jcodemunch-mcp"
      ]
    }
  }
}
```

### Windsurf

Where: ~/.codeium/windsurf/mcp_config.json

```json
{
  "mcpServers": {
    "jcodemunch": {
      "command": "uvx",
      "args": [
        "jcodemunch-mcp"
      ]
    }
  }
}
```

### ChatGPT

Where: 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.

## Settings

| Setting | Kind | Required | What it does |
| --- | --- | --- | --- |
| `jcodemunch-mcp init` | config | no | 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.jsonc` | config | no | Global settings: tool tiers, file size limits, languages and the savings counter. |
| `.jcodemunch.jsonc` | config | no | Per-repository overrides placed at the repository root. |
| `share_savings` | config | no | Set to false to turn off the anonymous token-savings counter, its only default network traffic. Example: `"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

## Good for

- Cutting the tokens a coding agent spends reading large repositories
- Finding where something is defined and everything that uses it
- Checking the blast radius of a change before making it

## 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.

## Similar servers

| Server | Tools | Runs on | Stars |
| --- | --- | --- | --- |
| [iOS Simulator MCP](https://mcpshelf.co/servers/ios-simulator) | 17 | Your computer | 2.2K |
| [Grounded Docs (docs-mcp-server)](https://mcpshelf.co/servers/grounded-docs) | 12 | Your computer | 1.8K |
| [MCP Server for WinDbg](https://mcpshelf.co/servers/windbg) | 12 | Your computer | 1.6K |
| [MCP Language Server](https://mcpshelf.co/servers/mcp-language-server) | 6 | Your computer | 1.6K |

## 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 GitHub: https://github.com/jgravelle/jcodemunch-mcp

---

From [MCP Shelf](https://mcpshelf.co/): A short shelf of MCP servers that are worth installing. Index for agents: https://mcpshelf.co/llms.txt

