Об этом проекте

Scantool — это инструмент анализа структуры кода, предназначенный для помощи AI-агентам кодирования (Claude Code, Cursor, VS Code Copilot и другим) в эффективном понимании кодовых баз. Вместо чтения целых файлов для поиска функции или класса, агенты получают структурную карту — каждый класс, функцию, вызывающего и заголовок с номерами строк — за один вызов. Он работает как MCP-сервер (Model Context Protocol) и как shell-команда (`sct`), поэтому агенты могут использовать его через любой интерфейс. Инструмент основан на tree-sitter парсерах для 20+ языков и не требует индекса, API-ключей или настройки, кроме одной команды. Ключевые возможности включают: поиск структур с окружающим контекстом и подсказками вызывающих; сканирование каталога на предмет точек входа, горячих функций и центральных файлов; фокусировку на одной функции или заголовке с дословным кодом и однострочным контуром; вычисление структурных различий между git-ссылками; поиск фактических мест вызова функции; обнаружение перекрытий веток и конфликтов слияния; проверку изменений публичного API; выявление функций, отклоняющихся от паттернов вызовов соседей; и разрешение адресов между git-ссылками. Помимо исходного кода, Scantool обрабатывает документы — заголовки Markdown, таблицы и представления SQL, ключи YAML/TOML/JSON, селекторы CSS и другое — как адресуемую структуру с диапазонами строк. Инструмент разбирает файлы по требованию и кэширует по git blob ID, поэтому одни и те же байты в ссылке, на stdin или в следующем процессе не разбираются дважды. Функции отображаются как сжатые скелеты с сохранением потока управления, вызовов и возвратов, при этом тривиальные операторы сворачиваются. Каждый ответ включает строку покрытия, подсчитывающую просмотренные файлы, показанные структуры и исключенное. Измерено на реальных эпизодах агентов: Scantool сократил использование токенов на 25x для целевых поисков (378 токенов против 9 370 для grep) и на 75% для фокусированных чтений (13 523 против 54 337 токенов) при неизменном покрытии фактов. За 22 эпизода агенты Scantool достигли 88% покрытия фактов против 73% у агентов только с grep. Grep по-прежнему выигрывает в простых литеральных поисках и обзорах верхнего уровня на 1,4x и 1,6x соответственно. Поддерживаемые языки включают Python, JavaScript, TypeScript, Rust, Go, C, C++, Java, PHP, C#, Ruby, Zig, Swift, SQL, HTML, CSS, SCSS, YAML, Markdown, Jupyter notebooks, plain text, JSON, TOML и изображения. Сломанные файлы откатываются к извлечению через regex. По сравнению с другими MCP-серверами исследования кода: Repomix упаковывает весь репозиторий в один файл; Serena использует языковые серверы символ за символом и может редактировать код; claude-context использует индекс эмбеддингов с векторной базой данных и требует API-ключи. Подход Scantool — разбор по требованию без индекса — избегает этих затрат, а также извлекает структуру документов, которую никто из других не обрабатывает. Установка требует uv, затем одну команду для регистрации MCP-сервера. Инструмент лицензирован под MIT и построен на FastMCP, tree-sitter и uv.