# Benzi

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.

- MCP server · `type=mcp` · Claude Code, Codex, Cursor, GitHub Copilot, Windsurf (Devin Desktop), Cline, Zed, Gemini CLI · ★ 170
- Author: oooscoos
- License: not stated · policy=link-only · description only; the file stays with the author
- Source: https://github.com/oooscoos/Benzi
- Updated: 2026-10-23
- HTML: https://affpapa.org/en/nevibecode/mcp/benzi

## What it 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`.

## Requirements
- Needs: Python and uv (commands run via uvx)

## Install

### Claude Code (native platform)

**Platform CLI**
```bash
claude mcp add benzi -- uvx benzi-mcp
```
uvx runs the command named after the package; if the README names another one, use uvx --from benzi-mcp <command>

### Codex

**Platform CLI**
```bash
codex mcp add benzi -- uvx benzi-mcp
```
uvx runs the command named after the package; if the README names another one, use uvx --from benzi-mcp <command>

### Cursor

**Config file**
File `.cursor/mcp.json`:
```json
{
    "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>

### GitHub Copilot

**Config file**
File `.vscode/mcp.json`:
```json
{
    "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>

### Gemini CLI

**Platform CLI**
```bash
gemini mcp add benzi uvx benzi-mcp
```
uvx runs the command named after the package; if the README names another one, use uvx --from benzi-mcp <command>

## When to use it
- 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
- Show me every call to `parse_config` in this project
- Where does the negative value in `total` come from?
- Build the inheritance tree for the `BaseHandler` class

## Similar
- [TokenSave](https://affpapa.org/en/nevibecode/mcp/tokensave.md) — MCP server · ★ 679
- [CICADA](https://affpapa.org/en/nevibecode/mcp/cicada.md) — MCP server · ★ 40
- [agent-lsp](https://affpapa.org/en/nevibecode/mcp/agent-lsp.md) — MCP server · ★ 165
- [rust-analyzer-lsp](https://affpapa.org/en/nevibecode/plugins/rust-analyzer-lsp.md) — plugin · ★ 44770
- [csharp-lsp](https://affpapa.org/en/nevibecode/plugins/csharp-lsp.md) — plugin · ★ 44770
- [kotlin-lsp](https://affpapa.org/en/nevibecode/plugins/msapps-mobile-kotlin-lsp.md) — plugin · ★ 9

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
