IDA-instances-MCP
IDA-instances-MCP
Пользовательская сборка ida-pro-mcp: MCP-сервер, позволяющий MCP-клиентам управлять IDA Pro, — переработанная с упором на стабильность для размещения нескольких headless-экземпляров idalib (схема Ida-Instances).
Это форк ida-pro-mcp от mrexodia (MIT). Вся заслуга апстрима принадлежит Duncan Ogilvie и контрибьюторам; описанные ниже изменения поддерживаются в этом репозитории.
Что изменено
Усиление стабильности поверх апстрима v2.0.0:
Область | Изменение |
Безопасность данных | Очистка частичных баз учитывает владельца: никогда не удаляются файлы |
Надёжность сохранения |
|
Параллелизм | Блокировка супервизора больше не охватывает запуск воркеров (~120 с), проверки состояния (~2,5 с/сессию) или завершение устаревших воркеров — одно медленное открытие не может заморозить все сессии |
Устойчивость | Некорректный JSON-RPC через stdio возвращает |
Тайм-ауты | Тайм-аут прокси поднят с 30 с до 900 с и сделано настраиваемым ( |
Сеть | Гонка TOCTOU при порте воркера теперь повторяет попытки; записи SSE и завершение работы защищены блокировками; чтение CORS-политики кэшируется за пределами главного потока IDA |
Лимиты ресурсов | Журнал трассировки IDB ограничен 64 МБ ( |
Аутентификация | Каждый HTTP-запрос требует API-ключ экземпляра; выдается ровно один раз через |
Хостинговые конечные точки |
|
Завершение неактивных сессий | Сессии без обращений в течение |
Плавное завершение | При получении |
Самообновление | При запуске проверяются релизы GitHub; интерактивным сессиям предлагается автообновление в одно нажатие клавиши |
Настройки хостинга по умолчанию | Головной (headless) супервизор слушает на 0.0.0.0:9999; GUI-плагин также привязывается к 0.0.0.0 и теперь требует тот же API-ключ |
Related MCP server: idalib-mcp-headless
Требования
Linux, macOS или Windows
Python 3.11+ (используйте
idapyswitchвнутри IDA, чтобы версии совпадали)IDA Pro 8.3+ (рекомендуется 9.x). IDA Free не поддерживается
MCP-клиент (Claude Code, Cursor, Codex, OpenCode, VS Code, ...)
Установка
Активируйте idalib для вашего окружения uv:
# linux (server deployment)
uv run "/opt/idapro-9.x/idalib/python/py-activate-idalib.py"
# macos
uv run "/Applications/IDA Professional 9.x.app/Contents/MacOS/idalib/python/py-activate-idalib.py"
# windows
uv run "C:\Program Files\IDA Professional 9.x\idalib\python\py-activate-idalib.py"Headless-запускам дополнительно нужен каталог установки IDA в переменной IDADIR.
Запуск headless-супервизора (режим хостинга)
uv run idalib-mcp # serves http://0.0.0.0:9999/mcp (new default)При запуске генерируется API-ключ (или загружается с диска), и каждый запрос без него получает 401 Unauthorized — без исключений.
Получите ключ один раз с машины/сети, которой принадлежит экземпляр:
curl http://your-host:9999/key
# {"key": "3f2b..."} <- save it; this endpoint is now burned until restartКлюч сохраняется в
~/.idapro/mcp/api_key(права0600) и переживает перезагрузки;GET /keyвыдаёт ключ один раз за запуск сервераМожно переопределить через
IDA_MCP_API_KEY(или переместить его файл черезIDA_MCP_API_KEY_FILE)Все остальные конечные точки требуют его при каждом вызове:
Authorization: Bearer <key>
# or equivalently
X-API-Key: <key>Ключ никогда не логируется.
Хостинговые конечные точки
Endpoint | Auth | Назначение |
| нет | Проверка готовности: |
| ключ | Открытые базы данных, включая время последнего доступа |
| ключ | Потоковая загрузка бинарного содержимого тела запроса в |
Совершите:
# provisioning flow
while ! curl -sf http://10.0.0.4:9999/health >/dev/null; do sleep 1; done
KEY=$(curl -s http://10.0.0.4:9999/key | jq -r .key)
curl -H "Authorization: Bearer $KEY" --data-binary @sample.elf \
"http://10.0.0.4:9999/upload?filename=sample.elf"Полезные флаги:
uv run idalib-mcp --host 127.0.0.1 --port 9999 # override bind address
uv run idalib-mcp --max-workers 8 # concurrent databases (default 4, 0 = unlimited)
uv run idalib-mcp --unsafe # enable destructive/debugger tools (DANGEROUS)
uv run idalib-mcp --profile tools.txt # restrict worker tools to a profile file
uv run idalib-mcp --stdio # stdio transport instead of HTTP
uv run idalib-mcp path/to/binary # open a binary at startupИнструменты жизненного цикла сессии: idb_open, idb_list, idb_close — откройте одну базу данных за сессию; каждая сессия получает собственный изолированный процесс воркера.
Запуск GUI-прокси (интерактивный IDA)
Запустите плагин внутри IDA (Edit -> Plugins -> MCP или Ctrl+Alt+M), затем:
uv run ida-pro-mcp # stdio proxy, auto-discovers IDA
uv run ida-pro-mcp --transport http://127.0.0.1:9999 # serve HTTP insteadПодключение MCP-клиента
Универсальная JSON-конфигурация (HTTP-транспорт):
{
"mcpServers": {
"ida-instances": {
"url": "http://your-host:9999/mcp",
"headers": {
"Authorization": "Bearer <key-from-/key>"
}
}
}
}Claude Code:
claude mcp add --transport http ida-instances http://your-host:9999/mcp \
--header "Authorization: Bearer <key-from-/key>"Для GUI-прокси через stdio выполните uv run ida-pro-mcp --config и вставьте JSON в ваш клиент.
Конфигурация (переменные окружения)
Variable | Default | Смысл |
|
| Максимум секунд на открытие + автоматический анализ до завершения ( |
|
| Страховочный тайм-аут для каждого пересылаемого вызова инструмента |
|
| Тайм-аут GUI-прокси → апстрим IDA ( |
|
| Лимит журнала трассировки, хранящегося внутри IDB |
|
| Значение |
|
| Бюджеты проверки работоспособности |
|
| Количество минут до автоматического закрытия неактивной сессии ( |
|
| Лимит для тела запроса |
|
| Каталог хранения загруженных файлов |
| – / | Задать или переместить ключ экземпляра |
|
| Бюджет сохранения на базу / общий бюджет при завершении по |
| не задано | Установите |
Заметки безопасности: ключ закрывает все HTTP-конечные точки и супервизора, и два GUI-плагина (плагин может выполнять произвольный код через
py_eval, поэтому он защищён ключом даже на loopback). Это bearer-токен — любой, кто его получит, получит в распоряжение экземпляр; добавьте обратный TLS-прокси, если ключ уходит из вашей доверенной сети. Браузер может передать ключ через?key=<key>(удобно для/config.html).
Тестирование
IDADIR=/path/to/ida uv run ida-mcp-test tests/crackme03.elf -q
IDADIR=/path/to/ida uv run ida-mcp-test tests/typed_fixture.elf -q
IDADIR=/path/to/ida uv run ida-mcp-test tests/crackme03.elf -c api_analysis # one category
IDADIR=/path/to/ida uv run coverage run -m ida_pro_mcp.test tests/crackme03.elf -qЛицензия
MIT — унаследовано от апстрима ida-pro-mcp. Имена продуктов (IDA Pro, Hex-Rays) являются товарными знаками Hex-Rays SA; этот проект требует вашей собственной действующей лицензии IDA Pro.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseCqualityAmaintenanceMCP Server for automated reverse engineering with IDA Pro.4311,479MIT
- FlicenseNot gradedqualityCmaintenanceA headless MCP server that manages multiple independent IDA Pro worker processes for reverse engineering, supporting database operations and debug tools.12
- AlicenseNot gradedqualityDmaintenanceHeadless MCP server for IDA Pro enabling on-demand database loading and programmatic reverse engineering workflows via MCP tools.18MIT
- FlicenseNot gradedqualityBmaintenanceMCP server that enables AI agents to control IDA Pro instances via Unix-socket supervisor, providing tools for decompilation, disassembly, and Python scripting.3
Related MCP Connectors
MCP Server for Slima - AI Writing IDE for Novel Authors with AI Beta Reader.
MCP server for ScanMalware.com URL scanning, malware detection, and analysis.
MCP server for Pentest-Tools.com: run scans, manage findings and reports via your preffered LLM.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Claude-Reverser/IDA-instances-MCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server