{
  "markdown": "<a id=\"english\"></a>\n\n<div align=\"center\">\n  <img src=\"assets/hero-banner-v2.svg\" width=\"100%\" alt=\"IDA Pro MCP Fusion — multi-binary reverse engineering through MCP\">\n</div>\n\n<!-- mcp-name: io.github.rison1337/ida-pro-mcp-fusion -->\n\n<p align=\"center\">\n  <a href=\"#english\"><img alt=\"English — selected\" src=\"assets/language/en-active.svg\" height=\"38\"></a>&nbsp;<a href=\"#русский\"><img alt=\"Открыть русскую версию\" src=\"assets/language/ru-inactive.svg\" height=\"38\"></a>\n</p>\n\n<p align=\"center\">\n  <a href=\"https://github.com/rison1337/ida-pro-mcp-fusion/releases/latest\"><img src=\"https://img.shields.io/github/v/release/rison1337/ida-pro-mcp-fusion?style=flat-square&color=7c6cf2&label=release\" alt=\"Latest release\"></a>\n  <a href=\"https://github.com/rison1337/ida-pro-mcp-fusion/actions\"><img src=\"https://img.shields.io/github/actions/workflow/status/rison1337/ida-pro-mcp-fusion/ci.yml?branch=main&style=flat-square&label=tests\" alt=\"Tests\"></a>\n  <img src=\"https://img.shields.io/badge/Python-3.11%2B-45d7ff?style=flat-square\" alt=\"Python 3.11 or newer\">\n  <img src=\"https://img.shields.io/badge/IDA_Pro-8.3%2B-8b7cf6?style=flat-square\" alt=\"IDA Pro 8.3 or newer\">\n  <img src=\"https://img.shields.io/badge/MCP-stdio_%7C_HTTP-ff6b8a?style=flat-square\" alt=\"MCP over stdio or HTTP\">\n  <a href=\"LICENSE\"><img src=\"https://img.shields.io/badge/license-MIT-e5e7eb?style=flat-square\" alt=\"MIT license\"></a>\n</p>\n\n<p align=\"center\">\n  <strong>One MCP endpoint. Many binaries. Persistent analysis context.</strong>\n</p>\n\n<p align=\"center\">\n  <a href=\"#quick-start\">Quick start</a> ·\n  <a href=\"#why-fusion\">Why Fusion</a> ·\n  <a href=\"#architecture\">Architecture</a> ·\n  <a href=\"#tool-surface\">Tools</a> ·\n  <a href=\"#configuration\">Configuration</a> ·\n  <a href=\"#development\">Development</a>\n</p>\n\n## What is Fusion?\n\n**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.\n\nUse 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.\n\n> [!IMPORTANT]\n> 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.\n\n## Why Fusion\n\n| | Capability | What it changes |\n|:--:|---|---|\n| ⚡ | **Persistent SQLite cache** | Functions, strings, globals, imports, xrefs, and call-graph edges remain queryable across repeated investigations. |\n| ◈ | **Multi-binary supervisor** | Open, address, and close several GUI or headless databases through one MCP endpoint. |\n| ⛓ | **Persistent workers** | A later supervisor can discover and adopt an existing worker for the same database. |\n| ◎ | **Batch-first workflow** | Warm analysis and build caches for a collection of samples with one `idb_batch_open` call. |\n| ⛨ | **Controlled surface** | Read-only profiles, opt-in unsafe tools, worker limits, timeouts, and idle cleanup keep automation bounded. |\n\nThe 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.\n\n## Quick start\n\n### 1. Prerequisites\n\n- [IDA Pro](https://hex-rays.com/ida-pro) 8.3 or newer; IDA 9.x is recommended\n- [Python](https://www.python.org/downloads/) 3.11 or newer\n- [`uv` / `uvx`](https://docs.astral.sh/uv/)\n- Any MCP client that can launch a local stdio server\n\nInstall `uv` if it is not available:\n\n```bash\npython -m pip install uv\n```\n\nActivate IDA's headless Python environment once:\n\n```powershell\n# Windows — adjust the IDA version/path if needed\nuv run \"C:\\Program Files\\IDA Professional 9.3\\idalib\\python\\py-activate-idalib.py\"\n```\n\n```bash\n# macOS — adjust the IDA version/path if needed\nuv run \"/Applications/IDA Professional 9.3.app/Contents/MacOS/idalib/python/py-activate-idalib.py\"\n```\n\n### 2. Add the MCP server\n\nThe recommended setup runs the latest code directly from this repository:\n\n```json\n{\n  \"mcpServers\": {\n    \"ida-pro-mcp-fusion\": {\n      \"command\": \"uvx\",\n      \"args\": [\n        \"--from\",\n        \"git+https://github.com/rison1337/ida-pro-mcp-fusion\",\n        \"idalib-mcp\",\n        \"--stdio\"\n      ]\n    }\n  }\n}\n```\n\nClaude Code:\n\n```bash\nclaude mcp add ida-pro-mcp-fusion -- uvx --from git+https://github.com/rison1337/ida-pro-mcp-fusion idalib-mcp --stdio\n```\n\nOr download the packaged MCP bundle from the [latest release](https://github.com/rison1337/ida-pro-mcp-fusion/releases/latest).\n\n### 3. Open a database\n\nAsk the connected agent to start with:\n\n```python\nidb_open(\n    \"C:/samples/target.exe\",\n    preferred_session_id=\"target\",\n    build_caches=True,\n    init_hexrays=True,\n)\n```\n\nEvery analysis call then names its database explicitly:\n\n```python\nsurvey_binary(database=\"target\")\ndecompile(\"main\", database=\"target\")\nxrefs_to(\"WinMain\", database=\"target\")\ncache_callgraph_hotspots(limit=25, database=\"target\")\n```\n\n## Architecture\n\n<div align=\"center\">\n  <img src=\"assets/architecture.svg\" width=\"100%\" alt=\"Architecture of IDA Pro MCP Fusion\">\n</div>\n\n1. Your MCP client starts `idalib-mcp` over stdio or HTTP.\n2. The supervisor creates or adopts one worker per binary and enforces the worker limit.\n3. Tool calls include a `database` session ID, so requests are routed to the correct IDB.\n4. IDA performs live decompilation and mutation work; cache tools serve indexed queries from the sidecar SQLite database.\n5. Workers remain discoverable on the host and clean themselves up after their idle TTL.\n\nGUI databases can participate too. `idb_open` supports four routing modes:\n\n| Mode | Behaviour |\n|---|---|\n| `prefer_headless` | Use or create an idalib worker. This is the default. |\n| `force_headless` | Never adopt a running GUI instance. |\n| `prefer_gui` | Adopt a matching GUI instance, otherwise create a worker. |\n| `force_gui` | Adopt a matching GUI instance or launch IDA GUI. |\n\n## Multi-binary workflow\n\nOpen a small collection and keep every session available:\n\n```python\nidb_batch_open(\n    [\n        \"C:/samples/loader.exe\",\n        \"C:/samples/payload.dll\",\n        \"C:/samples/helper.dll\",\n    ],\n    session_prefix=\"case42\",\n    refresh_cache=True,\n    cache_include_xrefs=True,\n)\n```\n\nFor a large corpus, build each cache and release its worker immediately:\n\n```python\nidb_batch_open(\n    [\"C:/corpus/a.exe\", \"C:/corpus/b.exe\", \"C:/corpus/c.exe\"],\n    close_after_cache=True,\n    retry_without_auto_analysis_on_timeout=True,\n)\n```\n\nUseful session controls:\n\n```python\nidb_list()\nidb_close(database=\"case42_1_loader\")\n```\n\n## Tool surface\n\nThe 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.\n\n| Area | Representative tools |\n|---|---|\n| Sessions | `idb_open`, `idb_batch_open`, `idb_list`, `idb_close`, `idb_save` |\n| Survey & decompilation | `survey_binary`, `decompile`, `disasm`, `analyze_function`, `analyze_component` |\n| Search & relationships | `find`, `find_bytes`, `search_text`, `xrefs_to`, `callees`, `callgraph`, `trace_data_flow` |\n| Persistent cache | `cache_status`, `refresh_cache`, `cache_entity_query`, `cache_xrefs`, `cache_callgraph_hotspots`, `cache_find_regex` |\n| Types & stack | `declare_type`, `type_inspect`, `set_type`, `infer_types`, `stack_frame`, `declare_stack` |\n| Database editing | `rename`, `set_comments`, `define_func`, `define_code`, `patch_asm`, `make_data` |\n| Signatures | `make_signature`, `make_signature_for_function`, `make_signature_for_range`, `find_xref_signatures` |\n| Debugger extension | `dbg_start`, `dbg_bps`, `dbg_regs`, `dbg_stacktrace`, `dbg_read`, `dbg_write` |\n\nThe nine cache-specific tools are:\n\n```text\ncache_status              refresh_cache\ncache_refresh_if_stale    cache_list_funcs\ncache_entity_query        cache_xrefs\ncache_callgraph           cache_callgraph_hotspots\ncache_find_regex\n```\n\n## Configuration\n\n### Worker pool\n\n```bash\nuvx --from git+https://github.com/rison1337/ida-pro-mcp-fusion \\\n  idalib-mcp --stdio --max-workers 4\n```\n\n| Option / variable | Purpose |\n|---|---|\n| `--max-workers N` | Maximum simultaneous database workers; `0` means unlimited. Default: `4`. |\n| `IDA_MCP_MAX_WORKERS` | Environment default for the worker limit. |\n| `IDA_MCP_OPEN_TIMEOUT` | Maximum auto-analysis open time in seconds. Default: `1800`; `0` disables the limit. |\n| `IDA_MCP_LOAD_TIMEOUT` | Maximum load-only open time in seconds. Default: `300`; `0` disables the limit. |\n\n### Restricted profiles\n\nExpose only a curated set of tools:\n\n```bash\nidalib-mcp --stdio --profile profiles/readonly.txt\n```\n\nTwo ready-to-use profiles are included:\n\n- [`profiles/readonly.txt`](profiles/readonly.txt) — inspection without mutation tools\n- [`profiles/triage.txt`](profiles/triage.txt) — compact first-pass analysis surface\n\nManagement tools remain available so sessions can still be opened and inspected.\n\n### HTTP transport\n\n```bash\nidalib-mcp --host 127.0.0.1 --port 8745\n```\n\nIDA GUI bridge:\n\n```bash\nida-pro-mcp --transport http://127.0.0.1:8744/sse\n```\n\nTo install the GUI plugin and generate client configuration interactively:\n\n```bash\npython -m pip install https://github.com/rison1337/ida-pro-mcp-fusion/archive/refs/heads/main.zip\nida-pro-mcp --install\n```\n\nRestart IDA and the MCP client after installation.\n\n## Safety notes\n\n- The server binds to loopback by default. Do not expose it to an untrusted network.\n- Mutating and arbitrary-Python tools are marked unsafe and are not enabled by default.\n- `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.\n- Analyze untrusted binaries inside the same isolation boundary you would use for manual malware analysis.\n\nEnable unsafe worker tools only when the workflow requires them:\n\n```bash\nidalib-mcp --stdio --unsafe\n```\n\n## Troubleshooting\n\n<details>\n<summary><strong><code>uvx</code> is not recognized</strong></summary>\n\nInstall `uv` with `python -m pip install uv`, open a new terminal, and confirm with `uvx --version`.\n</details>\n\n<details>\n<summary><strong>Python / IDA version mismatch</strong></summary>\n\nRun Hex-Rays `idapyswitch`, select a Python 3.11+ installation, then activate idalib again with `py-activate-idalib.py`.\n</details>\n\n<details>\n<summary><strong>A database call says that <code>database</code> is required</strong></summary>\n\nCall `idb_list()` and pass the returned `session_id` as `database=`. Paths and filenames are not accepted in place of a session ID.\n</details>\n\n<details>\n<summary><strong>The worker limit has been reached</strong></summary>\n\nClose an unused session with `idb_close`, raise `--max-workers`, or use `close_after_cache=True` for corpus indexing.\n</details>\n\n## Development\n\nClone the repository and run the platform-independent test suite:\n\n```bash\ngit clone https://github.com/rison1337/ida-pro-mcp-fusion.git\ncd ida-pro-mcp-fusion\npython -m pip install pytest jsonschema \"mcp>=1.0\" \"tomli-w>=1.0\"\npython -m pytest -q tests\n```\n\nRun the IDA-backed suite in an activated IDA environment:\n\n```bash\nuv run ida-mcp-test tests/typed_fixture.elf -q\n```\n\nNew 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/`.\n\n## Project identity and credits\n\n**Fusion Edition** is maintained by [rison1337](https://github.com/rison1337).\n\nThe project builds on the MIT-licensed [`mrexodia/ida-pro-mcp`](https://github.com/mrexodia/ida-pro-mcp) codebase. Its persistent cache and headless orchestration also incorporate ideas developed in [`QiuChenly/ida-pro-mcp-enhancement`](https://github.com/QiuChenly/ida-pro-mcp-enhancement) and [`winmin/ida-headless-mcp`](https://github.com/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.\n\n## License\n\nDistributed under the [MIT License](LICENSE). IDA Pro and Hex-Rays are trademarks of Hex-Rays SA and are not included with this project.\n\n---\n\n<a id=\"русский\"></a>\n\n# Русский\n\n<p align=\"center\">\n  <a href=\"#english\"><img alt=\"Open English version\" src=\"assets/language/en-inactive.svg\" height=\"38\"></a>&nbsp;<a href=\"#русский\"><img alt=\"Русский — выбран\" src=\"assets/language/ru-active.svg\" height=\"38\"></a>\n</p>\n\n<p align=\"center\">\n  <strong>Одна MCP-точка. Много бинарников. Контекст анализа сохраняется.</strong>\n</p>\n\n<p align=\"center\">\n  <a href=\"#быстрый-старт\">Быстрый старт</a> ·\n  <a href=\"#почему-fusion\">Почему Fusion</a> ·\n  <a href=\"#архитектура\">Архитектура</a> ·\n  <a href=\"#инструменты\">Инструменты</a> ·\n  <a href=\"#настройка\">Настройка</a>\n</p>\n\n## Что такое Fusion?\n\n**IDA Pro MCP Fusion** подключает MCP-совместимых агентов к IDA Pro и превращает одно соединение в полноценное рабочее место для реверсинга. Живой анализ IDA объединён с постоянным SQLite-индексом и supervisor-процессом, который может держать несколько бинарников в изолированных headless-воркерах.\n\nМожно декомпилировать и дизассемблировать функции, исследовать перекрёстные ссылки, типы и граф вызовов, переименовывать символы, патчить данные, создавать сигнатуры и повторно использовать уже построенный анализ.\n\n> [!IMPORTANT]\n> Нужна локальная лицензированная установка **IDA Pro**. IDA Free не поддерживается. Сервер не содержит IDA, Hex-Rays и не отправляет бинарники во внешний сервис.\n\n## Почему Fusion\n\n| | Возможность | Что это даёт |\n|:--:|---|---|\n| ⚡ | **Постоянный SQLite-кэш** | Функции, строки, глобальные переменные, импорты, xref и call graph доступны между запусками. |\n| ◈ | **Мульти-бинарный supervisor** | Несколько GUI- или headless-баз управляются через одну MCP-точку. |\n| ⛓ | **Живущие воркеры** | Следующее подключение может найти и принять уже запущенный worker для той же базы. |\n| ◎ | **Пакетный анализ** | Открытие образцов и построение кэшей выполняется одним `idb_batch_open`. |\n| ⛨ | **Контролируемый интерфейс** | Read-only-профили, лимит воркеров, тайм-ауты и opt-in для опасных инструментов. |\n\nКэш лежит рядом с IDB в файле `<database>.mcp.sqlite`. Актуальность проверяется по времени изменения IDB и версии схемы, поэтому устаревшие данные не выдаются незаметно.\n\n## Быстрый старт\n\n### 1. Что понадобится\n\n- [IDA Pro](https://hex-rays.com/ida-pro) 8.3 или новее; рекомендуется IDA 9.x\n- [Python](https://www.python.org/downloads/) 3.11 или новее\n- [`uv` / `uvx`](https://docs.astral.sh/uv/)\n- MCP-клиент, который умеет запускать локальный stdio-сервер\n\nУстановите `uv`, если его ещё нет:\n\n```bash\npython -m pip install uv\n```\n\nОдин раз активируйте headless Python от IDA:\n\n```powershell\n# Windows — при необходимости измените версию и путь к IDA\nuv run \"C:\\Program Files\\IDA Professional 9.3\\idalib\\python\\py-activate-idalib.py\"\n```\n\n```bash\n# macOS — при необходимости измените версию и путь к IDA\nuv run \"/Applications/IDA Professional 9.3.app/Contents/MacOS/idalib/python/py-activate-idalib.py\"\n```\n\n### 2. Добавьте MCP-сервер\n\nРекомендуемая конфигурация запускает код напрямую из этого репозитория:\n\n```json\n{\n  \"mcpServers\": {\n    \"ida-pro-mcp-fusion\": {\n      \"command\": \"uvx\",\n      \"args\": [\n        \"--from\",\n        \"git+https://github.com/rison1337/ida-pro-mcp-fusion\",\n        \"idalib-mcp\",\n        \"--stdio\"\n      ]\n    }\n  }\n}\n```\n\nДля Claude Code:\n\n```bash\nclaude mcp add ida-pro-mcp-fusion -- uvx --from git+https://github.com/rison1337/ida-pro-mcp-fusion idalib-mcp --stdio\n```\n\nГотовый MCPB-пакет доступен в [последнем релизе](https://github.com/rison1337/ida-pro-mcp-fusion/releases/latest).\n\n### 3. Откройте базу\n\nПопросите подключённого агента начать так:\n\n```python\nidb_open(\n    \"C:/samples/target.exe\",\n    preferred_session_id=\"target\",\n    build_caches=True,\n    init_hexrays=True,\n)\n```\n\nКаждый следующий вызов анализа получает явный ID базы:\n\n```python\nsurvey_binary(database=\"target\")\ndecompile(\"main\", database=\"target\")\nxrefs_to(\"WinMain\", database=\"target\")\ncache_callgraph_hotspots(limit=25, database=\"target\")\n```\n\n## Архитектура\n\n<div align=\"center\">\n  <img src=\"assets/architecture-ru.svg\" width=\"100%\" alt=\"Архитектура IDA Pro MCP Fusion\">\n</div>\n\n1. MCP-клиент запускает `idalib-mcp` через stdio или HTTP.\n2. Supervisor создаёт или принимает по одному worker-процессу на каждый бинарник.\n3. Каждый вызов содержит `database`, поэтому запрос попадает в нужную IDB-сессию.\n4. IDA выполняет живой анализ и изменения, а cache-инструменты читают индекс из SQLite.\n5. Воркеры остаются обнаруживаемыми на компьютере и завершаются после периода простоя.\n\n`idb_open` поддерживает четыре режима:\n\n| Режим | Поведение |\n|---|---|\n| `prefer_headless` | Использовать или создать idalib-worker. Режим по умолчанию. |\n| `force_headless` | Не принимать запущенный GUI-процесс. |\n| `prefer_gui` | Принять подходящий GUI, а если его нет — создать worker. |\n| `force_gui` | Принять GUI или запустить новый процесс IDA. |\n\n## Работа с несколькими бинарниками\n\nОткрыть несколько образцов и оставить все сессии доступными:\n\n```python\nidb_batch_open(\n    [\n        \"C:/samples/loader.exe\",\n        \"C:/samples/payload.dll\",\n        \"C:/samples/helper.dll\",\n    ],\n    session_prefix=\"case42\",\n    refresh_cache=True,\n    cache_include_xrefs=True,\n)\n```\n\nДля большого корпуса можно построить кэш и сразу освободить worker:\n\n```python\nidb_batch_open(\n    [\"C:/corpus/a.exe\", \"C:/corpus/b.exe\", \"C:/corpus/c.exe\"],\n    close_after_cache=True,\n    retry_without_auto_analysis_on_timeout=True,\n)\n```\n\nУправление сессиями:\n\n```python\nidb_list()\nidb_close(database=\"case42_1_loader\")\n```\n\n## Инструменты\n\nВ кодовой базе зарегистрировано **75 инструментов анализа IDA**, а supervisor добавляет управление мульти-бинарными сессиями. Видимый клиенту список намеренно меняется: debugger-инструменты являются расширением, опасные операции отключены без явного разрешения, а профиль может оставить только выбранные имена.\n\n| Область | Примеры |\n|---|---|\n| Сессии | `idb_open`, `idb_batch_open`, `idb_list`, `idb_close`, `idb_save` |\n| Обзор и декомпиляция | `survey_binary`, `decompile`, `disasm`, `analyze_function`, `analyze_component` |\n| Поиск и связи | `find`, `find_bytes`, `search_text`, `xrefs_to`, `callees`, `callgraph`, `trace_data_flow` |\n| Постоянный кэш | `cache_status`, `refresh_cache`, `cache_entity_query`, `cache_xrefs`, `cache_callgraph_hotspots`, `cache_find_regex` |\n| Типы и стек | `declare_type`, `type_inspect`, `set_type`, `infer_types`, `stack_frame`, `declare_stack` |\n| Изменение базы | `rename`, `set_comments`, `define_func`, `define_code`, `patch_asm`, `make_data` |\n| Сигнатуры | `make_signature`, `make_signature_for_function`, `make_signature_for_range`, `find_xref_signatures` |\n| Debugger-расширение | `dbg_start`, `dbg_bps`, `dbg_regs`, `dbg_stacktrace`, `dbg_read`, `dbg_write` |\n\n## Настройка\n\n### Пул воркеров\n\n```bash\nuvx --from git+https://github.com/rison1337/ida-pro-mcp-fusion \\\n  idalib-mcp --stdio --max-workers 4\n```\n\n| Параметр / переменная | Назначение |\n|---|---|\n| `--max-workers N` | Максимум одновременно работающих баз; `0` — без лимита. По умолчанию `4`. |\n| `IDA_MCP_MAX_WORKERS` | Значение лимита по умолчанию из окружения. |\n| `IDA_MCP_OPEN_TIMEOUT` | Максимальное время автоанализа при открытии в секундах. По умолчанию `1800`. |\n| `IDA_MCP_LOAD_TIMEOUT` | Максимальное время загрузки без автоанализа. По умолчанию `300`. |\n\n### Ограниченные профили\n\nОставить только выбранные инструменты:\n\n```bash\nidalib-mcp --stdio --profile profiles/readonly.txt\n```\n\n- [`profiles/readonly.txt`](profiles/readonly.txt) — просмотр без инструментов изменения\n- [`profiles/triage.txt`](profiles/triage.txt) — компактный набор для первичного анализа\n\n### HTTP\n\n```bash\nidalib-mcp --host 127.0.0.1 --port 8745\n```\n\nGUI-мост:\n\n```bash\nida-pro-mcp --transport http://127.0.0.1:8744/sse\n```\n\nДля установки GUI-плагина:\n\n```bash\npython -m pip install https://github.com/rison1337/ida-pro-mcp-fusion/archive/refs/heads/main.zip\nida-pro-mcp --install\n```\n\nПосле установки перезапустите IDA и MCP-клиент.\n\n## Безопасность\n\n- По умолчанию сервер слушает только loopback. Не открывайте его в недоверенную сеть.\n- Изменяющие и произвольные Python-инструменты помечены как unsafe и выключены по умолчанию.\n- `py_eval`, `py_exec_file`, debugger-команды и патчинг могут выполнять код или менять IDB.\n- Непроверенные бинарники анализируйте в той же изоляции, что и при ручном malware analysis.\n\nВключить unsafe-инструменты можно явно:\n\n```bash\nidalib-mcp --stdio --unsafe\n```\n\n## Решение проблем\n\n<details>\n<summary><strong><code>uvx</code> не найден</strong></summary>\n\nУстановите `uv` командой `python -m pip install uv`, откройте новый терминал и проверьте `uvx --version`.\n</details>\n\n<details>\n<summary><strong>Несовместимая версия Python или IDA</strong></summary>\n\nЗапустите `idapyswitch`, выберите Python 3.11+, затем снова выполните `py-activate-idalib.py`.\n</details>\n\n<details>\n<summary><strong>Ошибка о том, что нужен <code>database</code></strong></summary>\n\nВызовите `idb_list()` и передайте возвращённый `session_id` как `database=`. Пути и имена файлов вместо ID сессии не принимаются.\n</details>\n\n<details>\n<summary><strong>Достигнут лимит воркеров</strong></summary>\n\nЗакройте неиспользуемую сессию через `idb_close`, увеличьте `--max-workers` или используйте `close_after_cache=True`.\n</details>\n\n## Разработка\n\n```bash\ngit clone https://github.com/rison1337/ida-pro-mcp-fusion.git\ncd ida-pro-mcp-fusion\npython -m pip install pytest jsonschema \"mcp>=1.0\" \"tomli-w>=1.0\"\npython -m pytest -q tests\n```\n\nДля тестов, которым нужна сама IDA:\n\n```bash\nuv run ida-mcp-test tests/typed_fixture.elf -q\n```\n\nНовые инструменты находятся в `src/ida_pro_mcp/ida_mcp/api_*.py` и регистрируются через `@tool`. Тесты supervisor и lifecycle — в `tests/`.\n\n## Проект и авторство\n\n**Fusion Edition** поддерживается [rison1337](https://github.com/rison1337).\n\nПроект основан на MIT-кодовой базе [`mrexodia/ida-pro-mcp`](https://github.com/mrexodia/ida-pro-mcp). Постоянный кэш и headless-оркестрация также используют идеи из [`QiuChenly/ida-pro-mcp-enhancement`](https://github.com/QiuChenly/ida-pro-mcp-enhancement) и [`winmin/ida-headless-mcp`](https://github.com/winmin/ida-headless-mcp). Атрибуция сохранена в README и истории исходников; упаковка Fusion, cache-инструменты, batch workflow и lifecycle сессий поддерживаются в этом репозитории.\n\n## Лицензия\n\nПроект распространяется по [MIT License](LICENSE). IDA Pro и Hex-Rays — товарные знаки Hex-Rays SA и не входят в состав проекта.\n",
  "bytes": 22973,
  "sha": "dc02c353f1b2a39b30ea7d0ed6c07a9a8c379831a62a4f45353cf75e3dcd3d6b",
  "repo_slug": "rison1337/ida-pro-mcp-fusion",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_rison1337_ida_pro_mcp_fusion_7693bc3e/readme"
}