Автономный плагин MCP-сервера для IDA Pro.
Автономный MCP-сервер (Model Context Protocol) в виде плагина для IDA Pro 9.x, который предоставляет возможности анализа IDA клиентам LLM, таким как Claude Desktop.

action/format/direction для комментариев, переменных, типов, перекрёстных ссылок, закладок и кодаexecute_on_main_thread()IDASSISTMCP_)hcli plugin install idassistmcp
Это автоматически устанавливает плагин и его Python-зависимости.
Скачайте последний zip-архив релиза на GitHub Releases и распакуйте его в каталог плагинов IDA:
Linux / macOS:
unzip IDAssistMCP-*.zip -d ~/.idapro/plugins/
Windows:
Распакуйте zip в %APPDATA%\Hex-Rays\IDA Pro\plugins\.
Затем установите зависимости, используя встроенный Python IDA (не системный Python):
Linux / macOS:
<IDA_INSTALL_DIR>/python3/bin/pip3 install -r ~/.idapro/plugins/IDAssistMCP/requirements.txt
Windows:
"<IDA_INSTALL_DIR>\python3\python.exe" -m pip install -r "%APPDATA%\Hex-Rays\IDA Pro\plugins\IDAssistMCP\requirements.txt"
Замените
<IDA_INSTALL_DIR>на путь к вашей установке IDA Pro.Совет: Вы также можете использовать переменную окружения
IDAUSR, чтобы указать собственный каталог плагинов.
Добавьте в файл claude_desktop_config.json:
{
"mcpServers": {
"idassistmcp": {
"url": "http://localhost:9080/mcp"
}
}
}
Настройка через переменные окружения с префиксом IDASSISTMCP_:
| Переменная | По умолчанию | Описание |
|---|---|---|
IDASSISTMCP_SERVER__HOST | localhost | Адрес привязки сервера |
IDASSISTMCP_SERVER__PORT | 9080 | Порт сервера |
IDASSISTMCP_SERVER__TRANSPORT | streamablehttp | Тип транспорта (sse или streamablehttp) |
IDASSISTMCP_DEBUG | false | Включить режим отладки |
IDASSISTMCP_LOG_LEVEL | INFO | Уровень логирования |
| Инструмент | Описание |
|---|---|
list_binaries | Показать текущий загруженный бинарный файл |
get_binary_info | Подробные метаданные бинарного файла (архитектура, хеши, сегменты) |
| Инструмент | Описание |
|---|---|
get_code | Получить код функции — format: 'decompile' (псевдо-C) или 'disasm' (ассемблер) |
analyze_function | Комплексный анализ: метаданные, CFG, вызывающие/вызываемые, декомпиляция |
get_basic_blocks | Базовые блоки CFG с последователями/предшественниками |
get_function_stack_layout | Расположение стекового фрейма (локальные переменные, аргументы, сохранённые регистры) |
| Инструмент | Действия | Описание |
|---|---|---|
xrefs | direction: to/from/both, include_calls: bool | Перекрёстные ссылки и опционально вызывающие/вызываемые для адреса |
| Инструмент | Действия | Описание |
|---|---|---|
comments | action: get, set, list, remove | Управление комментариями (обычные, повторяемые, функции) |
| Инструмент | Действия | Описание |
|---|---|---|
variables | action: list, rename | Показать локальные переменные или переименовать локальные/глобальные с scope: auto, local, global |
| Инструмент | Действия / Описание |
|---|---|
types | action: list, set, create_struct, create_enum — управление типами IDB |
get_classes | Показать типы структур/классов из библиотеки типов |
| Инструмент | Описание |
|---|---|
get_functions | Все функции с фильтрацией и пагинацией |
search_functions_by_name | Поиск по имени и фильтрам размера |
get_function_by_name | Поиск по точному имени |
get_function_by_address | Поиск по адресу |
get_function_statistics | Агрегированная статистика (количество, размеры, топ-10) |
| Инструмент | Описание |
|---|---|
rename_symbol | Переименовать любой символ (функцию или данные) |
batch_rename | Пакетное переименование нескольких символов |
| Инструмент | Описание |
|---|---|
get_imports | Таблица импорта, сгруппированная по модулям |
get_exports | Таблица экспорта |
get_strings | Таблица строк с пагинацией |
get_segments | Сегменты памяти с правами доступа |
get_entry_points | Все точки входа бинарного файла |
| Инструмент | Описание |
|---|---|
read_memory | Прочитать сырые байты по адресу |
get_data_at | Получить типизированные данные по адресу |
search_bytes | Поиск бинарной последовательности байтов |
search_strings | Поиск строк с пагинацией |
create_data_var | Определить переменную данных по адресу (byte/word/dword/qword/float/ascii/C type) |
get_data_vars | Список определённых переменных данных (некодовые элементы) |
| Инструмент | Описание |
|---|---|
patch_bytes | Патчить сырые байты в IDB |
assemble_code | Ассемблировать инструкцию по адресу и опционально применить патч |
export_program | Экспортировать пропатченный бинарный файл или базу IDA на диск |
| Инструмент | Описание |
|---|---|
navigate_to | Переместить курсор IDA на адрес |
bookmarks | Объединённое управление закладками — действия: list, set, remove |
get_current_address | Получить адрес и контекст в позиции курсора |
get_current_function | Получить информацию о функции в позиции курсора |
| Инструмент | Описание |
|---|---|
start_task | Запустить асинхронную фоновую задачу |
get_task_status | Проверить прогресс задачи |
cancel_task | Отменить выполняющуюся задачу |
list_tasks | Список всех асинхронных задач |
IDAssistMCP/
├── idassistmcp_plugin.py # Точка входа плагина IDA
├── requirements.txt
├── README.md
└── src/
└── idassist_mcp/
├── __init__.py
├── server.py # Сервер FastMCP + транспорт
├── context.py # Контекст одного бинарного файла IDA
├── tools.py # 41 MCP-инструмент (IDA API)
├── resources.py # 8 MCP-ресурсов
├── prompts.py # 7 подсказок для направленных рабочих процессов
├── config.py # Настройки Pydantic
├── cache.py # LRU-кэш анализа
├── tasks.py # Менеджер асинхронных задач
├── logging.py # Обёртка для логирования IDA
├── utils.py # Утилиты для IDA
└── ui/
└── tool_registry.py # Каталог инструментов для UI
Подробности см. в файле LICENSE.