Benzi — Claude Code MCP server: a compiler-built code map
Parses your repo with a tree-sitter compiler and hands the agent a map of symbols, calls and class ancestry instead of raw text search.
claude mcp add benzi -- uvx benzi-mcpWhat Benzi does
Most agents pull source files into context with grep and glob, then hope the model spots what matters. Benzi parses every file first. Imports get resolved, class ancestry is built, each identifier is tied to its definition, and only then does the agent ask questions.
Call flow and data flow meet at the call site, so a bad value can be traced back to where it came from in a single tool call. Ten languages are covered: Python, JavaScript, TypeScript, Java, C#, C++, C, Go, Rust and Ruby. Depth varies. Python is the most complete and the only one with a runtime tracer. Incremental reindexing works for C, C++, Rust and Ruby, just slower on a heavy edit loop.
The runtime tracer is broken right now: traced runs still execute, but calls inside comprehensions, lambdas and generator expressions are missed, and on Python 3.9–3.10 projects most method calls go missing too. If your workflow leans on tracing, wait for the next release. The server starts through uvx, so uv has to be on your PATH.
What it helps with
- find every call site of a function without grepping by hand
- trace an incorrect value back to its origin
- map a class inheritance chain before refactoring
- list all references to a symbol across the repo
- get oriented in an unfamiliar codebase
Example prompts for the agent
- Show me every call to
parse_configin this project - Where does the negative value in
totalcome from? - Build the inheritance tree for the
BaseHandlerclass
How to install Benzi
Platform CLI
claude mcp add benzi -- uvx benzi-mcpuvx runs the command named after the package; if the README names another one, use uvx --from benzi-mcp <command>
Platform CLI
codex mcp add benzi -- uvx benzi-mcpuvx runs the command named after the package; if the README names another one, use uvx --from benzi-mcp <command>
Config file
{
"mcpServers": {
"benzi": {
"command": "uvx",
"args": [
"benzi-mcp"
]
}
}
}uvx runs the command named after the package; if the README names another one, use uvx --from benzi-mcp <command>
Config file
{
"servers": {
"benzi": {
"type": "stdio",
"command": "uvx",
"args": [
"benzi-mcp"
]
}
}
}uvx runs the command named after the package; if the README names another one, use uvx --from benzi-mcp <command>
Platform CLI
gemini mcp add benzi uvx benzi-mcpuvx runs the command named after the package; if the README names another one, use uvx --from benzi-mcp <command>
Step by step, with commands for each platform: How to add an MCP server to Claude Code, Codex, Cursor, VS Code, Gemini CLI and more
Questions about Benzi
How do I install Benzi in Claude Code?
Run claude mcp add benzi -- uvx benzi-mcp.
What does Benzi do?
It parses project files with a tree-sitter compiler and gives the agent a map of symbols, calls, references and class inheritance. That map answers questions about call sites, data flow and class structure.
Which languages does Benzi support?
Python, JavaScript, TypeScript, Java, C#, C++, C, Go, Rust and Ruby. Python is the deepest, and the only language with a runtime tracer — which is currently broken.