IDA-instances-MCP
IDA-instances-MCP
Compilación personalizada de ida-pro-mcp: un servidor MCP que permite a los clientes MCP manejar IDA Pro — rehecha con una revisión de estabilidad orientada a alojar múltiples instancias idalib sin interfaz gráfica (la configuración Ida-Instances).
Se trata de un fork del ida-pro-mcp de mrexodia (MIT). Todo el reconocimiento del upstream es para Duncan Ogilvie y sus colaboradores; los cambios propios que se describen a continuación se mantienen en este repositorio.
Qué hay de personalizado
Endurecimiento de la estabilidad sobre la v2.0.0 del upstream:
Ámbito | Cambio |
Seguridad de datos | La limpieza parcial de la base de datos es consciente de la propiedad: nunca elimina archivos |
Fiabilidad de guardado |
|
Concurrencia | El bloqueo del supervisor ya no abarca la creación de los procesos (~120 s), las comprobaciones de salud (~2,5 s/session) ni la terminación de procesos obsoletos: una apertura lenta ya no congela todas las sesiones |
Robustez | Un JSON-RPC malformado a través de stdio devuelve |
Tiempos de espera | El timeout del proxy se amplía de 30s a 900s y se hace configurable ( |
Red | El problema TOCTOU del puerto del worker ahora reconecta; la salida SSE y el cierre están protegidos con bloqueos; las políticas CORS se leen de la caché fuera del hilo principal de IDA |
Límites de recursos | El registro de trazas del IDB se limita a 64 MB ( |
Autenticación | Cada petición HTTP requiere una clave de API de la instancia; se emite exactamente una vez mediante |
Endpoints de hosting |
|
Recolección de sesiones | Las sesiones que no se toque durante |
Apierro controlado | Con |
Auto-actualización | En el inicio se consultan los lanzamientos de GitHub; las sesiones interactivas reciben la opción de actualizarse automáticamente con una tecla |
Valores por defecto | El supervisor sin interfaz gráfica escucha en 0.0.0.0:9999; el plugin de la GUI también tiene binding en 0.0.0.0 y ahora exige la misma clave de API |
Related MCP server: idalib-mcp-headless
Requisitos
Linux, macOS o Windows
Python 3.11+ (usa
idapyswitchcon el que IDA coincida)IDA Pro 8.3+ (se recomienda la 9.x). IDa Free no es compatible
Un cliente de MCP (Claude Code, Cursor, Codex, Opencode, VS Code, ...)
Instalación
Activa idalib para tu entorno de 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"Los ejecuciones sin interfaz gráfica necesitan además el directorio de instalación de IDA en IDADIR.
Cómo ejecutar el supervisor sin interfaz gráfica (modo hosting)
uv run idalib-mcp # serves http://0.0.0.0:9999/mcp (new default)Al iniciar, se generará una clave de API (o se cargará desde el disco) y toda petición que no la incluya recibirá 401 Unauthorized — no hay excepciones.
Obtén la clave una vez desde la máquina/red propietaria de la instancia:
curl http://your-host:9999/key
# {"key": "3f2b..."} <- save it; this endpoint is now burned until restartLa clave se persistí en
~/.idapro/mcp/api_key(modo0600) y sobrevive a reinicios;GET /keyla vuelve a emitir una única vez cada vez que arranca el servidorSe puede anular con
IDA_MCP_API_KEY(o se puede reubicar conIDA_MCP_API_KEY_FILE)Todos los demás endpoints la exigen en cada llamada:
Authorization: Bearer <key>
# or equivalently
X-API-Key: <key>La clave no se registra nunca en los logs.
Endpoints de hosting
Endpoint | Autorización | Propósito |
| No | Sonda de disponibilidad: |
| Clave | Bases de datos abiertas incl. última acceso |
| Clave | Subida de binario con el cuerpo bruto, transmitido en streaming a |
# 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"Opciones útiles:
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 startupHerramientas del ciclo de vida de las sesiones: idb_open, idb_list, idb_close — se abre una base de datos por sesión; cada sesión tiene su propio proceso aislado.
Ejecutar el proxy de la GUI (IDA interactivos)
Inicia el plugin en el IDA (Editar -> Plugins -> MCP, o Ctrl+Alt+M), y después:
uv run ida-pro-mcp # stdio proxy, auto-discovers IDA
uv run ida-pro-mcp --transport http://127.0.0.1:9999 # serve HTTP insteadConecta un cliente de MCPpedar
Configuración JSON genérica (transporte HTTP):
{
"mcpServers": {
"ida-instances": {
"url": "http://your-host:9999/mcp",
"headers": {
"Authorization": "Bearer <key-from-/key>"
}
}
}
}Claude:
claude mcp add --transport http ida-instances http://your-host:9999/mcp \
--header "Authorization: Bearer <key-from-/key>"Para el proxy de la GUI por stdio, ejecuta uv run ida-pro-mcp --config y pega el JSON en tu cliente.
Configuración (variables de entorno)
Variable | Valor por defecto | Significado |
|
| Número máximo de segundos para abrir + análisis automático antes de terminar el proceso ( |
|
| Tope de seguridad de la llamada tool por cada worker |
|
| Timeout del proxy de la GUI → IDA ( |
|
| Límite de size del log de trazas almacenado dentro del IDB |
|
| Valo de |
|
| Presupuestos de las sondas de disponibilidad |
|
| Minutos de inactividad; se cierra automáticamente ( |
|
| Límite para el cuerpo de |
|
| Dónde se guardan los archivos subidos |
| – / | Inyecta o mueve la clave dela instancia |
|
| Presupuesto de guardado por base de datos / total en apagado por |
| desactivado | Configuar a |
Notas de seguridad: la clave de API protege todos los endpoints HTTP del supervisor y del plugin de la interface gráfica (el plugin puede ejecutar código arbitrario con
py_eval, por lo que requiere autenticación incluso en local). Con la llave se puede controlar por completo la instancia; agrega un proxy inverso TLS si la clave va a salir de la red de confianza. Los exploradores pueden pasar la claves como?key=<clave>(útil para/config.html).
A prueba
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 -qThis 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