Plugin server MCP autonomo per IDA Pro.
Plugin server MCP (Model Context Protocol) standalone per IDA Pro 9.x che espone le capacità di analisi di IDA a client LLM come Claude Desktop.

action/format/direction per commenti, variabili, tipi, xref, segnalibri e codiceexecute_on_main_thread()IDASSISTMCP_hcli plugin install idassistmcp
Questo installa automaticamente il plugin e le sue dipendenze Python.
Scarica l'ultimo zip di rilascio da GitHub Releases ed estrailo nella directory dei plugin IDA:
Linux / macOS:
unzip IDAssistMCP-*.zip -d ~/.idapro/plugins/
Windows:
Estrai lo zip in %APPDATA%\Hex-Rays\IDA Pro\plugins\.
Poi installa le dipendenze usando il Python in bundle di IDA (non il Python di 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"
Sostituisci
<IDA_INSTALL_DIR>con il percorso di installazione di IDA Pro.Suggerimento: Puoi anche usare la variabile d'ambiente
IDAUSRper specificare una directory personalizzata per i plugin.
Aggiungi al tuo claude_desktop_config.json di Claude Desktop:
{
"mcpServers": {
"idassistmcp": {
"url": "http://localhost:9080/mcp"
}
}
}
Configura tramite variabili d'ambiente con il prefisso IDASSISTMCP_:
| Variabile | Default | Descrizione |
|---|---|---|
IDASSISTMCP_SERVER__HOST | localhost | Indirizzo di bind del server |
IDASSISTMCP_SERVER__PORT | 9080 | Porta del server |
IDASSISTMCP_SERVER__TRANSPORT | streamablehttp | Tipo di trasporto (sse o streamablehttp) |
IDASSISTMCP_DEBUG | false | Abilita modalità debug |
IDASSISTMCP_LOG_LEVEL | INFO | Livello di log |
| Strumento | Descrizione |
|---|---|
list_binaries | Elenca il binario attualmente caricato |
get_binary_info | Metadati binari dettagliati (architettura, hash, segmenti) |
| Strumento | Descrizione |
|---|---|
get_code | Ottieni il codice della funzione — format: 'decompile' (pseudo-C) o 'disasm' (assembly) |
analyze_function | Analisi completa: metadati, CFG, chiamanti/chiamati, decompilazione |
get_basic_blocks | Blocchi di base del CFG con successori/predecessori |
get_function_stack_layout | Layout dello stack frame (locali, argomenti, registri salvati) |
| Strumento | Azioni | Descrizione |
|---|---|---|
xrefs | direction: to/from/both, include_calls: bool | Riferimenti incrociati e, opzionalmente, chiamanti/chiamati per un indirizzo |
| Strumento | Azioni | Descrizione |
|---|---|---|
comments | action: get, set, list, remove | Gestisci commenti (regolari, ripetibili, di funzione) |
| Strumento | Azioni | Descrizione |
|---|---|---|
variables | action: list, rename | Elenca variabili locali, o rinomina variabili locali/globali con scope: auto, local, global |
| Strumento | Azioni / Descrizione |
|---|---|
types | action: list, set, create_struct, create_enum — gestisci i tipi IDB |
get_classes | Elenca tipi struct/class dalla libreria dei tipi |
| Strumento | Descrizione |
|---|---|
get_functions | Tutte le funzioni con filtro e paginazione |
search_functions_by_name | Cerca per pattern del nome e filtri di dimensione |
get_function_by_name | Ricerca per nome esatto |
get_function_by_address | Ricerca per indirizzo |
get_function_statistics | Statistiche aggregate (conteggi, dimensioni, top-10) |
| Strumento | Descrizione |
|---|---|
rename_symbol | Rinomina qualsiasi simbolo (funzione o dato) |
batch_rename | Rinomina in batch più simboli |
| Strumento | Descrizione |
|---|---|
get_imports | Tabella delle importazioni raggruppata per modulo |
get_exports | Tabella delle esportazioni |
get_strings | Tabella delle stringhe con paginazione |
get_segments | Segmenti di memoria con permessi |
get_entry_points | Tutti i punti di ingresso binari |
| Strumento | Descrizione |
|---|---|
read_memory | Legge byte grezzi a un indirizzo |
get_data_at | Ottieni dati tipizzati a un indirizzo |
search_bytes | Ricerca pattern di byte binari |
search_strings | Ricerca stringhe con paginazione |
create_data_var | Definisci variabile dati a un indirizzo (byte/word/dword/qword/float/ascii/tipo C) |
get_data_vars | Elenca variabili dati definite (elementi non codice) |
| Strumento | Descrizione |
|---|---|
patch_bytes | Applica patch di byte grezzi nell'IDB |
assemble_code | Assembla testo di istruzione a un indirizzo e, opzionalmente, applica la patch |
export_program | Esporta il binario patchato o database IDA su disco |
| Strumento | Descrizione |
|---|---|
navigate_to | Sposta il cursore IDA a un indirizzo |
bookmarks | Gestione consolidata dei segnalibri - azioni: list, set, remove |
get_current_address | Ottieni indirizzo e contesto alla posizione del cursore |
get_current_function | Ottieni informazioni sulla funzione alla posizione del cursore |
| Strumento | Descrizione |
|---|---|
start_task | Avvia attività asincrona in background |
get_task_status | Controlla stato di avanzamento attività |
cancel_task | Annulla attività in esecuzione |
list_tasks | Elenca tutte le attività asincrone |
IDAssistMCP/
├── idassistmcp_plugin.py # Punto di ingresso del plugin IDA
├── requirements.txt
├── README.md
└── src/
└── idassist_mcp/
├── __init__.py
├── server.py # Server FastMCP + trasporto
├── context.py # Contesto IDA a singolo binario
├── tools.py # 41 strumenti MCP (API IDA)
├── resources.py # 8 risorse MCP
├── prompts.py # 7 prompt di flussi di lavoro guidati
├── config.py # Impostazioni Pydantic
├── cache.py # Cache di analisi LRU
├── tasks.py # Gestore attività asincrone
├── logging.py # Wrapper logging IDA
├── utils.py # Utility specifiche IDA
└── ui/
└── tool_registry.py # Catalogo strumenti per UI
Vedere il file LICENSE per i dettagli.