Plugin serveur MCP autonome pour IDA Pro.
Serveur MCP (Model Context Protocol) autonome pour IDA Pro 9.x qui expose les capacités d'analyse d'IDA aux clients LLM comme Claude Desktop.

action/format/direction pour les commentaires, variables, types, xrefs, signets et codeexecute_on_main_thread()IDASSISTMCP_)hcli plugin install idassistmcp
Ceci installe automatiquement le plugin et ses dépendances Python.
Téléchargez la dernière archive zip depuis GitHub Releases et extrayez-la dans votre répertoire de plugins IDA :
Linux / macOS :
unzip IDAssistMCP-*.zip -d ~/.idapro/plugins/
Windows :
Extrayez le zip dans %APPDATA%\Hex-Rays\IDA Pro\plugins\.
Installez ensuite les dépendances en utilisant le Python intégré d'IDA (pas celui de votre système) :
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"
Remplacez
<IDA_INSTALL_DIR>par le chemin d'installation de votre IDA Pro.Astuce : Vous pouvez également utiliser la variable d'environnement
IDAUSRpour spécifier un répertoire de plugins personnalisé.
Ajoutez à votre claude_desktop_config.json :
{
"mcpServers": {
"idassistmcp": {
"url": "http://localhost:9080/mcp"
}
}
}
Configurez via des variables d'environnement avec le préfixe IDASSISTMCP_ :
| Variable | Valeur par défaut | Description |
|---|---|---|
IDASSISTMCP_SERVER__HOST | localhost | Adresse de liaison du serveur |
IDASSISTMCP_SERVER__PORT | 9080 | Port du serveur |
IDASSISTMCP_SERVER__TRANSPORT | streamablehttp | Type de transport (sse ou streamablehttp) |
IDASSISTMCP_DEBUG | false | Activer le mode débogage |
IDASSISTMCP_LOG_LEVEL | INFO | Niveau de journalisation |
| Outil | Description |
|---|---|
list_binaries | Liste le binaire actuellement chargé |
get_binary_info | Informations détaillées du binaire (architecture, hachages, segments) |
| Outil | Description |
|---|---|
get_code | Obtenir le code d'une fonction — format : 'decompile' (pseudo-C) ou 'disasm' (assembleur) |
analyze_function | Analyse complète : métadonnées, CFG, appelants/appelés, décompilation |
get_basic_blocks | Blocs de base du CFG avec successeurs/prédécesseurs |
get_function_stack_layout | Disposition de la pile (variables locales, arguments, registres sauvegardés) |
| Outil | Actions | Description |
|---|---|---|
xrefs | direction: to/from/both, include_calls: bool | Xrefs et appelants/appelés optionnels pour une adresse |
| Outil | Actions | Description |
|---|---|---|
comments | action: get, set, list, remove | Gérer les commentaires (normaux, répétables, de fonction) |
| Outil | Actions | Description |
|---|---|---|
variables | action: list, rename | Lister les variables locales, ou renommer des variables locales/globales avec scope: auto, local, global |
| Outil | Actions / Description |
|---|---|
types | action: list, set, create_struct, create_enum — gérer les types IDB |
get_classes | Liste les types struct/class de la bibliothèque de types |
| Outil | Description |
|---|---|
get_functions | Toutes les fonctions avec filtrage et pagination |
search_functions_by_name | Recherche par motif de nom et filtres de taille |
get_function_by_name | Recherche exacte par nom |
get_function_by_address | Recherche par adresse |
get_function_statistics | Statistiques agrégées (nombres, tailles, top 10) |
| Outil | Description |
|---|---|
rename_symbol | Renommer n'importe quel symbole (fonction ou donnée) |
batch_rename | Renommer plusieurs symboles en lot |
| Outil | Description |
|---|---|
get_imports | Table d'importations groupée par module |
get_exports | Table d'exportations |
get_strings | Table de chaînes avec pagination |
get_segments | Segments mémoire avec permissions |
get_entry_points | Tous les points d'entrée du binaire |
| Outil | Description |
|---|---|
read_memory | Lire les octets bruts à une adresse |
get_data_at | Obtenir des données typées à une adresse |
search_bytes | Recherche de motif d'octets binaires |
search_strings | Recherche de chaînes avec pagination |
create_data_var | Définir une variable de donnée à une adresse (byte/word/dword/qword/float/ascii/type C) |
get_data_vars | Lister les variables de données définies (éléments non-code) |
| Outil | Description |
|---|---|
patch_bytes | Pâcher des octets bruts dans l'IDB |
assemble_code | Assembler du texte d'instruction à une adresse et éventuellement le patcher |
export_program | Exporter le binaire patché ou la base de données IDA sur le disque |
| Outil | Description |
|---|---|
navigate_to | Déplacer le curseur IDA vers une adresse |
bookmarks | Gestion consolidée des signets — actions : list, set, remove |
get_current_address | Obtenir l'adresse et le contexte à la position du curseur |
get_current_function | Obtenir les informations de la fonction à la position du curseur |
| Outil | Description |
|---|---|
start_task | Démarrer une tâche asynchrone en arrière-plan |
get_task_status | Vérifier la progression d'une tâche |
cancel_task | Annuler une tâche en cours |
list_tasks | Lister toutes les tâches asynchrones |
IDAssistMCP/
├── idassistmcp_plugin.py # Point d'entrée du plugin IDA
├── requirements.txt
├── README.md
└── src/
└── idassist_mcp/
├── __init__.py
├── server.py # Serveur FastMCP + transport
├── context.py # Contexte IDA mono-binaire
├── tools.py # 41 outils MCP (API IDA)
├── resources.py # 8 ressources MCP
├── prompts.py # 7 invites de workflow guidées
├── config.py # Paramètres Pydantic
├── cache.py # Cache d'analyse LRU
├── tasks.py # Gestionnaire de tâches asynchrones
├── logging.py # Wrapper de journalisation IDA
├── utils.py # Utilitaires spécifiques à IDA
└── ui/
└── tool_registry.py # Catalogue d'outils pour l'interface utilisateur
Voir le fichier LICENSE pour plus de détails.