jCodeMunch MCP
Retrieves code by symbol (functions, classes) using tree-sitter parsing, so agents read only what they need from a repo instead of whole files.
Test results
Last passed 2026-10-22Server package tested: jcodemunch-mcp 1.108.394 (uv, Python 3.12.15; resolved 2026-10-22)
Direct and key dependencies as resolved: anyio 4.15.1 · httpx 0.28.1 · mcp 1.30.0 · pathspec 1.1.1 · pydantic 2.14.1 · pydantic-settings 2.16.1 · pydantic_core 2.50.1 · PyYAML 6.0.3 · sse-starlette 3.5.0 · starlette 1.9.0 · tree-sitter 0.25.2 · tree-sitter-fsharp 0.3.12 · tree-sitter-language-pack 0.13.0 · typing_extensions 4.16.0 · uvicorn 0.54.0
All 37 resolved dependencies
annotated-types==0.8.0
anyio==4.15.1
attrs==26.1.0
certifi==2026.10.19
cffi==2.1.1
click==8.5.0
cryptography==50.0.2
h11==0.16.0
httpcore==1.0.9
httpx==0.28.1
httpx-sse==0.4.3
idna==3.20
jsonschema==4.26.0
jsonschema-specifications==2025.9.1
mcp==1.30.0
pathspec==1.1.1
pycparser==3.12
pydantic==2.14.1
pydantic-settings==2.16.1
pydantic_core==2.50.1
PyJWT==2.15.1
python-dotenv==1.2.4
python-multipart==0.0.32
PyYAML==6.0.3
referencing==0.37.0
rpds-py==2026.9.1
sse-starlette==3.5.0
starlette==1.9.0
tree-sitter==0.25.2
tree-sitter-c-sharp==0.23.5
tree-sitter-embedded-template==0.25.0
tree-sitter-fsharp==0.3.12
tree-sitter-language-pack==0.13.0
tree-sitter-yaml==0.7.2
typing-inspection==0.4.4
typing_extensions==4.16.0
uvicorn==0.54.0Captured with: uvx --from jcodemunch-mcp python (importlib.metadata in the same uvx env; equivalent to uv pip freeze).
Full result per app: Does it work with Claude Code? · Does it work with Cursor? · Does it work with Claude Desktop? · Does it work with ChatGPT (Codex)?
Real test
PassedOne run from our records. When two runs share a date, we show a failure if there is one.
- Client
- Claude Desktop · Claude Desktop 2.37337.1 (Linux beta, Electron 44.7.0)
- Date
- Oct 22, 2026
- The task we gave
Using only the jcodemunch MCP tools, look at the code repository at /workspace/timmy/harness/sandbox/coderepo. Find which file defines the function compute_total and which other file calls it. Reply with both file names.
- What it promised
- details not recorded for this run
- What happened
4 tool calls recorded. The names were not stored on this run.
Tool result
{"content": [{"type": "text", "text": "{\"version\":\"1.108.394\",\"content\":\"## Code Exploration Policy\\n\\njCodeMunch-MCP indexes this repository's symbols and how they relate. Use it where it is the cheaper route, and the built-in tools (Grep, Glob, Read) where they are.\\n- **Relationships are what the index is for:** who imports a symbol, where a name is used, what a change breaks, who calls a function, what is unreachable.\\n- **A name you already know, or a file you are about to work in:** the built-in search and `Read` are often as cheap. Take whichever is fewer steps.\\n- **On a small repository** the built-in tools are usually the cheaper route for finding and reading code.\\n- The harness requires a `Read` before `Edit`/`Write`.\\n\\nThis server runs the **front door** surface: three tools reach every jCodeMunch capability, so the tool list stays small and the catalogue is fetched only when you need it.\\n\\n**Before the first jCodeMunch call in a session** (skip it when the task needs none):\\n- `order { \\\"action\\\": \\\"resolve_repo\\\", \\\"args\\\": { \\\"path\\\": \\\".\\\" } }` \\u2014 confirm the project is indexed. If it is not: `order { \\\"action\\\": \\\"index_folder\\\", \\\"args\\\": { \\\"path\\\": \\\".\\\" } }`\\n\\n**Then, for a task the index suits:**\\n- Know what you want \\u2192 `order { \\\"action\\\": \\\"<name>\\\", \\\"args\\\": { ... } }`\\n- Know the goal, not the tool \\u2192 `route { \\\"query\\\": \\\"your task in a sentence\\\"Agent reply
The function compute_total is defined in billing.py, and it is called from utils.py.- Verdict
- Passed
Install
claude mcp add jcodemunch -- uvx jcodemunch-mcpRun in your terminal. This exact command is what our harness runs in Claude Code; see the results above.
{
"mcpServers": {
"jcodemunch": {
"command": "uvx",
"args": [
"jcodemunch-mcp"
]
}
}
}Save as .cursor/mcp.json. This exact config is what our harness runs in Cursor; see the results above.
{
"mcpServers": {
"jcodemunch": {
"command": "uvx",
"args": [
"jcodemunch-mcp"
]
}
}
}Add to claude_desktop_config.json and restart Claude Desktop. Tested on the Linux beta; see the results above.
[mcp_servers.jcodemunch]
command = "uvx"
args = ["jcodemunch-mcp"]Add to ~/.codex/config.toml (shared by the ChatGPT (Codex) CLI and the ChatGPT desktop app; Codex runs inside the ChatGPT desktop app). Tested with the ChatGPT (Codex) CLI bundled in the ChatGPT desktop app; see the results above.
Not connecting? Troubleshooting: Claude Code · Cursor · Claude Desktop · ChatGPT (Codex)
Test history
| Date | Check | Result | Versions tested |
|---|---|---|---|
| 2026-10-22 | Protocol (direct stdio) | Protocol: starts, 6 tools listed | jcodemunch-mcp 1.108.392 · server reported v1.108.392 |
| 2026-10-22 | Claude Code | Passed install, connect, tools, agent task | Claude Code 2.1.296 · jcodemunch-mcp 1.108.392 |
| 2026-10-22 | Cursor | Passed install, connect, tools, agent task | Cursor CLI 2026.10.19-6bbf2c4 · jcodemunch-mcp 1.108.392 |
| 2026-10-22 | Claude Desktop | Passed install, connect, tools, agent task | Claude Desktop 2.37337.1 (Linux beta, Electron 44.7.0) · jcodemunch-mcp 1.108.394 |
| 2026-10-22 | ChatGPT (Codex) | Passed install, connect, tools, agent task | Codex CLI 0.162.0-alpha.17.2 · jcodemunch-mcp 1.108.392 |
Tools seen by our harness (6)
set_tool_tierannounce_modeljcodemunch_guideordermenuroute