IDAssistMCP
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.

Fonctionnalités
- 41 outils MCP couvrant l'analyse binaire, la décompilation, les références croisées, la gestion des symboles, le système de types, la navigation, le patching, l'exportation, etc.
- 6 outils consolidés avec paramètres
action/format/direction pour les commentaires, variables, types, xrefs, signets et code
- 8 ressources MCP pour les métadonnées binaires consultables (tri, fonctions, importations, exportations, chaînes, informations, segments, sections)
- 7 invites guidées pour les workflows courants de rétro-ingénierie (analyse de fonction, identification de vulnérabilité, documentation, traçage de flux de données, comparaison de fonctions, récupération de structure, analyse de protocole réseau)
- Transports SSE et HTTP streamable via le serveur ASGI Hypercorn
- Modifications IDB thread-safe via le wrapper
execute_on_main_thread()
- Cache d'analyse LRU pour les opérations coûteuses comme la décompilation
- Gestionnaire de tâches asynchrones pour les opérations longues
- Configuration Pydantic avec prise en charge des variables d'environnement (préfixe
IDASSISTMCP_)
Installation
Prérequis
- IDA Pro 9.x avec Python 3.10+
- Décompilateur Hex-Rays (optionnel, pour les outils de décompilation)
Option 1 : Gestionnaire de plugins IDA (recommandé)
hcli plugin install idassistmcp
Ceci installe automatiquement le plugin et ses dépendances Python.
Option 2 : Installation manuelle (à partir de l'archive de version)
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 IDAUSR pour spécifier un répertoire de plugins personnalisé.
Utilisation
Démarrage du serveur
- Ouvrez un binaire dans IDA Pro
- Appuyez sur Ctrl+Shift+M ou allez dans Edit > Plugins > IDAssistMCP
- L'URL du serveur MCP sera affichée dans la fenêtre de sortie d'IDA
- Appuyez à nouveau sur Ctrl+Shift+M pour arrêter le serveur
Configuration de Claude Desktop
Ajoutez à votre claude_desktop_config.json :
{
"mcpServers": {
"idassistmcp": {
"url": "http://localhost:9080/mcp"
}
}
}
Variables d'environnement
Configurez via des variables d'environnement avec le préfixe IDASSISTMCP_ :
Référence des outils
Gestion des binaires (2)
| Outil | Description |
|---|
list_binaries | Liste le binaire actuellement chargé |
get_binary_info | Informations détaillées du binaire (architecture, hachages, segments) |
Analyse de code (4)
Références croisées (1 consolidé)
| 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) |
Variables (1 consolidé)
| Outil | Actions | Description |
|---|
variables | action: list, rename | Lister les variables locales, ou renommer des variables locales/globales avec scope: auto, local, global |
Types (2 — 1 consolidé + 1 autonome)
| 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 |
Découverte de fonctions (5)
Gestion des symboles (2)
| Outil | Description |
|---|
rename_symbol | Renommer n'importe quel symbole (fonction ou donnée) |
batch_rename | Renommer plusieurs symboles en lot |
Analyse de données (6)
Patching (3)
| 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 |
Navigation (4)
Gestion des tâches (4)
| Outil | Description |
|---|
start_task | Démarrer une tâche asynchrone en arrière-plan |
get_task_status |
Structure du projet
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
Licence
Voir le fichier LICENSE pour plus de détails.