CodeGraph: MCP-сервер с графом кода для Claude Code, обзор | AiManual
AiManual Logo Ai / Manual.
23 Май 2026 Инструмент

CodeGraph: граф кода для Claude Code вместо grep — обзор архитектуры, бенчмарков и сравнение с SocratiCode

Разбор open-source MCP-сервера CodeGraph: tree-sitter + SQLite, бенчмарки 92% точности, сравнение с SocratiCode и архитектурные особенности.

Grep умер. Да здравствует граф

Пытаться найти в кодовой базе на 500 000 строк нужную функцию через grep — это как искать черную кошку в темной комнате, особенно если кошки там нет. Вы забиваете консоль regex-ами, пролистываете сотни совпадений, а потом выясняете, что искали не то.

Теперь представьте, что так же тупит ваш AI-агент. Только он ещё и сжирает тысячи токенов на каждый пустой запрос. Знакомо? В прошлых статьях мы уже разбирали SocratiCode — MCP-сервер с семантическим поиском. Сегодня на сцену выходит CodeGraph — инструмент, который не просто ищет, а строит настоящий граф зависимостей вашего кода.

Суть CodeGraph: MCP-сервер, который индексирует код через tree-sitter (разбирает AST), записывает символы (функции, классы, переменные) и их связи в SQLite, а затем по запросу из Claude Code мгновенно отвечает на вопросы вроде «где определена эта функция?» или «кто вызывает этот метод?». Никакой векторной базы, никаких внешних моделей — только чистый граф.

Архитектура: tree-sitter vs семантические чернила

Ключевое отличие CodeGraph от SocratiCode — в подходе к индексации. SocratiCode, как мы помним, режет код на AST-чанки, векторизует их локальной моделью (например, bge-m3) и отправляет в Qdrant. Это даёт семантический поиск — вы можете спросить «функция, которая парсит конфиг», и получите нужный чанк, даже если точное имя не помните.

CodeGraph идёт другим путём. Он использует tree-sitter для построения синтаксического дерева каждого файла, извлекает все значимые символы: определения классов, методов, функций, переменных, импорты. Затем для каждого символа вычисляет его FQN (fully qualified name) и связи: вызовы, наследование, вхождения. Всё это складывается в обычную SQLite-базу. Никаких нейросетей, никаких эмбеддингов — только жёсткая логика парсера.

На выходе — не векторное пространство, а граф. Вы можете спросить: «покажи всех, кто вызывает send_email()» — и получите точный список мест с указанием строки, файла и контекста. Никаких ложных срабатываний, никакого шума.

ХарактеристикаSocratiCodeCodeGraph
Метод индексацииAST-чанкинг + эмбеддинги (Ollama)Tree-sitter AST + граф символов в SQLite
ХранилищеQdrant (векторная БД)SQLite (реляционная БД)
ПоискСемантический + BM25 гибридТочный по FQN, ссылкам, наследованию
ЗависимостиOllama, QdrantТолько tree-sitter, sqlite3
Точность на тесте навигации~71%~92%

Важно: 92% точности CodeGraph — на задачах навигации (где определён символ, кто вызывает). Для семантических запросов («найти похожую функцию») SocratiCode всё ещё лучше. Но для быстрой ориентации в чужом коде графовый подход убивает grep наголову.

Бенчмарки: 92% vs 71% — что за цифры?

Автор CodeGraph провёл тестирование на реальных проектах (Django, React, Rust-библиотеки). Задача: агент должен ответить на вопросы о коде: «из какого класса наследуется AdminController?», «найди строку, где вызывается validate с аргументом strict=True». CodeGraph дал правильный ответ в 92% случаев. SocratiCode — в 71%. Причина проста: эмбеддинги иногда смазывают смысл, особенно когда названия функций короткие («do», «run»). Tree-sitter же видит AST — ошибки быть не может.

Но есть нюанс: SocratiCode не предназначен для такого навигационного поиска. Его сила — семантический поиск по смыслу. Если попросить «найти функцию, которая обрабатывает файлы с расширением .csv», SocratiCode справится лучше, потому что CodeGraph ищет только по точным именам. То есть эти инструменты не конкуренты, а комплементарны.

Как выглядит работа с CodeGraph в Claude Code

Допустим, вы пишете в Claude Code задачу на рефакторинг легаси. Без MCP-сервера Claude придётся либо читать весь проект (дорого), либо полагаться на контекст (ненадёжно). С CodeGraph вы просто подключаете MCP-сервер:

{
  "mcpServers": {
    "codegraph": {
      "command": "npx",
      "args": ["-y", "@codegraph/cli", "--db-path", "./codegraph.db"]
    }
  }
}

Claude Code автоматически использует инструменты CodeGraph: find_definition, find_callers, get_symbol_info. Вот пример диалога:

Вы: «Покажи, откуда вызывается функция processOrder в модуле orders»

Claude (через CodeGraph):
Найдено 14 вызовов.
orders/api.py:45processOrder(request.data)
orders/tasks.py:102processOrder(order_id, apply_discount=True)
tests/test_orders.py:33processOrder(mock_order)

Никакого лишнего шума, никаких лишних токенов в контексте. Claude Code получает только то, что нужно. Выгода — до 70% экономии токенов на типичных задачах навигации, как мы разбирали в статье CodeGraphContext.

Неочевидный совет: не выбирайте, комбинируйте

SocratiCode и CodeGraph — не конкуренты, а два слоя одного бутерброда. Если вы работаете с большим легаси-проектом, где нужно часто искать по смыслу (например, «функции, связанные с платежами»), SocratiCode незаменим. Если вам нужно быстро понять архитектуру — кто кого вызывает, откуда импортируется класс — CodeGraph выигрывает за счёт точности и отсутствия внешних зависимостей.

Мой прогноз: в 2027 году ни один уважающий себя AI-агент не будет работать без обоих MCP-серверов. А пока — ставьте CodeGraph для навигации, SocratiCode для семантики. И вы забудете про grep навсегда.

Подписаться на канал