Plugin de servidor MCP independiente para IDA Pro.
Plugin de servidor MCP (Protocolo de Contexto de Modelo) independiente para IDA Pro 9.x que expone las capacidades de análisis de IDA a clientes LLM como Claude Desktop.

action/format/direction para comentarios, variables, tipos, referencias cruzadas, marcadores y códigoexecute_on_main_thread()IDASSISTMCP_)hcli plugin install idassistmcp
Esto instala automáticamente el plugin y sus dependencias de Python.
Descarga el archivo zip de la última versión desde GitHub Releases y extráelo en tu directorio de plugins de IDA:
Linux / macOS:
unzip IDAssistMCP-*.zip -d ~/.idapro/plugins/
Windows:
Extrae el zip en %APPDATA%\Hex-Rays\IDA Pro\plugins\.
Luego instala las dependencias usando el Python incluido con IDA (no el Python de tu sistema):
Linux / macOS:
<IDA_INSTALL_DIR>/python3/bin/pip3 install -r ~/.idapro/plugins/IDAssistMCP/requirements.txt
Windows:
"<IDA_INSTALL_DIR>\python3\python.exe" -m pip install -r "%APPDATA%\Hex-Rays\IDA Pro\plugins\IDAssistMCP\requirements.txt"
Reemplaza
<IDA_INSTALL_DIR>con la ruta de instalación de IDA Pro.Consejo: También puedes usar la variable de entorno
IDAUSRpara especificar un directorio de plugins personalizado.
Agrega a tu claude_desktop_config.json de Claude Desktop:
{
"mcpServers": {
"idassistmcp": {
"url": "http://localhost:9080/mcp"
}
}
}
Configura mediante variables de entorno con el prefijo IDASSISTMCP_:
| Variable | Default | Descripción |
|---|---|---|
IDASSISTMCP_SERVER__HOST | localhost | Dirección de enlace del servidor |
IDASSISTMCP_SERVER__PORT | 9080 | Puerto del servidor |
IDASSISTMCP_SERVER__TRANSPORT | streamablehttp | Tipo de transporte (sse o streamablehttp) |
IDASSISTMCP_DEBUG | false | Habilitar modo depuración |
IDASSISTMCP_LOG_LEVEL | INFO | Nivel de registro |
| Herramienta | Descripción |
|---|---|
list_binaries | Listar el binario cargado actualmente |
get_binary_info | Metadatos detallados del binario (arquitectura, hashes, segmentos) |
| Herramienta | Descripción |
|---|---|
get_code | Obtener código de función — format: 'decompile' (pseudo-C) o 'disasm' (ensamblador) |
analyze_function | Análisis completo: metadatos, CFG, llamantes/llamados, descompilación |
get_basic_blocks | Bloques básicos del CFG con sucesores/predecesores |
get_function_stack_layout | Diseño del marco de pila (variables locales, argumentos, registros guardados) |
| Herramienta | Acciones | Descripción |
|---|---|---|
xrefs | direction: to/from/both, include_calls: bool | Referencias cruzadas y llamantes/llamados opcionales para una dirección |
| Herramienta | Acciones | Descripción |
|---|---|---|
comments | action: get, set, list, remove | Gestionar comentarios (normales, repetibles, de función) |
| Herramienta | Acciones | Descripción |
|---|---|---|
variables | action: list, rename | Listar variables locales, o renombrar variables locales/globales con scope: auto, local, global |
| Herramienta | Acciones / Descripción |
|---|---|
types | action: list, set, create_struct, create_enum — gestionar tipos IDB |
get_classes | Listar tipos struct/class de la biblioteca de tipos |
| Herramienta | Descripción |
|---|---|
get_functions | Todas las funciones con filtrado y paginación |
search_functions_by_name | Buscar por patrón de nombre y filtros de tamaño |
get_function_by_name | Búsqueda por nombre exacto |
get_function_by_address | Búsqueda por dirección |
get_function_statistics | Estadísticas agregadas (conteos, tamaños, top-10) |
| Herramienta | Descripción |
|---|---|
rename_symbol | Renombrar cualquier símbolo (función o dato) |
batch_rename | Renombrar múltiples símbolos por lotes |
| Herramienta | Descripción |
|---|---|
get_imports | Tabla de importaciones agrupada por módulo |
get_exports | Tabla de exportaciones |
get_strings | Tabla de cadenas con paginación |
get_segments | Segmentos de memoria con permisos |
get_entry_points | Todos los puntos de entrada del binario |
| Herramienta | Descripción |
|---|---|
read_memory | Leer bytes en bruto en una dirección |
get_data_at | Obtener datos tipados en una dirección |
search_bytes | Búsqueda de patrón de bytes binarios |
search_strings | Búsqueda de cadenas con paginación |
create_data_var | Definir variable de datos en una dirección (byte/word/dword/qword/float/ascii/tipo C) |
get_data_vars | Listar variables de datos definidas (elementos que no son código) |
| Herramienta | Descripción |
|---|---|
patch_bytes | Parchear bytes en bruto en el IDB |
assemble_code | Ensamblar texto de instrucción en una dirección y opcionalmente parchearlo |
export_program | Exportar el binario parcheado o la base de datos de IDA al disco |
| Herramienta | Descripción |
|---|---|
navigate_to | Mover el cursor de IDA a una dirección |
bookmarks | Gestión consolidada de marcadores - acciones: list, set, remove |
get_current_address | Obtener dirección y contexto en la posición del cursor |
get_current_function | Obtener información de la función en la posición del cursor |
| Herramienta | Descripción |
|---|---|
start_task | Iniciar tarea asíncrona en segundo plano |
get_task_status | Verificar el progreso de la tarea |
cancel_task | Cancelar tarea en ejecución |
list_tasks | Listar todas las tareas asíncronas |
IDAssistMCP/
├── idassistmcp_plugin.py # Punto de entrada del plugin de IDA
├── requirements.txt
├── README.md
└── src/
└── idassist_mcp/
├── __init__.py
├── server.py # Servidor FastMCP + transporte
├── context.py # Contexto IDA de binario único
├── tools.py # 41 herramientas MCP (API de IDA)
├── resources.py # 8 recursos MCP
├── prompts.py # 7 indicaciones de flujo de trabajo guiado
├── config.py # Configuración Pydantic
├── cache.py # Caché de análisis LRU
├── tasks.py # Gestor de tareas asíncronas
├── logging.py # Envoltorio de registro de IDA
├── utils.py # Utilidades específicas de IDA
└── ui/
└── tool_registry.py # Catálogo de herramientas para UI
Consulta el archivo LICENSE para obtener más detalles.