Eigenständiges MCP-Server-Plugin für IDA Pro.
Eigenständiges MCP (Model Context Protocol) Server-Plugin für IDA Pro 9.x, das IDAs Analysefähigkeiten für LLM-Clients wie Claude Desktop bereitstellt.

action/format/direction-Parametern für Kommentare, Variablen, Typen, Querverweise, Lesezeichen und Codeexecute_on_main_thread()-WrapperIDASSISTMCP_)hcli plugin install idassistmcp
Dies installiert automatisch das Plugin und seine Python-Abhängigkeiten.
Laden Sie das neueste Release-Zip von GitHub Releases herunter und extrahieren Sie es in Ihr IDA-Plugins-Verzeichnis:
Linux / macOS:
unzip IDAssistMCP-*.zip -d ~/.idapro/plugins/
Windows:
Extrahieren Sie das Zip in %APPDATA%\Hex-Rays\IDA Pro\plugins\.
Installieren Sie dann die Abhängigkeiten mit IDAs mitgeliefertem Python (nicht Ihrem System-Python):
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"
Ersetzen Sie
<IDA_INSTALL_DIR>durch Ihren IDA Pro-Installationspfad.Tipp: Sie können auch die Umgebungsvariable
IDAUSRverwenden, um ein benutzerdefiniertes Plugins-Verzeichnis anzugeben.
Fügen Sie zu Ihrer Claude Desktop-claude_desktop_config.json hinzu:
{
"mcpServers": {
"idassistmcp": {
"url": "http://localhost:9080/mcp"
}
}
}
Konfigurieren Sie über Umgebungsvariablen mit dem Präfix IDASSISTMCP_:
| Variable | Standard | Beschreibung |
|---|---|---|
IDASSISTMCP_SERVER__HOST | localhost | Server-Bind-Adresse |
IDASSISTMCP_SERVER__PORT | 9080 | Server-Port |
IDASSISTMCP_SERVER__TRANSPORT | streamablehttp | Transporttyp (sse oder streamablehttp) |
IDASSISTMCP_DEBUG | false | Debug-Modus aktivieren |
IDASSISTMCP_LOG_LEVEL | INFO | Protokollebene |
| Werkzeug | Beschreibung |
|---|---|
list_binaries | Aktuell geladene Binärdatei auflisten |
get_binary_info | Detaillierte Binärmetadaten (Architektur, Hashes, Segmente) |
| Werkzeug | Beschreibung |
|---|---|
get_code | Funktionscode abrufen — format: 'decompile' (Pseudo-C) oder 'disasm' (Assembler) |
analyze_function | Umfassende Analyse: Metadaten, CFG, Aufrufer/Aufgerufene, Dekompilierung |
get_basic_blocks | CFG-Grundblöcke mit Nachfolgern/Vorgängern |
get_function_stack_layout | Stack-Frame-Layout (Lokale, Argumente, gesicherte Register) |
| Werkzeug | Aktionen | Beschreibung |
|---|---|---|
xrefs | direction: to/from/both, include_calls: bool | Querverweise und optionale Aufrufer/Aufgerufene für eine Adresse |
| Werkzeug | Aktionen | Beschreibung |
|---|---|---|
comments | action: get, set, list, remove | Kommentare verwalten (reguläre, wiederholbare, Funktionskommentare) |
| Werkzeug | Aktionen | Beschreibung |
|---|---|---|
variables | action: list, rename | Lokale auflisten oder lokale/globale Variablen umbenennen mit scope: auto, local, global |
| Werkzeug | Aktionen / Beschreibung |
|---|---|
types | action: list, set, create_struct, create_enum — IDB-Typen verwalten |
get_classes | Struktur-/Klassentypen aus der Typbibliothek auflisten |
| Werkzeug | Beschreibung |
|---|---|
get_functions | Alle Funktionen mit Filterung und Seitenumbruch |
search_functions_by_name | Suche nach Namensmuster und Größenfiltern |
get_function_by_name | Exakte Namenssuche |
get_function_by_address | Adresssuche |
get_function_statistics | Aggregierte Statistiken (Anzahl, Größen, Top 10) |
| Werkzeug | Beschreibung |
|---|---|
rename_symbol | Beliebiges Symbol umbenennen (Funktion oder Daten) |
batch_rename | Stapelumbenennung mehrerer Symbole |
| Werkzeug | Beschreibung |
|---|---|
get_imports | Importtabelle nach Modulen gruppiert |
get_exports | Exporttabelle |
get_strings | Zeichenkettentabelle mit Seitenumbruch |
get_segments | Speichersegmente mit Berechtigungen |
get_entry_points | Alle Binäreinstiegspunkte |
| Werkzeug | Beschreibung |
|---|---|
read_memory | Rohe Bytes an einer Adresse lesen |
get_data_at | Typisierte Daten an Adresse abrufen |
search_bytes | Binäres Bytepattermuster suchen |
search_strings | Zeichenkettensuche mit Seitenumbruch |
create_data_var | Datenvariable an Adresse definieren (Byte/Word/DWord/QWord/Float/ASCII/C-Typ) |
get_data_vars | Definierte Datenvariablen auflisten (Nicht-Code-Elemente) |
| Werkzeug | Beschreibung |
|---|---|
patch_bytes | Rohe Bytes in IDB patchen |
assemble_code | Anweisungstext an einer Adresse assemblieren und optional patchen |
export_program | Die gepatchte Binärdatei oder IDA-Datenbank auf Datenträger exportieren |
| Werkzeug | Beschreibung |
|---|---|
navigate_to | IDA-Cursor an Adresse bewegen |
bookmarks | Konsolidierte Lesezeichenverwaltung - Aktionen: list, set, remove |
get_current_address | Adresse und Kontext an Cursorposition abrufen |
get_current_function | Funktionsinformationen an Cursorposition abrufen |
| Werkzeug | Beschreibung |
|---|---|
start_task | Asynchrone Hintergrundaufgabe starten |
get_task_status | Aufgabenfortschritt prüfen |
cancel_task | Laufende Aufgabe abbrechen |
list_tasks | Alle asynchronen Aufgaben auflisten |
IDAssistMCP/
├── idassistmcp_plugin.py # IDA Plugin-Einstiegspunkt
├── requirements.txt
├── README.md
└── src/
└── idassist_mcp/
├── __init__.py
├── server.py # FastMCP-Server + Transport
├── context.py # IDA-Kontext für einzelne Binärdatei
├── tools.py # 41 MCP-Werkzeuge (IDA-API)
├── resources.py # 8 MCP-Ressourcen
├── prompts.py # 7 geführte Workflow-Prompts
├── config.py # Pydantic-Einstellungen
├── cache.py # LRU-Analyse-Cache
├── tasks.py # Asynchroner Aufgabenmanager
├── logging.py # IDA-Protokollierungs-Wrapper
├── utils.py # IDA-spezifische Dienstprogramme
└── ui/
└── tool_registry.py # Werkzeugkatalog für die Benutzeroberfläche
Siehe Lizenzdatei für Details.