
Serveur MCP headless IDA Pro pour l'analyse binaire assistée par IA, propulsé par idalib
CLI IDA headless et boîte à outils orientée skill pour l'analyse binaire sur macOS et Linux. ida-cli sélectionne automatiquement un backend d'exécution, démarre automatiquement un serveur local si nécessaire et expose la même surface sous forme de CLI plate, de transport MCP stdio et de transport MCP HTTP Streamable.
ida-cli (client + service dans un seul exécutable)ida-cli installable (skill/SKILL.md) pour les environnements d'agentsLa couche de service worker / routeur sous-jacente est démarrée et arrêtée automatiquement par la CLI. Vous n'avez besoin d'exécuter explicitement serve / serve-http que lorsque vous souhaitez réellement un service durable et adressable depuis l'extérieur.
La sélection du backend est effectuée à l'exécution par probe-runtime. La compilation nécessite toujours un SDK IDA, car la couche native intégrée est liée à celui-ci ; à l'exécution, la CLI ouvre elle-même IDA à partir de IDADIR ou d'un chemin d'installation courant normalisé.
Sur les runtimes IDA 9.x pris en charge, ida-cli peut :
.i64 mises en cacheread_* et convert_numberrun_scriptPoints restants : certaines opérations d'écriture intensive et d'édition avancée de types restent partielles sur idat-compat. Voir docs/TOOLS.md pour la liste des outils générés.
Le point d'entrée par défaut est le skill ida-cli, et non une installation manuelle de la CLI.
# list the skill exposed by this repository
npx -y skills add https://github.com/cpkt9762/ida-cli --list
# install the ida-cli skill for Codex
npx -y skills add https://github.com/cpkt9762/ida-cli --skill ida-cli --agent codex --yes --global
Après l'installation, le skill est livré avec son propre wrapper d'amorçage :
~/.agents/skills/ida-cli/scripts/ida-cli.sh --help
~/.agents/skills/ida-cli/scripts/ida-cli.sh probe-runtime
~/.agents/skills/ida-cli/scripts/ida-cli.sh --path /path/to/binary list-functions --limit 20
Si ida-cli est manquant, le wrapper l'installe via l'installateur du dépôt avant de transmettre la commande.
Utilisez cette option uniquement si vous souhaitez la CLI autonome sans passer par le skill.
curl -fsSL https://raw.githubusercontent.com/cpkt9762/ida-cli/master/scripts/install.sh | bash -s -- --add-path
Variantes utiles :
# install a specific release
curl -fsSL https://raw.githubusercontent.com/cpkt9762/ida-cli/master/scripts/install.sh | bash -s -- --tag v0.9.3 --add-path
# build directly from a branch or ref
curl -fsSL https://raw.githubusercontent.com/cpkt9762/ida-cli/master/scripts/install.sh | bash -s -- --ref master --build-from-source --add-path
Remarques :
~/.local/bin/ida-cli par défaut.--add-path ajoute ce répertoire bin à votre fichier rc du shell.IDASDKDIR ni IDALIB_SDK n'est défini et qu'une compilation locale est requise, l'installateur clone automatiquement le dépôt open-source HexRaysSA/ida-sdk.IDADIR explicitement avant d'installer ou d'exécuter ida-cli.git clone https://github.com/cpkt9762/ida-cli.git
cd ida-cli
export IDADIR="/Applications/IDA Professional 9.4.app/Contents/MacOS" # or a Linux install
export IDASDKDIR="/path/to/ida-sdk" # root or ida-sdk/src
cargo build --bin ida-cli
./target/debug/ida-cli --help
ida-cli est orienté client. Toute sous-commande client démarre automatiquement un serveur Streamable-HTTP local lié à un port aléatoire et écrit /tmp/ida-cli.socket pour la découverte :
./target/debug/ida-cli --path /path/to/sample.bin list-functions --limit 20
./target/debug/ida-cli --path /path/to/sample.bin decompile --addr 0x140001000
./target/debug/ida-cli --path /path/to/sample.bin raw '{"method":"get_xrefs_to","params":{"address":"0x140001000"}}'
Les commandes dont le premier argument est une sous-commande de service (serve, serve-http, serve-worker, probe-runtime) passent en mode service :
./target/debug/ida-cli serve # stdio MCP transport
./target/debug/ida-cli serve-http --bind 127.0.0.1:8765
./target/debug/ida-cli probe-runtime
Exemple de sortie du sondage du backend :
{"runtime":{"major":9,"minor":1,"build":250226},"backend":"idat-compat","supported":true,"reason":null}
{"runtime":{"major":9,"minor":4,"build":260610},"backend":"native-linked","supported":true,"reason":null}
Pour la surface complète de la CLI, voir skill/references/cli-tool-reference.md.
IDADIR (la prise en charge runtime commence à IDA 9.0)IDASDKDIR ou IDALIB_SDKLe chemin du SDK peut pointer vers l'une ou l'autre de ces structures :
/path/to/ida-sdk/path/to/ida-sdk/srcidat-compatBackend de compatibilité IDA 9.0–9.2. Il délègue à idat, exécute de courts scripts IDAPython et renvoie du JSON structuré au runtime de la CLI.
native-linkedBackend IDA 9.3+. Il se lie à la lignée idalib intégrée et ouvre les bases in-process.
~/.ida/idb/~/.ida/logs/server.log~/.ida/server.sock~/.ida/server.pid/tmp/ida-cli.socket/tmp/ida-cli-out/GitHub Actions compile et teste l'arborescence sur des runners hébergés avec le HexRaysSA/ida-sdk open-source, de sorte que la CI ne dépend d'aucune configuration machine privée.
Comportement actuel des workflows :
master exécutent une validationv0.9.3 construisent les archives de release pour Linux et macOSinstall.sh et les archives par plateformeLes binaires de release sont compilés contre des stubs du SDK. Au moment de l'installation, le lanceur généré par install.sh résout votre runtime IDA local via IDADIR ou un ensemble normalisé de chemins d'installation courants avant d'invoquer ida-cli.
MIT
| Version IDA | Backend | Notes |
|---|
< 9.0 | non pris en charge | — |
9.0 – 9.2 | idat-compat | délègue à idat + IDAPython |
9.3+ | native-linked | se lie à la idalib intégrée |