Skip to main content
Glama
euthynos-org

Euthynos

Official
by euthynos-org

Агент, читающий файл, видит, от чего этот файл зависит. Он не видит, что зависит от этого файла. Входящие связи невидимы изнутри, поэтому агенты компенсируют это чтением большего количества файлов, что сжигает контекст и всё равно упускает вызывающие стороны. Euthynos отвечает на эти вопросы, используя AST, граф импортов и историю git — ноль вызовов LLM, без сети на пути запроса.

Он предоставляет доказательства. Он не удостоверяет, что изменение безопасно.

Установка

Установите глобально. Флаг -g важен: он помещает команду euthynos в ваш PATH, что позволяет вашему MCP-клиенту запустить сервер.

npm install -g euthynos

Проверьте, что установка прошла успешно, прежде чем настраивать что-либо:

euthynos --help

Затем зарегистрируйте его в вашем агенте:

claude mcp add euthynos -- euthynos mcp

Или в конфигурации любого MCP-клиента:

{ "mcpServers": { "euthynos": { "command": "euthynos", "args": ["mcp"] } } }

Требуется Node.js 18+. Работает на Windows, macOS и Linux.

Почти всегда это локальная установка вместо глобальной. npm install euthynos без -g помещает бинарник в ./node_modules/.bin/, который не находится в вашем PATH, поэтому вашему MCP-клиенту нечего запускать. Подтвердите это:

npm ls -g euthynos --depth=0

Если выводится (empty), переустановите с флагом -g. Чтобы удалить случайную локальную копию, удалите папку node_modules и файл package.json, которые были созданы в каталоге, откуда вы запускали команду.

Если он установлен глобально, но всё ещё не найден, значит, ваша глобальная директория npm bin не находится в PATH — npm config get prefix покажет, где она находится. Или укажите клиенту путь к бинарнику напрямую:

{ "mcpServers": { "euthynos": { "command": "C:\\full\\path\\to\\euthynos.cmd", "args": ["mcp"] } } }

Related MCP server: codemap

23 инструмента, сгруппированных по отвечаемому вопросу

группа

инструменты

что вы получаете

Кто от этого зависит?

callers_of callees_of dependents_of dependencies_of find_references path_between

Транзитивные вызывающие стороны с глубиной и уверенностью, рёбра зависимостей на уровне модулей и кратчайший путь вызова между двумя функциями.

До чего дотянется это изменение?

impact_of change_impact check_my_changes diff_context boundary_check

Радиус поражения до редактирования; после редактирования — какие символы переместились, какие границы модулей пересек diff и что diff не затронул.

Прочитайте ровно столько

read_function read_span file_outline find_symbol context_bundle

Точные фрагменты исходного кода вместо целых файлов. context_bundle собирает исходный код, вызывающие стороны, тесты и радиус поражения в рамках лимита токенов.

Ориентируйтесь в незнакомом репозитории

repo_map query_repository architecture_health module_metrics

Карта модулей, структурные метрики и места, где границы слабы.

Прежде чем писать это снова

similar_logic_exists compare_implementations tests_for

Обнаружение почти дублирующегося кода до добавления третьей копии и обнаружение тестов с маркировкой по маршрутам.

Каждый ответ указывает свою собственную область действия. Отрицательный ответ сообщает, что не было проверено, а не подразумевает, что ничего не существует.

Измерено, а не заявлено

M2 — это предварительно зарегистрированный бенчмарк: задачи, правила валидности и ключи ответов были зафиксированы коммитом до начала любого сеанса, полнота оценивалась вручную вслепую только по финальным ответам, а невалидные сеансы опубликованы вместе с валидными. Одна и та же модель, один и тот же репозиторий, одни и те же промпты — одна ветвь с подключенным Euthynos, другая без.

По трём задачам, достигшим полного измерения:

задача

ветвь

свежих токенов

полнота против замороженного ключа

ложные срабатывания

кто вызывает это

базовая

70,878

12 / 12

1

Euthynos

49,476  −30%

12 / 12

0

дублируется ли эта логика

базовая

33,429

15 / 15

0

Euthynos

29,120  −13%

15 / 15

0

до чего дотянется это изменение

базовая

56,481

15 / 15

0

Euthynos

39,242  −31%

15 / 15

0

Полнота была идентичной и идеальной в обеих ветвях — 42 из 42 требуемых элементов в каждой — в то время как ветвь с Euthynos использовала на 13–31% меньше свежих токенов. Агент пришёл к тому же ответу, прочитав меньше. Предварительно зарегистрированная ловушка, предназначенная для индукции правдоподобного неверного вызывающего, не сработала ни в одной из ветвей.

Чего это не говорит. 21 из 46 предпринятых сеансов были валидными; внешнее ограничение скорости забрало 14 из них. Задачи с направляемым редактированием и ориентацией никогда не измерялись, и никакие цифры для них не подразумеваются. Один стенд, один репозиторий. Это сэкономленная работа, а не улучшенное качество ответов — и мы предпочтём опубликовать это предложение, чем большее число.

Никакие показатели задержки не публикуются. Два внутренне валидных измерения разошлись, и контролируемый эксперимент, который мог бы разрешить это, не удалось завершить, поэтому мы не публикуем ни одного и предоставляем стенд — docs/PROVENANCE.md содержит обоснование.

Локальность в первую очередь

  • Ничего не загружается с пути запроса. MCP-сервер не совершает ни одного сетевого вызова и ни одного вызова LLM. Он читает ваше рабочее дерево, включая незакоммиченные правки.

  • Только для чтения. Он никогда не изменяет ваш исходный код.

  • Песочница по путям. Сервер фиксирует обслуживаемые корни при запуске; путь за их пределами отклоняется. Символические ссылки не разрешаются.

  • Один каталог на диске: .euthynos/ в корне репозитория, содержащий индекс с адресацией по содержимому и локальный журнал телеметрии только с метаданными. Он создаётся с собственным .gitignore, и его удаление стоит только повторного сканирования. Отключите с помощью EUTHYNOS_NO_INDEX=1 и EUTHYNOS_NO_TELEMETRY=1.

  • Одно исключение, опциональное и только для CLI: euthynos scan --ai отправляет кандидаты дублирующихся фрагментов в Anthropic API для подтверждения находок. Требует ANTHROPIC_API_KEY, по умолчанию выключен и не является частью MCP-сервера.

Масштаб — что мы будем и не будем утверждать

Euthynos валидирован примерно до 10 000 файлов. Ниже примерно 1 500 он работает комфортно. Выше 10 000 он не валидирован, и не следует предполагать, что он работает.

~10 000 файлов — это верхняя граница валидированного конверта, а не гарантия.

Память является сдерживающим фактором на верхнем пределе, а не задержка. Распарсенный корпус хранится в памяти: репозиторий из 10 000 файлов занимает RSS процесса от примерно 0,6 ГБ до ~1,1 ГБ во время цикла редактирования. Экстраполируя линейно — оценка, а не измерение — стандартная куча Node, вероятно, будет исчерпана где-то около 25 000–35 000 файлов. Поэтому лимит обнаружения в 60 000 файлов в коде не является достижимым пределом.

Точные показатели задержки не публикуются в V1. У нас есть два внутренне согласованных измерения, которые расходятся на больших размерах, и контролируемый эксперимент, который мог бы разрешить, какому из них доверять, не удалось завершить. Вместо того чтобы публиковать цифру, за которую мы не можем поручиться, мы не публикуем ни одной и предоставляем стенд, чтобы вы могли измерить свою собственную машину:

node scripts/measurement/gen-scale-repos.mjs
node --expose-gc scripts/measurement/measure-latency.mjs --reps=20

Обоснование в docs/PROVENANCE.md; конверт и то, что влияет на производительность, в docs/SUPPORTED-SCALE.md.

Другие ограничения, о которых стоит знать перед установкой:

  • Диспетчеризация синхронна. Один вызов инструмента за раз, и холодное первое сканирование блокирует очередь на всё своё время — секунды, увеличивающиеся с размером репозитория. Тайм-аута на вызов нет; ваш MCP-клиент должен предоставить тайм-аут, который выдерживает этот первый вызов.

  • Чтение индекса не бесплатно и не инвариантно к масштабу. find_symbol, read_function и find_references требуют реального времени и растут с размером репозитория. Более ранняя версия этого файла утверждала, что они остаются меньше миллисекунды при любом масштабе; это значение было путём ошибки при отклонении аргумента, а не чтением. См. docs/BENCHMARK-INTEGRITY-AUDIT.md.

  • Цикл редактирования стоит в несколько раз дороже тёплого вызова, потому что изменённые файлы должны быть перепарсены. Любая цифра, которая не указывает, что из двух было измерено, мало о чём говорит.

  • Время холодной сборки зависит от машины и среды хранения. Построение индекса ограничено вводом-выводом.

  • Все измерения на сегодняшний день проводились на TypeScript. Другие языки будут отличаться.

Языки

16 языков для парсинга, через три стратегии. TypeScript, JavaScript и Vue SFC через API компилятора TypeScript; Python, Go, Java, Ruby, Rust, PHP, C, C++, C#, Dart, Kotlin и Swift через tree-sitter WASM; COBOL через детерминированный построчный парсер.

Каждая грамматика работает как чистый WASM — никаких нативных привязок, никаких предварительных сборок под платформу, никакой цепочки инструментов компилятора. Качество разрешения графа вызовов наиболее сильное для TypeScript.

Чего Euthynos не утверждает

Это статический анализатор. Он видит импорты, объявления и рёбра вызовов. Он не видит рефлексию, динамическую диспетчеризацию, генерацию кода во время выполнения, имена символов, построенные из строк, динамические импорты или связывание фреймворков — и он никогда не притворяется иначе.

Эти фразы запрещены в его выводе, и запрет обеспечивается тестами:

is safe · safe to … · no other consumers · all references · unused · fully tested · no impact · любое утверждение о математическом доказательстве безопасности

callers_of, возвращающий пустой результат, означает, что статический граф не нашёл вызывающих объектов, а не этот код никто не вызывает. Неоднозначные межмодульные имена порождают отсутствие ребра, а не догадку, поэтому ответы представляют собой нижнюю границу, а количество неразрешённых вызовов выводится рядом.

Проверьте утверждения сами

Здесь вас не просят верить на слово:

что

где

Бенчмарк токенов/восстановления, зарегистрированный до запуска

research/M2-PREREG.md

Его результаты, опубликованные без изменений

research/M2-RESULTS.md

Где наши собственные опубликованные числа были неверны и как

docs/BENCHMARK-INTEGRITY-AUDIT.md

Измерьте задержку на своей машине

scripts/measurement/measure-latency.mjs

Что здесь можно и нельзя проверить — включая причины отсрочки данных о задержке

docs/PROVENANCE.md

Последний пункт — не случайность раскрытия. Два наших бенчмарк-стенда замеряли ошибки валидации аргументов как будто это были измерения, а одно опубликованное утверждение было неверным на три порядка. В аудите документируется, что сломалось, что было признано недействительным, что было перемерено и что остаётся без подтверждения.

Что не опубликовано: ключи ответов M2 и полный журнал сессий. Любое утверждение о них не подтверждено данным репозиторием, и мы предпочитаем сказать об этом прямо, чем подразумевать обратное.

Euthynos для команд

◈  Euthynos для команд

Тот же движок, стоящий между pull request и main.

Ранний доступ Статус LLM-вызовы

Пока общедоступной версии нет. На сегодня нет публичного экземпляра, в который можно войти. В этом разделе описывается существующее и работающее программное обеспечение — чтобы вы могли решить сейчас, стоит ли оно вашего внимания, — а не продукт, который можно купить сию минуту. Присоединяйтесь к списку раннего доступа на euthynos.dev →

Подключите репозиторий через GitHub App. Каждый push и pull request сканируется на серверной стороне движком из этого репозитория, и результат попадает туда, где на самом деле принимается решение.

◈ Политика слияния, записанная в виде правил

Пять типов правил, каждое с уровнем warn или block:

правило

порог

health-delta

0–100

contamination-delta

0–100

metric-floor

0–100

min-owners

1–20, целое

no-new-duplication

точное

Границы проверяются на серверной стороне. Форма — это удобство, а не валидатор.

◈ Граф зависимостей при каждом сканировании

Каждое сканирование создаёт интерактивный артефакт графа — модули, рёбра импортов и циклы, которые нельзя чисто разорвать.

Оценивается по четырём осям плюс дублирование:

depth · seams · locality · leverage

Каждая представлена в виде диапазона — Strong, Stable, Drifting, At Risk — потому что диапазон — это та часть, которая что-то значит.

◈ Проверка в каждом PR

Вердикт фиксируется относительно правила, которое его породило, так что на вопрос «почему меня заблокировали» есть ответ, а не просто ощущение.

Состояния оповещений переносятся между сканированиями: new · ongoing · resolved · archived-until-worse · regressed.

◈ Доказательства, которые может прочитать аудитор

Экспортируйте диапазон дат и получите набор правил, каким он был, каждый вердикт о слиянии в этом окне, каждое переопределение с указанием автора и письменной причины, а также покрытие владельцев по каждому модулю.

Для чтения не требуется учётная запись.

◈ Риск знаний из истории git. Процент владения и фактор автобуса для каждого модуля — так что «самый слабый модуль понимает только один человек» — это то, что вам сообщает панель управления, а не то, что вы узнаёте, когда этот человек уходит.


Здесь тоже ноль LLM-вызовов. Один и тот же diff даёт один и тот же вердикт каждый раз. Ничего не сэмплируется, поэтому нечему галлюцинировать и нечем инжектировать промпты. Отправьте ту же ветку дважды — получите ту же проверку дважды.

CLI в этом репозитории остаётся бесплатным, локальным и под лицензией Apache-2.0 — это обязательство, а не пробный период. Он не связывается с платформой, и платформа никогда не касается вашей машины.

Хотите получить доступ, когда он откроется?

→  Присоединяйтесь к списку раннего доступа на euthynos.dev

Локальный CLI навсегда бесплатен · без кредитной карты · учётная запись не нужна для использования чего-либо в этом репозитории

CLI

MCP-сервер — это основной интерфейс, но CLI работает и сам по себе:

euthynos scan [path]        architecture scan — six metrics, module table
euthynos graph [path]       build the call graph; --impact/--callers/--path
euthynos dashboard [path]   self-contained interactive HTML, zero runtime deps
euthynos index [path]       inspect or rebuild the local index
euthynos mcp                start the MCP stdio server

euthynos --help выводит полный набор флагов и штамп сборки.

Документация

docs/ARCHITECTURE.md · docs/SUPPORTED-SCALE.md · docs/SECURITY.md · docs/CONTRIBUTING.md · docs/TRADEMARK.md · docs/PROVENANCE.md · CHANGELOG.md

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

Сообщайте об уязвимостях конфиденциально через GitHub Security Advisories, а не через публичный issue. Область применения и ожидания: docs/SECURITY.md.

Лицензия

Лицензия Apache 2.0 — см. LICENSE и NOTICE.

Авторское право © 2026, Tonil Kumar.

Лицензия распространяется на код. Она не распространяется на название: «Euthynos» заявлен как незарегистрированный товарный знак Tonil Kumar — заявка на регистрацию не подавалась и не была удовлетворена. См. docs/TRADEMARK.md.


A
license - permissive license
-
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    -
    quality
    A
    maintenance
    Provides local codebase intelligence as an MCP server, enabling AI agents to query dependencies, assess change impact, and produce tamper-evident change evidence packets.
    508
    Apache 2.0
  • A
    license
    -
    quality
    A
    maintenance
    Local-first MCP server that scans a repository once and answers architecture questions from an evidence-backed graph, enabling dependency analysis, impact analysis, and codebase exploration without re-reading the source tree.
    MIT
  • A
    license
    -
    quality
    A
    maintenance
    Local repository intelligence MCP server that builds a reusable graph of code structure for AI coding agents, providing 34 network-free tools for understanding, searching, and analyzing repositories without data leaving the machine.
    59
    MIT

View all related MCP servers

Related MCP Connectors

  • Hosted MCP server for structured code review passes on human- and AI-written code. Free tier.

  • An MCP server that gives your AI access to the source code and docs of all public github repos

  • Agent-native MCP server over the public saagarpatel.dev corpus. Read-only, stateless.

View all MCP Connectors

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/euthynos-org/euthynos'

If you have feedback or need assistance with the MCP directory API, please join our Discord server