Benzi — MCP-сервер для Claude Code: карта кода из компилятора
Разбирает репозиторий компилятором на tree-sitter и отдаёт агенту готовую карту символов, вызовов и наследования вместо поиска по тексту.
claude mcp add benzi -- uvx benzi-mcpЧто делает Benzi
Обычный агент читает исходники через grep и glob и надеется, что нужное попадёт в контекст. Benzi сначала парсит каждый файл — разбирает импорты, строит цепочки наследования классов и привязывает каждый идентификатор к его определению. Дальше агент задаёт вопросы уже по этой карте.
Поток вызовов и поток данных сходятся в точке вызова, поэтому плохое значение прослеживается до источника за один запрос к инструменту. Языков десять: Python, JavaScript, TypeScript, Java, C#, C++, C, Go, Rust, Ruby. Глубина разная — Python разобран подробнее остальных, и только для него есть трассировщик времени выполнения. Инкрементальная переиндексация для C, C++, Rust и Ruby работает, но на большом цикле правок медленнее.
Трассировщик сейчас сломан: трассируемые запуски выполняются, но теряют вызовы внутри включений, лямбд и генераторных выражений, а на проектах Python 3.9–3.10 — большинство вызовов методов. Если ваш разбор опирается на трассировку, это повод подождать следующего релиза. Сервер запускается через uvx, так что uv должен быть в PATH.
Какие задачи решает
- найти все места, где вызывается функция, без ручного grep
- проследить, откуда пришло некорректное значение
- построить цепочку наследования класса перед рефакторингом
- получить список ссылок на символ по всему репозиторию
- разобрать незнакомую кодовую базу перед правками
Примеры запросов агенту
- Покажи все вызовы функции
parse_configв проекте - Откуда в
totalпопадает отрицательное значение? - Построй дерево наследования класса
BaseHandler
Как установить Benzi
Командой платформы
claude mcp add benzi -- uvx benzi-mcpuvx запускает команду с именем пакета; если в README она другая — uvx --from benzi-mcp <команда>
Командой платформы
codex mcp add benzi -- uvx benzi-mcpuvx запускает команду с именем пакета; если в README она другая — uvx --from benzi-mcp <команда>
Файл настроек
{
"mcpServers": {
"benzi": {
"command": "uvx",
"args": [
"benzi-mcp"
]
}
}
}uvx запускает команду с именем пакета; если в README она другая — uvx --from benzi-mcp <команда>
Файл настроек
{
"servers": {
"benzi": {
"type": "stdio",
"command": "uvx",
"args": [
"benzi-mcp"
]
}
}
}uvx запускает команду с именем пакета; если в README она другая — uvx --from benzi-mcp <команда>
Командой платформы
gemini mcp add benzi uvx benzi-mcpuvx запускает команду с именем пакета; если в README она другая — uvx --from benzi-mcp <команда>
По шагам, с командами для каждой платформы: Как подключить MCP-сервер: Claude Code, Codex, Cursor, VS Code, Gemini CLI и другие
Вопросы о Benzi
Как установить Benzi в Claude Code?
Одной командой: claude mcp add benzi -- uvx benzi-mcp.
Что делает Benzi?
Парсит файлы проекта компилятором на tree-sitter и отдаёт агенту карту символов, вызовов, ссылок и наследования классов. По ней можно искать вызовы, прослеживать поток данных и разбирать структуру классов.
Какие языки поддерживает Benzi?
Python, JavaScript, TypeScript, Java, C#, C++, C, Go, Rust и Ruby. Глубже всего разобран Python — только у него есть трассировщик времени выполнения, и сейчас он сломан.