mason
Mason — построитель контекста для LLM 👷
Mason предоставляет LLM постоянную карту вашей кодовой базы, чтобы они перестали исследовать её с нуля в каждой сессии.
Проблема: Каждый раз, когда LLM начинает новый разговор о вашем коде, она использует grep, читает файлы и собирает архитектуру по частям — тратя токены на контекст, который она уже поняла вчера. В проекте из 164 файлов ответ на вопрос «какие функции есть в этом приложении?» требует чтения 8+ файлов с помощью нескольких вызовов инструментов.
Решение Mason: Концептуальная карта, которая сохраняется между сессиями. Один вызов инструмента возвращает таблицу поиска «функция-файл» — LLM точно знает, где искать, без необходимости исследования.
Измеренный результат (deepeval, Claude Sonnet, проект KMP из 164 файлов):
Вопрос | С Mason | Без Mason | Экономия токенов |
Перечислить все функции | 10 258 ток. | 31 346 ток. | 67% |
Отследить поток данных | 12 010 ток. | 15 258 ток. | 21% |
Сравнить платформы | 10 897 ток. | 19 353 ток. | 44% |
Поток онбординга | 10 271 ток. | 11 432 ток. | 10% |
Среднее | 36% |
Качество ответов одинаковое (0.9/1.0 во всех тестах для обоих путей). Воспроизведение: bench/.
Быстрый старт
claude mcp add mason --scope user -- npx -p mason-context mason-mcpПерезапустите Claude Code, затем спросите: "use mason to analyze this project and create a snapshot."
Это всё — Mason проанализирует вашу кодовую базу и создаст концептуальную карту. В следующей сессии он загрузит карту вместо того, чтобы переисследовать всё заново.
Related MCP server: ontomics
Как это работает
Концептуальная карта
Основная функция Mason. Она сохраняет карту «функция-файл» в .mason/snapshot.json, которая сохраняется между разговорами. Когда LLM нужно понять ваш проект, она читает эту карту вместо того, чтобы использовать grep по всей кодовой базе:
{
"features": {
"home screen": {
"files": ["HomeScreen.kt", "HomeViewModel.kt", "GetWeatherDataUseCase.kt"]
}
},
"flows": {
"weather fetch": {
"chain": ["HomeViewModel.kt", "WeatherRepositoryImpl.kt", "WeatherServiceImpl.kt"]
}
}
}Карта генерируется самой LLM — Mason предоставляет инструменты анализа, а LLM интерпретирует ваш код, чтобы определить, что представляют собой функции и потоки. Это означает, что карта отражает архитектурное понимание, а не просто список файлов.
Создайте её, попросив своего ИИ-ассистента "create a mason snapshot", или через CLI:
mason set-llm gemini # configure a provider (no API key needed)
mason snapshot ~/my-project # generate concept map
mason snapshot --install-hook # auto-update on every commitАнализ влияния изменений
Перед редактированием файла Mason может подсказать, что еще может быть затронуто. Он объединяет три сигнала, для получения каждого из которых вручную потребовалось бы несколько вызовов инструментов:
История совместных изменений — файлы, которые исторически меняются вместе в коммитах git
Ссылки — файлы, которые импортируют или упоминают цель по имени
Связанные тесты — тестовые файлы, сопоставленные с целью по соглашению об именовании
mason impact WeatherRepository.kt -d ~/my-projectТакже доступно как инструмент MCP get_impact — спросите своего ассистента "what would be affected if I changed WeatherRepository?"
Анализ истории Git
Mason агрегирует сотни коммитов в полезную статистику: какие файлы меняются чаще всего (горячие файлы, с которыми нужно быть осторожными), какие директории не трогали месяцами (потенциально устаревший код) и какие соглашения о коммитах приняты в команде. Это тот тип анализа, для вычисления которого вручную потребовались бы десятки вызовов git log.
mason analyze ~/my-projectИнструменты MCP
Mason предоставляет 6 инструментов через протокол Model Context Protocol. Любой MCP-совместимый клиент (Claude Code, Cursor и т.д.) может их использовать:
Инструмент | Что он делает |
| Загрузить концептуальную карту — сопоставляет функции/потоки с файлами |
| Сохранить концептуальную карту для будущих сессий |
| Влияние изменений: история совместных изменений, ссылки, связанные тесты |
| История Git: паттерны коммитов, горячие файлы, устаревшие директории |
| Комплексный первый визит: статистика git + структура + примеры кода + карта тестов |
| Умные превью файлов, выбранные по архитектурной роли |
Использование CLI
Mason также работает как автономный CLI для генерации файлов CLAUDE.md и запуска анализа без MCP-клиента. Настройте провайдера LLM один раз, затем используйте любую команду:
mason set-llm claude|gemini|ollama|openai # configure provider
mason generate # analyze codebase + LLM -> CLAUDE.md
mason analyze # git stats only (no LLM needed)
mason impact File.kt # change impact analysis
mason snapshot # create/update concept mapБольшинство провайдеров работают без API-ключа — claude, gemini и ollama используют свои соответствующие CLI напрямую.
Безопасность
Что содержит снимок: Имена функций, относительные пути к файлам и описания потоков. Никакого исходного кода, секретов или бизнес-логики.
Чего он не касается: Mason соблюдает .gitignore (через git ls-files) и имеет список запрещенных файлов (deny-list), который блокирует .env, .pem, .key, учетные данные и другие конфиденциальные файлы от выборки. Защита от обхода путей (path traversal) гарантирует, что весь доступ к файлам остается внутри корня проекта.
Поток данных LLM: Генерация снимка через CLI отправляет содержимое выбранных файлов вашему настроенному провайдеру LLM — так же, как любой ИИ-ассистент читает ваш код. Используйте ollama для полностью локальной генерации. Инструменты сервера MCP (get_snapshot, get_impact и т.д.) читают только локальные файлы.
Поддержка языков
Mason полностью не зависит от языка программирования. Он использует паттерны именования файлов и историю git, а не парсинг конкретного языка, поэтому он работает с любым проектом, у которого есть исходные файлы и репозиторий git — TypeScript, Kotlin, Python, Go, Rust, Swift, Java, C#, Dart и другие.
Лицензия
MIT
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/adrianczuczka/mason'
If you have feedback or need assistance with the MCP directory API, please join our Discord server