The full upstream README, mirrored here for reference. Install config, tool schemas, adoption signals, and an original overview live on the IDA Pro MCP Fusion listing page.
One MCP endpoint. Many binaries. Persistent analysis context.
Quick start · Why Fusion · Architecture · Tools · Configuration · Development
IDA Pro MCP Fusion connects MCP-compatible coding agents to IDA Pro and turns a single connection into a practical reverse-engineering workspace. It combines live IDA analysis with a persistent SQLite index and a supervisor that can keep several binaries open in isolated headless workers.
Use it to decompile and disassemble functions, trace cross-references, query types, rename symbols, patch data, create signatures, inspect multiple samples, and reuse cached analysis without repeatedly walking IDA's single-threaded APIs.
[!IMPORTANT] This project requires a local, licensed installation of IDA Pro. IDA Free is not supported. The server does not provide IDA, Hex-Rays, or a hosted analysis service.
| Capability | What it changes | |
|---|---|---|
| ⚡ | Persistent SQLite cache | Functions, strings, globals, imports, xrefs, and call-graph edges remain queryable across repeated investigations. |
| ◈ | Multi-binary supervisor | Open, address, and close several GUI or headless databases through one MCP endpoint. |
| ⛓ | Persistent workers | A later supervisor can discover and adopt an existing worker for the same database. |
| ◎ | Batch-first workflow | Warm analysis and build caches for a collection of samples with one idb_batch_open call. |
| ⛨ | Controlled surface | Read-only profiles, opt-in unsafe tools, worker limits, timeouts, and idle cleanup keep automation bounded. |
The cache lives beside the IDB as <database>.mcp.sqlite. Freshness is checked against the IDB modification time and cache schema, so stale rows are not silently reused.
uv / uvxInstall uv if it is not available:
Activate IDA's headless Python environment once:
The recommended setup runs the latest code directly from this repository:
Claude Code:
Or download the packaged MCP bundle from the latest release.
Ask the connected agent to start with:
Every analysis call then names its database explicitly:
idalib-mcp over stdio or HTTP.database session ID, so requests are routed to the correct IDB.GUI databases can participate too. idb_open supports four routing modes:
| Mode | Behaviour |
|---|---|
prefer_headless | Use or create an idalib worker. This is the default. |
force_headless | Never adopt a running GUI instance. |
prefer_gui | Adopt a matching GUI instance, otherwise create a worker. |
force_gui | Adopt a matching GUI instance or launch IDA GUI. |
Open a small collection and keep every session available:
For a large corpus, build each cache and release its worker immediately:
Useful session controls:
The codebase registers 75 IDA-facing analysis tools, plus the supervisor's multi-session controls. The exact number visible to a client intentionally varies: debugger tools are an extension, dangerous operations are disabled unless explicitly enabled, and a profile can expose a smaller allowlist.
| Area | Representative tools |
|---|---|
| Sessions | idb_open, idb_batch_open, idb_list, idb_close, idb_save |
| Survey & decompilation | survey_binary, decompile, disasm, analyze_function, analyze_component |
| Search & relationships | find, find_bytes, search_text, xrefs_to, callees, callgraph, trace_data_flow |
| Persistent cache | cache_status, refresh_cache, cache_entity_query, cache_xrefs, cache_callgraph_hotspots, cache_find_regex |
| Types & stack | declare_type, type_inspect, set_type, infer_types, stack_frame, declare_stack |
| Database editing | rename, set_comments, define_func, define_code, patch_asm, make_data |
| Signatures | make_signature, make_signature_for_function, make_signature_for_range, find_xref_signatures |
| Debugger extension | dbg_start, dbg_bps, dbg_regs, dbg_stacktrace, dbg_read, dbg_write |
The nine cache-specific tools are:
| Option / variable | Purpose |
|---|---|
--max-workers N | Maximum simultaneous database workers; 0 means unlimited. Default: 4. |
IDA_MCP_MAX_WORKERS | Environment default for the worker limit. |
IDA_MCP_OPEN_TIMEOUT | Maximum auto-analysis open time in seconds. Default: 1800; 0 disables the limit. |
IDA_MCP_LOAD_TIMEOUT | Maximum load-only open time in seconds. Default: 300; 0 disables the limit. |
Expose only a curated set of tools:
Two ready-to-use profiles are included:
profiles/readonly.txt — inspection without mutation toolsprofiles/triage.txt — compact first-pass analysis surfaceManagement tools remain available so sessions can still be opened and inspected.
IDA GUI bridge:
To install the GUI plugin and generate client configuration interactively:
Restart IDA and the MCP client after installation.
py_eval, py_exec_file, debugger controls, and patching operations can execute code or permanently change an IDB. Enable them only for trusted clients and inputs.Enable unsafe worker tools only when the workflow requires them:
uvx is not recognizedInstall uv with python -m pip install uv, open a new terminal, and confirm with uvx --version.
Run Hex-Rays idapyswitch, select a Python 3.11+ installation, then activate idalib again with py-activate-idalib.py.
database is requiredCall idb_list() and pass the returned session_id as database=. Paths and filenames are not accepted in place of a session ID.
Close an unused session with idb_close, raise --max-workers, or use close_after_cache=True for corpus indexing.
Clone the repository and run the platform-independent test suite:
Run the IDA-backed suite in an activated IDA environment:
New IDA tools live in src/ida_pro_mcp/ida_mcp/api_*.py and register through the @tool decorator. Supervisor and worker lifecycle tests live under tests/.
Fusion Edition is maintained by rison1337.
The project builds on the MIT-licensed mrexodia/ida-pro-mcp codebase. Its persistent cache and headless orchestration also incorporate ideas developed in QiuChenly/ida-pro-mcp-enhancement and winmin/ida-headless-mcp. Attribution is retained here and in the source history; Fusion's packaging, cache tooling, batch workflow, session lifecycle, and public identity are maintained in this repository.
Distributed under the MIT License. IDA Pro and Hex-Rays are trademarks of Hex-Rays SA and are not included with this project.
Одна MCP-точка. Много бинарников. Контекст анализа сохраняется.
Быстрый старт · Почему Fusion · Архитектура · Инструменты · Настройка
IDA Pro MCP Fusion подключает MCP-совместимых агентов к IDA Pro и превращает одно соединение в полноценное рабочее место для реверсинга. Живой анализ IDA объединён с постоянным SQLite-индексом и supervisor-процессом, который может держать несколько бинарников в изолированных headless-воркерах.
Можно декомпилировать и дизассемблировать функции, исследовать перекрёстные ссылки, типы и граф вызовов, переименовывать символы, патчить данные, создавать сигнатуры и повторно использовать уже построенный анализ.
[!IMPORTANT] Нужна локальная лицензированная установка IDA Pro. IDA Free не поддерживается. Сервер не содержит IDA, Hex-Rays и не отправляет бинарники во внешний сервис.
| Возможность | Что это даёт | |
|---|---|---|
| ⚡ | Постоянный SQLite-кэш | Функции, строки, глобальные переменные, импорты, xref и call graph доступны между запусками. |
| ◈ | Мульти-бинарный supervisor | Несколько GUI- или headless-баз управляются через одну MCP-точку. |
| ⛓ | Живущие воркеры | Следующее подключение может найти и принять уже запущенный worker для той же базы. |
| ◎ | Пакетный анализ | Открытие образцов и построение кэшей выполняется одним idb_batch_open. |
| ⛨ | Контролируемый интерфейс | Read-only-профили, лимит воркеров, тайм-ауты и opt-in для опасных инструментов. |
Кэш лежит рядом с IDB в файле <database>.mcp.sqlite. Актуальность проверяется по времени изменения IDB и версии схемы, поэтому устаревшие данные не выдаются незаметно.
uv / uvxУстановите uv, если его ещё нет:
Один раз активируйте headless Python от IDA:
Рекомендуемая конфигурация запускает код напрямую из этого репозитория:
Для Claude Code:
Готовый MCPB-пакет доступен в последнем релизе.
Попросите подключённого агента начать так:
Каждый следующий вызов анализа получает явный ID базы:
idalib-mcp через stdio или HTTP.database, поэтому запрос попадает в нужную IDB-сессию.idb_open поддерживает четыре режима:
| Режим | Поведение |
|---|---|
prefer_headless | Использовать или создать idalib-worker. Режим по умолчанию. |
force_headless | Не принимать запущенный GUI-процесс. |
prefer_gui | Принять подходящий GUI, а если его нет — создать worker. |
force_gui | Принять GUI или запустить новый процесс IDA. |
Открыть несколько образцов и оставить все сессии доступными:
Для большого корпуса можно построить кэш и сразу освободить worker:
Управление сессиями:
В кодовой базе зарегистрировано 75 инструментов анализа IDA, а supervisor добавляет управление мульти-бинарными сессиями. Видимый клиенту список намеренно меняется: debugger-инструменты являются расширением, опасные операции отключены без явного разрешения, а профиль может оставить только выбранные имена.
| Область | Примеры |
|---|---|
| Сессии | idb_open, idb_batch_open, idb_list, idb_close, idb_save |
| Обзор и декомпиляция | survey_binary, decompile, disasm, analyze_function, analyze_component |
| Поиск и связи | find, find_bytes, search_text, xrefs_to, callees, callgraph, trace_data_flow |
| Постоянный кэш | cache_status, refresh_cache, cache_entity_query, cache_xrefs, cache_callgraph_hotspots, cache_find_regex |
| Типы и стек | declare_type, type_inspect, set_type, infer_types, stack_frame, declare_stack |
| Изменение базы | rename, set_comments, define_func, define_code, patch_asm, make_data |
| Сигнатуры | make_signature, make_signature_for_function, make_signature_for_range, find_xref_signatures |
| Debugger-расширение | dbg_start, dbg_bps, dbg_regs, dbg_stacktrace, dbg_read, dbg_write |
| Параметр / переменная | Назначение |
|---|---|
--max-workers N | Максимум одновременно работающих баз; 0 — без лимита. По умолчанию 4. |
IDA_MCP_MAX_WORKERS | Значение лимита по умолчанию из окружения. |
IDA_MCP_OPEN_TIMEOUT | Максимальное время автоанализа при открытии в секундах. По умолчанию 1800. |
IDA_MCP_LOAD_TIMEOUT | Максимальное время загрузки без автоанализа. По умолчанию 300. |
Оставить только выбранные инструменты:
profiles/readonly.txt — просмотр без инструментов измененияprofiles/triage.txt — компактный набор для первичного анализаGUI-мост:
Для установки GUI-плагина:
После установки перезапустите IDA и MCP-клиент.
py_eval, py_exec_file, debugger-команды и патчинг могут выполнять код или менять IDB.Включить unsafe-инструменты можно явно:
uvx не найденУстановите uv командой python -m pip install uv, откройте новый терминал и проверьте uvx --version.
Запустите idapyswitch, выберите Python 3.11+, затем снова выполните py-activate-idalib.py.
databaseВызовите idb_list() и передайте возвращённый session_id как database=. Пути и имена файлов вместо ID сессии не принимаются.
Закройте неиспользуемую сессию через idb_close, увеличьте --max-workers или используйте close_after_cache=True.
Для тестов, которым нужна сама IDA:
Новые инструменты находятся в src/ida_pro_mcp/ida_mcp/api_*.py и регистрируются через @tool. Тесты supervisor и lifecycle — в tests/.
Fusion Edition поддерживается rison1337.
Проект основан на MIT-кодовой базе mrexodia/ida-pro-mcp. Постоянный кэш и headless-оркестрация также используют идеи из QiuChenly/ida-pro-mcp-enhancement и winmin/ida-headless-mcp. Атрибуция сохранена в README и истории исходников; упаковка Fusion, cache-инструменты, batch workflow и lifecycle сессий поддерживаются в этом репозитории.
Проект распространяется по MIT License. IDA Pro и Hex-Rays — товарные знаки Hex-Rays SA и не входят в состав проекта.