
IDA Pro MCP Fusion
io.github.rison1337Published by GitHub account rison1337v2.0.0Updated Oct 24, 2026
IDA Pro MCP fusion with cache queries and multi-binary headless analysis.
Overview
Connects an MCP coding agent to a local licensed IDA Pro install for decompilation, cross-reference and type analysis, patching, and cached multi-binary…
- What you can do
- Exposes roughly 75 IDA-facing tools over one stdio endpoint: session controls (idb_open, idb_batch_open, idb_list, idb_close, idb_save), survey and decompilation (survey_binary, decompile, disasm, analyze_function), search and relationships (find, find_bytes, search_text, xrefs_to, callees, callgraph, trace_data_flow), types and stack, database editing (rename, set_comments, patch_asm, make_data), signatures, and an optional debugger extension. A supervisor keeps several binaries open in isolated headless workers, and a sidecar SQLite cache beside the IDB serves indexed queries for functions, strings, globals, imports, xrefs and call-graph edges.
- When to use it
- Use it when an assistant should work directly on binaries in IDA Pro: triaging samples, decompiling and tracing cross-references, comparing several binaries in one session, or reusing cached analysis instead of re-walking IDA's single-threaded APIs. It suits reverse-engineering and malware-analysis workflows rather than general coding tasks.
- Requirements
- A local, licensed IDA Pro 8.3 or newer (9.x recommended); IDA Free is not supported. Python 3.11+, uv/uvx, and an MCP client that can launch a local stdio server. IDA's headless Python environment must be activated once via py-activate-idalib.py. Runs on desktop only; no authentication, environment variables or headers are declared.
Installation
In SourceWeft
- Open IDA Pro MCP Fusion in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Other MCP clients
Follow the launch instructions in the repository.
README
[English — selected] [Открыть русскую версию]
[Latest release] [Tests] [Python 3.11 or newer] [IDA Pro 8.3 or newer] [MCP over stdio or HTTP] [MIT license]
One MCP endpoint. Many binaries. Persistent analysis context.
Quick start · Why Fusion · Architecture · Tools · Configuration · Development
What is Fusion?
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.
Why Fusion
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.
Quick start
1. Prerequisites
- IDA Pro 8.3 or newer; IDA 9.x is recommended
- Python 3.11 or newer
uv/uvx- Any MCP client that can launch a local stdio server
Install uv if it is not available:
Activate IDA's headless Python environment once:
2. Add the MCP server
The recommended setup runs the latest code directly from this repository:
Claude Code:
Or download the packaged MCP bundle from the latest release.
3. Open a database
Ask the connected agent to start with:
Every analysis call then names its database explicitly:
Architecture
- Your MCP client starts
idalib-mcpover stdio or HTTP. - The supervisor creates or adopts one worker per binary and enforces the worker limit.
- Tool calls include a
databasesession 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_open supports four routing modes:
Multi-binary workflow
Open a small collection and keep every session available:
For a large corpus, build each cache and release its worker immediately:
Useful session controls:
Tool surface
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.
The nine cache-specific tools are:
Configuration
Worker pool
Restricted profiles
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 surface
Management tools remain available so sessions can still be opened and inspected.
HTTP transport
IDA GUI bridge:
To install the GUI plugin and generate client configuration interactively:
Restart IDA and the MCP client after installation.
Safety notes
- 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:
Troubleshooting
uvx is not recognized
Install uv with python -m pip install uv, open a new terminal, and confirm with uvx --version.
Python / IDA version mismatch
Run Hex-Rays idapyswitch, select a Python 3.11+ installation, then activate idalib again with py-activate-idalib.py.
A database call says that database is required
Call idb_list() and pass the returned session_id as database=. Paths and filenames are not accepted in place of a session ID.
The worker limit has been reached
Close an unused session with idb_close, raise --max-workers, or use close_after_cache=True for corpus indexing.
Development
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/.
Project identity and credits
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.
License
Distributed under the MIT License. IDA Pro and Hex-Rays are trademarks of Hex-Rays SA and are not included with this project.
Русский
[Open English version] [Русский — выбран]
Одна MCP-точка. Много бинарников. Контекст анализа сохраняется.
Быстрый старт · Почему Fusion · Архитектура · Инструменты · Настройка
Что такое Fusion?
IDA Pro MCP Fusion подключает MCP-совместимых агентов к IDA Pro и превращает одно соединение в полноценное рабочее место для реверсинга. Живой анализ IDA объединён с постоянным SQLite-индексом и supervisor-процессом, который может держать несколько бинарников в изолированных headless-воркерах.
Можно декомпилировать и дизассемблировать функции, исследовать перекрёстные ссылки, типы и граф вызовов, переименовывать символы, патчить данные, создавать сигнатуры и повторно использовать уже построенный анализ.
[!IMPORTANT] Нужна локальная лицензированная установка IDA Pro. IDA Free не поддерживается. Сервер не содержит IDA, Hex-Rays и не отправляет бинарники во внешний сервис.
Почему Fusion
Кэш лежит рядом с IDB в файле <database>.mcp.sqlite. Актуальность проверяется по времени изменения IDB и версии схемы, поэтому устаревшие данные не выдаются незаметно.
Быстрый старт
1. Что понадобится
- IDA Pro 8.3 или новее; рекомендуется IDA 9.x
- Python 3.11 или новее
uv/uvx- MCP-клиент, который умеет запускать локальный stdio-сервер
Установите uv, если его ещё нет:
Один раз активируйте headless Python от IDA:
2. Добавьте MCP-сервер
Рекомендуемая конфигурация запускает код напрямую из этого репозитория:
Для Claude Code:
Готовый MCPB-пакет доступен в последнем релизе.
3. Откройте базу
Попросите подключённого агента начать так:
Каждый следующий вызов анализа получает явный ID базы:
Архитектура
- MCP-клиент запускает
idalib-mcpчерез stdio или HTTP. - Supervisor создаёт или принимает по одному worker-процессу на каждый бинарник.
- Каждый вызов содержит
database, поэтому запрос попадает в нужную IDB-сессию. - IDA выполняет живой анализ и изменения, а cache-инструменты читают индекс из SQLite.
- Воркеры остаются обнаруживаемыми на компьютере и завершаются после периода простоя.
idb_open поддерживает четыре режима:
Работа с несколькими бинарниками
Открыть несколько образцов и оставить все сессии доступными:
Для большого корпуса можно построить кэш и сразу освободить worker:
Управление сессиями:
Инструменты
В кодовой базе зарегистрировано 75 инструментов анализа IDA, а supervisor добавляет управление мульти-бинарными сессиями. Видимый клиенту список намеренно меняется: debugger-инструменты являются расширением, опасные операции отключены без явного разрешения, а профиль может оставить только выбранные имена.
Настройка
Пул воркеров
Ограниченные профили
Оставить только выбранные инструменты:
profiles/readonly.txt— просмотр без инструментов измененияprofiles/triage.txt— компактный набор для первичного анализа
HTTP
GUI-мост:
Для установки GUI-плагина:
После установки перезапустите IDA и MCP-клиент.
Безопасность
- По умолчанию сервер слушает только loopback. Не открывайте его в недоверенную сеть.
- Изменяющие и произвольные Python-инструменты помечены как unsafe и выключены по умолчанию.
py_eval,py_exec_file, debugger-команды и патчинг могут выполнять код или менять IDB.- Непроверенные бинарники анализируйте в той же изоляции, что и при ручном malware analysis.
Включить unsafe-инструменты можно явно:
Решение проблем
uvx не найден
Установите uv командой python -m pip install uv, откройте новый терминал и проверьте uvx --version.
Несовместимая версия Python или IDA
Запустите 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 и не входят в состав проекта.
Source: README.md at commit 3bd6c5c
Tools
0Version history
1- v2.0.0LatestSep 16, 2026
Score
50% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 days25 pts
Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.
- Auth declared10 pts
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts