TDA Thread Dump Analyzer MCP
Анализатор дампов потоков Java с MCP-сервером: агент ищет взаимоблокировки и зависшие потоки, не читая сотни мегабайт стека
- 552 ★ репозитория
- Последний коммит
- LGPL-2.1
Расширенный доступ
Почему такой уровень
- Запускает локальный процесс Java, который читает указанные вами лог-файлы
- Дампы потоков продакшена содержат имена потоков, стеки и иногда данные запросов, которые попадают в ответы агенту
Установка
- Работает в
Ручная установка
claude mcp add tda -- java -Djava.awt.headless=true -jar /absolute/path/to/tda.jar --mcpСначала скачайте tda.jar из раздела Releases репозитория и подставьте реальный путь. Нужна Java 11 или новее.
Доступ и проверки
Как мы проверяемРасширенный доступИнструмент запускает код или ходит в сеть, а внешние данные только читает.
- Запускает локальный процесс Java, который читает указанные вами лог-файлы
- Дампы потоков продакшена содержат имена потоков, стеки и иногда данные запросов, которые попадают в ответы агенту
Это чужой код. Посмотрите файлы в репозитории перед установкой.
Что делает
TDA — программа на Java для разбора дампов потоков, которая умеет работать без окна как MCP-сервер. Команда `java -Djava.awt.headless=true -jar tda.jar --mcp` запускает ее в режиме stdio, и агент работает через инструменты без чтения сырого лога. Дамп продакшена может занимать сотни мегабайт, поэтому скилл в репозитории запрещает агенту открывать такие файлы и отправляет все запросы в TDA. Восемь инструментов собраны в цепочку диагностики. Первым всегда вызывается parse_log, который загружает файл. Затем get_summary показывает список дампов с временем, числом потоков и взаимоблокировок, а check_deadlocks ищет взаимные блокировки. Инструмент find_long_running находит потоки, которые в нескольких последовательных дампах остаются в одном состоянии с одним стеком. Инструмент analyze_virtual_threads ловит виртуальные потоки, у которых несущий поток застрял в коде приложения. Еще три инструмента перечисляют потоки в нативных методах, показывают зомби-потоки с неразрешенными адресами SMR и сбрасывают состояние перед новым файлом. Проект поддерживает дампы Java от 1.4 до 21 и выше, включая виртуальные потоки и экспериментальные дампы в формате JSON. Кроме MCP в репозитории есть оконное приложение на Swing, плагин VisualVM и скилл для агентов. Для агентов без MCP скилл содержит мост на Python: `tda_client.py analyze` с путем к логу.
Для кого. Для Java-разработчиков и инженеров эксплуатации, которые с помощью Claude Code, Codex, Cursor или Junie разбирают зависания, всплески CPU и исчерпание пулов потоков по логам jstack.
Подходит, если
- Вы разбираете зависший Java-сервис: в логе лежит несколько дампов `jstack` или `kill -3`, и агент должен прочитать их, не загружая в контекст целиком
- Вы подозреваете взаимную блокировку или исчерпание пула соединений с базой и хотите получить список потоков и цепочку ожидания
- Вы ищете на Java 21 закрепление несущих потоков у виртуальных потоков, при котором задачи встают в очередь
- Вы сравниваете дампы, снятые с интервалом, чтобы найти потоки, застрявшие в одном месте
- Вы расследуете утечку зомби-потоков HotSpot по неразрешенным адресам SMR
Не подходит, если
- Нужен профилировщик CPU или анализ дампа кучи: инструменты MCP разбирают только потоки
- Нужен поиск застрявших потоков, а дамп один: для него требуются несколько дампов с интервалом
- Сервис написан не на Java, например на Go или Python: TDA читает форматы дампов JVM
- Нужен анализ работающей JVM прямо из агента: инструменты MCP читают только сохраненные логи
Пример запроса к агенту
Разбери дамп потоков в файле /var/log/app/incident-dump.log через TDA: есть ли взаимоблокировки, сколько потоков заблокировано и что с виртуальными потокамиMCP
- Транспорт
- stdio
- Авторизация
- не нужна
Переменные окружения
TDA_JAR_PATH- Путь к tda.jar для моста на Python, если файл лежит вне стандартных мест поиска.
Ограничения
- Нужны Java 11 или новее и файл tda.jar из раздела Releases. Мост на Python дополнительно требует Python 3.
- Все инструменты MCP работают с логом, путь к которому вы указываете. Для работающей JVM предназначены оконное приложение и плагины для jconsole и VisualVM.
- Для файлов в сотни мегабайт увеличьте память Java, например флагом `-Xmx2g` в аргументах запуска.
- Поддержка дампов в формате JSON у Java 21 экспериментальная.
- Установщик для macOS не подписан, поэтому система при первом запуске предупредит о неподтвержденном разработчике.
Как отключить. Удалите запись tda из конфига MCP-клиента или выполните `claude mcp remove tda`. Файл tda.jar можно удалить с диска, а скилл уходит вместе с папкой tda-thread-dump-analysis в каталоге навыков.
Частые вопросы
Как подключить TDA к Claude Code как MCP-сервер?
Скачайте tda.jar из раздела Releases и выполните `claude mcp add tda -- java -Djava.awt.headless=true -jar /абсолютный/путь/к/tda.jar --mcp`. Та же запись в виде JSON работает в Junie, Cursor и Windsurf, для Codex ее оформляют таблицей в config.toml.
Как проанализировать дамп потоков Java с помощью ИИ-агента?
Подключите MCP-сервер, поставьте скилл командой `npx skills add https://github.com/irockel/tda` и попросите агента разобрать файл, например: «Есть ли в этом дампе взаимоблокировки?». Скилл tda-thread-dump-analysis сам ведет агента по цепочке диагностики, от загрузки файла до проверки виртуальных потоков.
Что такое закрепление несущего потока и как его найти?
Это случай, когда виртуальный поток держит несущий поток в коде приложения, и другие виртуальные потоки ждут. Инструмент analyze_virtual_threads показывает такие потоки, а в документации скилла есть справочник по состояниям потоков, графам блокировок и теории закрепления.
Как запустить TDA для очень большого дампа?
Добавьте в аргументы запуска `-Xmx2g` или больше: `java -Djava.awt.headless=true -Xmx2g -jar tda.jar --mcp`. Агенту при этом по-прежнему нельзя читать файл напрямую, все запросы идут через инструменты TDA.
Как работать с TDA в агенте без поддержки MCP?
Скилл содержит мост tda_client.py. Запустите `python3 .agents/skills/tda-thread-dump-analysis/scripts/tda_client.py analyze /путь/к/дампу.log`, для машинного вывода добавьте `--json`. Если tda.jar лежит вне стандартных мест, задайте переменную TDA_JAR_PATH.
Обсуждение
Вопросов и отзывов пока нет.
Похожие
MCP-серверыMCP Server for WinDbg
MCP Server for WinDbg Crash Analysis
MCP-сервер, который отдает агенту отладчики Windows: разбор аварийных дампов, удаленная и ядерная отладка на естественном языке
MCP-сервер, который индексирует код через tree-sitter и отдает агенту отдельные функции и классы вместо целых файлов
MCP-сервер, который дает агенту скриншоты, DOM, логи и IPC запущенного приложения на Tauri v2 и умеет кликать по интерфейсу
MCP-сервер, который один раз строит граф кода проекта и отдает агенту готовые ответы вместо повторного перечитывания файлов
Локальный граф знаний о коде с историей версий: MCP-сервер отвечает агенту, кто вызывает функцию и что сломается от правки
Локальный инструмент для проверки и отладки MCP-серверов: чат с инструментами, просмотр вызовов и прогоны оценок по разным клиентам
Сравнение с похожими
Записи с тем же главным запросом: чем они отличаются.
| Запись | Официальный | Авторизация | Звезды репозитория | Главное отличие |
|---|---|---|---|---|
| TDA Thread Dump Analyzer (эта запись) | да | не нужна | 552 | |
| claude-code-java | нет | 761 | скиллы для Java-проектов: ревью кода, Spring Boot и конкурентность, без разбора дампов потоков | |
| Plinth | нет | 456 | набор скиллов и агентов для разработки на Java, включая профилирование |
Коротко о README
README объявляет большой релиз с расширенным MCP-сервером и поддержкой SMR, а затем перечисляет способы установки, от самодостаточного JAR до пакета для macOS. Раздел про агентов описывает два пути (скилл и прямой MCP), таблицу инструментов и рекомендуемую системную инструкцию. Дальше идут сборка проекта на Maven и ссылка на статью на dev.to.