IDA Pro MCP Fusion
About
IDA Pro MCP fusion for reverse engineering with 76 tools, SQLite cache, and multi-binary headless IDA analysis.
Details
- Author
- rison1337
- Categories
- Developer Tools
Jump to
Setup
Install IDA Pro MCP Fusion in your MCP client (Claude Desktop, Cursor, Windsurf, and others).
Repository: https://github.com/rison1337/ida-pro-mcp-fusion
Follow the installation instructions in the repository README, then restart your MCP client.
IDA Pro MCP fusion for reverse engineering with 76 tools, SQLite cache, and multi-binary headless IDA analysis.
One MCP endpoint. Many binaries. Persistent analysis context.
Quick start·Why Fusion·Architecture·Tools·Configuration·Development
IDA Pro MCP Fusionconnects 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 ofIDA Pro. IDA Free is not supported. The server does not provide IDA, Hex-Rays, or a hosted analysis service.
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.
- IDA Pro8.3 or newer; IDA 9.x is recommended
- Python3.11 or newer
- uv/uvx
- Any MCP client that can launch a local stdio server
Activate IDA's headless Python environment once:
# Windows — adjust the IDA version/path if needed uv run "C:\Program Files\IDA Professional 9.3\idalib\python\py-activate-idalib.py"
# macOS — adjust the IDA version/path if needed uv run "/Applications/IDA Professional 9.3.app/Contents/MacOS/idalib/python/py-activate-idalib.py"
The recommended setup runs the latest code directly from this repository:
{ "mcpServers": { "ida-pro-mcp-fusion": { "command": "uvx", "args": [ "--from", "git+https://github.com/rison1337/ida-pro-mcp-fusion", "idalib-mcp", "--stdio" ] } } }
claude mcp add ida-pro-mcp-fusion -- uvx --from git+https://github.com/rison1337/ida-pro-mcp-fusion idalib-mcp --stdio
Or download the packaged MCP bundle from thelatest release.
idb_open( "C:/samples/target.exe", preferred_session_id="target", build_caches=True, init_hexrays=True, )
Every analysis call then names its database explicitly:
survey_binary(database="target") decompile("main", database="target") xrefs_to("WinMain", database="target") cache_callgraph_hotspots(limit=25, database="target")
- Your MCP client startsidalib-mcpover stdio or HTTP.
- The supervisor creates or adopts one worker per binary and enforces the worker limit.
- Tool calls include adatabasesession ID, so requests are routed to the correct IDB.
- IDA performs live decompilation and mutation work; cache tools serve indexed queries from the sidecar SQLite database.
- Workers remain discoverable on the host and clean themselves up after their idle TTL.
GUI databases can participate too.idb_opensupports four routing modes:
Open a small collection and keep every session available:
idb_batch_open( [ "C:/samples/loader.exe", "C:/samples/payload.dll", "C:/samples/helper.dll", ], session_prefix="case42", refresh_cache=True, cache_include_xrefs=True, )
For a large corpus, build each cache and release its worker immediately:
idb_batch_open( ["C:/corpus/a.exe", "C:/corpus/b.exe", "C:/corpus/c.exe"], close_after_cache=True, retry_without_auto_analysis_on_timeout=True, )
idb_list() idb_close(database="case42_1_loader")
The codebase registers75 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.
cache_status refresh_cache cache_refresh_if_stale cache_list_funcs cache_entity_query cache_xrefs cache_callgraph cache_callgraph_hotspots cache_find_regex
uvx --from git+https://github.com/rison1337/ida-pro-mcp-fusion \ idalib-mcp --stdio --max-workers 4
idalib-mcp --stdio --profile profiles/readonly.txt
- profiles/readonly.txt— inspection without mutation tools
- profiles/triage.txt— compact first-pass analysis surface
Management tools remain available so sessions can still be opened and inspected.
ida-pro-mcp --transport http://127.0.0.1:8744/sse
To install the GUI plugin and generate client configuration interactively:
python -m pip install https://github.com/rison1337/ida-pro-mcp-fusion/archive/refs/heads/main.zip ida-pro-mcp --install
Restart IDA and the MCP client after installation.
- The server binds to loopback by default. Do not expose it to an untrusted network.
- Mutating and arbitrary-Python tools are marked unsafe and are not enabled by default.
- 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.
- Analyze untrusted binaries inside the same isolation boundary you would use for manual malware analysis.
Enable unsafe worker tools only when the workflow requires them:
Installuvwithpython -m pip install uv, open a new terminal, and confirm withuvx --version.
Run Hex-Raysidapyswitch, select a Python 3.11+ installation, then activate idalib again withpy-activate-idalib.py.
Callidb_list()and pass the returnedsession_idasdatabase=. Paths and filenames are not accepted in place of a session ID.
Close an unused session withidb_close, raise--max-workers, or useclose_after_cache=Truefor corpus indexing.
Clone the repository and run the platform-independent test suite:
git clone https://github.com/rison1337/ida-pro-mcp-fusion.git cd ida-pro-mcp-fusion python -m pip install pytest jsonschema "mcp>=1.0" "tomli-w>=1.0" python -m pytest -q tests
Run the IDA-backed suite in an activated IDA environment:
uv run ida-mcp-test tests/typed_fixture.elf -q
New IDA tools live insrc/ida_pro_mcp/ida_mcp/api_*.pyand register through the@tooldecorator. Supervisor and worker lifecycle tests live undertests/.
Fusion Editionis maintained byrison1337.
The project builds on the MIT-licensedmrexodia/ida-pro-mcpcodebase. Its persistent cache and headless orchestration also incorporate ideas developed inQiuChenly/ida-pro-mcp-enhancementandwinmin/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 theMIT 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 и не отправляет бинарники во внешний сервис.
Кэш лежит рядом с IDB в файле<database>.mcp.sqlite. Актуальность проверяется по времени изменения IDB и версии схемы, поэтому устаревшие данные не выдаются незаметно.
- IDA Pro8.3 или новее; рекомендуется IDA 9.x
- Python3.11 или новее
- uv/uvx
- MCP-клиент, который умеет запускать локальный stdio-сервер
Один раз активируйте headless Python от IDA:
# Windows — при необходимости измените версию и путь к IDA uv run "C:\Program Files\IDA Professional 9.3\idalib\python\py-activate-idalib.py"
# macOS — при необходимости измените версию и путь к IDA uv run "/Applications/IDA Professional 9.3.app/Contents/MacOS/idalib/python/py-activate-idalib.py"
Рекомендуемая конфигурация запускает код напрямую из этого репозитория:
{ "mcpServers": { "ida-pro-mcp-fusion": { "command": "uvx", "args": [ "--from", "git+https://github.com/rison1337/ida-pro-mcp-fusion", "idalib-mcp", "--stdio" ] } } }
claude mcp add ida-pro-mcp-fusion -- uvx --from git+https://github.com/rison1337/ida-pro-mcp-fusion idalib-mcp --stdio
Готовый MCPB-пакет доступен впоследнем релизе.
Попросите подключённого агента начать так:
idb_open( "C:/samples/target.exe", preferred_session_id="target", build_caches=True, init_hexrays=True, )
Каждый следующий вызов анализа получает явный ID базы:
survey_binary(database="target") decompile("main", database="target") xrefs_to("WinMain", database="target") cache_callgraph_hotspots(limit=25, database="target")
- MCP-клиент запускаетidalib-mcpчерез stdio или HTTP.
- Supervisor создаёт или принимает по одному worker-процессу на каждый бинарник.
- Каждый вызов содержитdatabase, поэтому запрос попадает в нужную IDB-сессию.
- IDA выполняет живой анализ и изменения, а cache-инструменты читают индекс из SQLite.
- Воркеры остаются обнаруживаемыми на компьютере и завершаются после периода простоя.
Открыть несколько образцов и оставить все сессии доступными:
idb_batch_open( [ "C:/samples/loader.exe", "C:/samples/payload.dll", "C:/samples/helper.dll", ], session_prefix="case42", refresh_cache=True, cache_include_xrefs=True, )
Для большого корпуса можно построить кэш и сразу освободить worker:
idb_batch_open( ["C:/corpus/a.exe", "C:/corpus/b.exe", "C:/corpus/c.exe"], close_after_cache=True, retry_without_auto_analysis_on_timeout=True, )
idb_list() idb_close(database="case42_1_loader")
В кодовой базе зарегистрировано75 инструментов анализа IDA, а supervisor добавляет управление мульти-бинарными сессиями. Видимый клиенту список намеренно меняется: debugger-инструменты являются расширением, опасные операции отключены без явного разрешения, а профиль может оставить только выбранные имена.
uvx --from git+https://github.com/rison1337/ida-pro-mcp-fusion \ idalib-mcp --stdio --max-workers 4
idalib-mcp --stdio --profile profiles/readonly.txt
- profiles/readonly.txt— просмотр без инструментов изменения
- profiles/triage.txt— компактный набор для первичного анализа
ida-pro-mcp --transport http://127.0.0.1:8744/sse
python -m pip install https://github.com/rison1337/ida-pro-mcp-fusion/archive/refs/heads/main.zip ida-pro-mcp --install
Sign in to leave a review
Use Google, GitHub, or an email account so ratings stay tied to real people.
No reviews posted yet.





