codebase-memory-mcp — граф знаний кода на чистом C с индексацией за миллисекунды

· 3 мин чтения
knowledge-graph mcp ai-agents code-intelligence tools
📂 Исходный код на GitHub

Высокопроизводительный MCP-сервер для анализа кода на чистом C. Индексирует кодовую базу в персистентный граф знаний через tree-sitter AST (158 языков) + Hybrid LSP type resolution. Поддерживает 11 AI-агентов, Cypher-запросы, dead code detection, impact-анализ. 99% экономии токенов.

codebase-memory-mcp — граф знаний кода на чистом C с индексацией за миллисекунды

codebase-memory-mcp — самый быстрый MCP-сервер для анализа кода. Полностью индексирует репозиторий в граф знаний за миллисекунды, ядро Linux (28M строк, 75K файлов) — за 3 минуты. Написан на чистом C, поставляется одним статическим бинарником для macOS, Linux и Windows — без Docker, рантаймов и API-ключей.

Зачем это нужно

AI-агенты при работе с кодом читают файлы по одному. Пять структурных запросов через file-by-file grep требуют ~412 000 токенов. Тот же результат через граф знаний — ~3400 токенов. Снижение на 99,2%.

Один запрос к графу заменяет десятки циклов grep/read: агент сразу видит, кто вызывает функцию, какие маршруты использует и что сломается при изменении.

Как работает

Инструмент — структурный бэкенд. Он строит и запрашивает граф знаний, но не содержит LLM. Роль переводчика выполняет MCP-клиент — Claude Code, Codex, Gemini CLI или любой другой агент:

Вы: "что вызывает ProcessOrder?"

Агент вызывает: trace_path(function_name="ProcessOrder", direction="inbound")

codebase-memory-mcp: выполняет запрос к графу, возвращает структурированный результат

Агент: описывает цепочку вызовов обычным языком

Установка

Одна строка для macOS и Linux:

curl -fsSL https://raw.githubusercontent.com/DeusData/codebase-memory-mcp/main/install.sh | bash

Команда install автоматически находит все установленные AI-агенты и настраивает MCP-конфигурацию, файлы инструкций и хуки для каждого. После перезапуска агента — сказать «Index this project».

Производительность

Бенчмарки на Apple M3 Pro:

Операция Время Примечание
Ядро Linux (full) 3 мин 28M LOC, 75K файлов → 4.81M узлов, 7.72M рёбер
Ядро Linux (fast) 1 мин 12 сек 1.88M узлов
Django ~6 сек 49K узлов, 196K рёбер
Cypher-запрос <1 мс Обход связей
Поиск по имени (regex) <10 мс SQL LIKE префильтрация
Dead code detection ~150 мс Полное сканирование графа
Трассировка вызова (depth=5) <10 мс BFS-обход

Индексация работает в оперативной памяти (LZ4-сжатие, in-memory SQLite, запись в конце). Память освобождается после завершения.

Гибридный LSP

Tree-sitter даёт синтаксическое AST — это хорошо для структуры и вызовов, но не для типов. user.profile.display_name() — tree-sitter не знает, что это Profile.display_name из модуля тремя файлами выше.

Hybrid LSP — это слой семантического разрешения типов на чистом C, встроенный в бинарник. Без отдельного процесса language server, без настройки проекта, без API-ключей. Результат — граф, где рёбра вызовов соответствуют тому, что показал бы IDE «Go to Definition».

Полная поддержка Hybrid LSP для 9 языков:

Язык Что разрешает
Python импорты, dataclass, generics, SQLAlchemy/Pydantic, narrowing
TypeScript / JS / TSX generics, JSX dispatch, JSDoc inference, module re-exports
PHP пространства имён, traits, late static binding, PHPDoc
C# records, LINQ, async Task, global usings
Go generics, embedded structs, interface satisfaction
C / C++ макросы, typedef chains, templates, namespaces, auto
Java иерархии классов, overload matching, lambdas, static imports
Kotlin extension functions, scope functions, data classes
Rust impl blocks, trait methods, UFCS, derive-macro synthesis

Остальные 149 языков получают базовый tree-sitter анализ (определения, вызовы, импорты).

14 MCP-инструментов

Индексирование

  • index_repository — индексация репозитория в граф
  • list_projects — список проиндексированных проектов
  • delete_project — удаление проекта и данных графа
  • index_status — статус индексации

Запросы

  • search_graph — структурный поиск по меткам, именам, файлам
  • trace_path — BFS-обход: кто вызывает функцию и что она вызывает
  • detect_changes — маппинг git-diff на затронутые символы с классификацией риска
  • query_graph — Cypher-запросы (read-only openCypher)
  • get_graph_schema — схема графа: узлы, рёбра, свойства
  • get_code_snippet — чтение исходного кода функции по qualified name
  • get_architecture — обзор архитектуры: языки, пакеты, маршруты, hotspots, кластеры
  • search_code — grep-поиск по проиндексированным файлам
  • manage_adr — CRUD для Architecture Decision Records
  • ingest_traces — загрузка runtime-трейсов для валидации HTTP-связей

Поиск и анализ

Инструмент поддерживает четыре уровня поиска:

  • Семантический (semantic_query) — векторный поиск с эмбеддингами Nomic nomic-embed-code, встроенными в бинарник. Без API-ключей, Ollama и Docker. 11-сигнальный рейтинг (TF-IDF, AST-профили, data flow, MinHash, graph diffusion)
  • BM25 — полнотекстовый поиск через SQLite FTS5 с токенизатором, понимающим camelCase и snake_case
  • Структурный — regex по именам, фильтры по меткам, степеням, файлам
  • По коду — graph-augmented grep

Связывание микросервисов

Граф обнаруживает межсервисные связи:

  • HTTP-маршруты ↔ места вызовов с оценкой уверенности
  • gRPC, GraphQL, tRPC — детекция сервисов с извлечением protobuf-маршрутов
  • Каналы EMITS / LISTENS_ON для Socket.IO, EventEmitter и pub/sub (8 языков)
  • CROSS_* рёбра между репозиториями в одном хранилище

Командный артефарт графа

Файл .codebase-memory/graph.db.zst — сжатый снимок графа, живущий рядом с исходным кодом. После индексации файл обновляется; когда коллега клонирует репозиторий, артефакт распаковывается и добавочный индекс заполняет локальный diff — без полной переиндексации.

  • Формат: SQLite, индексы удалены, VACUUM INTO, сжатие zstd 1.5.7 (8–13:1)
  • Два уровня качества: Best (zstd -9) и Fast (zstd -3)
  • .gitattributes merge=ours — без конфликтов при слиянии

Поддержка 11 AI-агентов

Команда install настраивает все обнаруженные агенты автоматически:

Агент MCP-конфиг Инструкции Хуки
Claude Code .claude/.mcp.json 4 навыка PreToolUse (Grep/Glob augment)
Codex CLI .codex/config.toml .codex/AGENTS.md SessionStart
Gemini CLI .gemini/settings.json .gemini/GEMINI.md BeforeTool + SessionStart
Zed settings.json
OpenCode opencode.json AGENTS.md
Antigravity .gemini/config/mcp_config.json antigravity-cli/AGENTS.md SessionStart
Aider CONVENTIONS.md
KiloCode mcp_settings.json ~/.kilocode/rules/
VS Code Code/User/mcp.json

Хуки структурно неблокирующие (всегда возвращают exit code 0). Для Claude Code хук перехватывает Grep/Glob и при совпадении с проиндексированными символами добавляет их как контекст.

CLI-режим

Любой MCP-инструмент можно вызвать из командной строки:

codebase-memory-mcp cli index_repository '{"repo_path": "/path/to/repo"}'
codebase-memory-mcp cli search_graph '{"name_pattern": ".*Handler.*", "label": "Function"}'
codebase-memory-mcp cli trace_path '{"function_name": "Search", "direction": "both"}'
codebase-memory-mcp cli query_graph '{"query": "MATCH (f:Function) RETURN f.name LIMIT 5"}'
codebase-memory-mcp cli list_projects

Графовая модель данных

Узлы: Project, Package, Folder, File, Module, Class, Function, Method, Interface, Enum, Type, Route, Resource

Типы рёбер (основные): CALLS, IMPORTS, DEFINES, IMPLEMENTS, INHERITS, HTTP_CALLS, ASYNC_CALLS, EMITS, LISTENS_ON, DATA_FLOWS, SIMILAR_TO, SEMANTICALLY_RELATED

Infra-as-code тоже индексируется: Dockerfile, манифесты Kubernetes, Kustomize overlay — как узлы графа с перекрёстными ссылками.

Безопасность

  • Всё работает локально, телеметрии нет — код, запросы и данные не покидают машину
  • VirusTotal — все бинарники проверяются 70+ антивирусами (0 детектов обязательно)
  • SLSA Level 3 — криптографическое подтверждение сборки через GitHub Actions
  • Sigstore cosign — keyless-подписи на всех артефактах
  • SHA-256 чек-суммы в каждом релизе
  • CodeQL SAST — блокирует релиз при открытых алёртах

Ссылки

Источник: https://github.com/DeusData/codebase-memory-mcp