IDA-instances-MCP
IDA-instances-MCP
Eigener Build von ida-pro-mcp: ein MCP-Server, der es MCP-Clients ermöglicht, IDA Pro zu steuern – überarbeitet mit einem Durchgang zur Stabilitätshärtung, der darauf abzielt, mehrere Headless-idalib-Instanzen zu hosten (das Ida-Instances-Setup).
Dies ist ein Fork von mrexodias ida-pro-mcp (MIT). Das gesamte Verdienst am Upstream
gebührt Duncan Ogilvie und allen Mitwirkenden; die unten
beschriebenen, eigenen Änderungen werden in diesem Repository gepflegt.
Eigene Änderungen
Stabilitätshärtung gegenüber Upstream v2.0.0:
Bereich | Änderung |
Datensicherheit | Die Bereinigung von Teildatenbanken ist eigentümerbewusst: |
Speicherzuverlässigkeit |
|
Nebenläufigkeit | Die Supervisor-Sperre umfasst nicht mehr das Starten von Workern (~120 s), Health-Checks (~2,5 s/Sitzung) oder die Beendigung veralteter Worker – ein langsames Öffnen kann nicht mehr alle Sitzungen einfrieren |
Robustheit | Fehlerhafter JSON-RPC über stdio liefert |
Timeouts | Proxy-Timeout von 30 s auf 900 s angehoben und konfigurierbar gemacht ( |
Netzwerk | Worker-Port-TOCTOU verwendet nun Retries; SSE-Schreibvorgänge und das Herunterfahren sind sperrengeschützt; CORS-Richtlinienlesungen werden außerhalb des IDA-Hauptthreads gecacht |
Ressourcengrenzen | IDB-Trace-Protokoll auf 64 MB begrenzen ( |
Authentifizierung | Jede HTTP-Anfrage erfordert einen Instanz-API-Schlüssel; dieser wird über |
Hosting-Endpunkte |
|
Bereinigung im Leerlauf | Sitzungen, die |
Elegantes Herunterfahren | Bei |
Selbst-Update | Der Start prüft GitHub-Releases; bei interaktiven Sitzungen wird ein Update per Tastendruck angeboten |
Hosting-Standards | Der leitende Headless-Supervisor lauscht auf 0.0.0.0:9999; auch das GUI-Plugin bindet 0.0.0.0 und verlangt nun denselben API-Key |
Related MCP server: idalib-mcp-headless
Voraussetzungen
Linux, macOS oder Windows
Python 3.11+ (
idapyswitchinnerhalb von IDA verwenden, um sie abzustimmen)IDA Pro 8.3+ (9.x empfohlen). IDA Free wird nicht unterstützt
Ein MCP-Client (Claude Code, Cursor, Codex, Opencode, VS Code, ...)
Einrichtung
idalib für die uv-Umgebung aktivieren:
# linux (server deployment)
uv run "/opt/idapro-9.x/idalib/python/py-activate-idalib.py"
# macos
uv run "/Applications/IDA Professional 9.x.app/Contents/MacOS/idalib/python/py-activate-idalib.py"
# windows
uv run "C:\Program Files\IDA Professional 9.x\idalib\python\py-activate-idalib.py"Für Headless-Ausführungen müssen zusätzlich das IDA-Installationsverzeichnis in IDADIR angegeben.
Headless-Supervisor ausführen (Hosting-Modus)
uv run idalib-mcp # serves http://0.0.0.0:9999/mcp (new default)Beim Start wird ein API-Key generiert (oder von Festplatte geladen), und jede Anfrage ohne einen solchen erhält 401 Unauthorized — ohne Ausnahmen.
Den Key genau einmal von der Maschine/dem Netzwerk abrufen, das der Instanz gehört:
curl http://your-host:9999/key
# {"key": "3f2b..."} <- save it; this endpoint is now burned until restartDer Key bleibt unter
~/.idapro/mcp/api_key(Modus0600) und überlebt Reboots;GET /keystellt ihn einmal pro Serverstart wieder ausÜberschreibbar mit
IDA_MCP_API_KEY(oder Verlagerung überIDA_MCP_API_KEY_FILE)Alle anderen Endpunkte verlangen ihn bei jedem Aufruf:
Authorization: Bearer <key>
# or equivalently
X-API-Key: <key>Der Key wird niemals aufgezeichnet.
Hosting-Endpunkte
Endpunkt | Auth | Zweck |
| keine | Bereitschaftstest: |
| Key | Offene Datenbanken einschließlich letzter Zeitstempel |
| Key | Binär-Upload mit Rohdaten, gestreamt nach |
# provisioning flow
while ! curl -sf http://10.0.0.4:9999/health >/dev/null; do sleep 1; done
KEY=$(curl -s http://10.0.0.4:9999/key | jq -r .key)
curl -H "Authorization: Bearer $KEY" --data-binary @sample.elf \
"http://10.0.0.4:9999/upload?filename=sample.elf"Nützliche Flags:
uv run idalib-mcp --host 127.0.0.1 --port 9999 # override bind address
uv run idalib-mcp --max-workers 8 # concurrent databases (default 4, 0 = unlimited)
uv run idalib-mcp --unsafe # enable destructive/debugger tools (DANGEROUS)
uv run idalib-mcp --profile tools.txt # restrict worker tools to a profile file
uv run idalib-mcp --stdio # stdio transport instead of HTTP
uv run idalib-mcp path/to/binary # open a binary at startupSitzungsbezogene Tools: idb_open, idb_list, idb_close — pro Sitzung wird eine Datenbank geöffnet; jede Sitzung erhält einen eigenen isolierten Worker-Prozess.
GUI-Proxy ausführen (interaktives IDA)
Das Plugin in IDA starten (Edit -> Plugins -> MCP oder Ctrl+Alt+M), dann:
uv run ida-pro-mcp # stdio proxy, auto-discovers IDA
uv run ida-pro-mcp --transport http://127.0.0.1:9999 # serve HTTP insteadEinen MCP-Client verbinden
Generische JSON-Konfiguration (HTTP-Transport):
{
"mcpServers": {
"ida-instances": {
"url": "http://your-host:9999/mcp",
"headers": {
"Authorization": "Bearer <key-from-/key>"
}
}
}
}Claude Code:
claude mcp add --transport http ida-instances http://your-host:9999/mcp \
--header "Authorization: Bearer <key-from-/key>"Für den GUI-Proxy über stdio: uv run ida-pro-mcp --config ausführen und das JSON in den Client einfügen.
Konfiguration (Umgebungsvariablen)
Variable | Standard | Bedeutung |
|
| Maximale Sekunden für Öffnen + Auto-Analyse vor dem Zuschlagen ( |
|
| Auffangzeit pro weitergeleitetem Tool-Aufruf |
|
| GUI-Proxy → IDA-Upstream-Timeout ( |
|
| Begrenzung des Trace-Protokolls innerhalb der IDB |
|
| Standardwert für |
|
| Budgets für Integritätstests |
|
| Minuten, bevor eine unbewegte Sitzung automatisch geschlossen wird ( |
|
| Obergrenze für |
|
| Wo Uploads gespeichert werden |
| – / | Instanz-Key injizieren oder Speicherort verändern |
|
| Speicherbudget pro Datenbank / gesamt bei |
| unset | Auf |
Sicherheitshinweise: Der API-Key sperrt jeden HTTP-Endpunkt und gilt für Supervisor und GUI-Plugin gleichermaßen (das Plugin kann über
py_evalbeliebigen Code ausführen, daher ist es auch im Loopback mit Key gesichert). Es ist ein Bearer-Token: Wer ihn erhält, besitzt die Instanz. Ein TLS-Reverse-Proxy einbinden, sobald es Ihr sicheres Netzwerk verlässt. Browser können den Key als?key=<key>übergeben (praktisch für/config.html).
Testen
IDADIR=/path/to/ida uv run ida-mcp-test tests/crackme03.elf -q
IDADIR=/path/to/ida uv run ida-mcp-test tests/typed_fixture.elf -q
IDADIR=/path/to/ida uv run ida-mcp-test tests/crackme03.elf -c api_analysis # one category
IDADIR=/path/to/ida uv run coverage run -m ida_pro_mcp.test tests/crackme03.elf -qLizenz
MIT — übernommen aus ida-pro-mcp.
Produktnamen des Upstreams (IDA Pro, Hex-Rays) sind Marken der Hex-Rays SA; dieses
Projekt erfordert eine eigene gültige IDA-Pro-Lizenz.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseCqualityAmaintenanceMCP Server for automated reverse engineering with IDA Pro.4311,479MIT
- FlicenseNot gradedqualityCmaintenanceA headless MCP server that manages multiple independent IDA Pro worker processes for reverse engineering, supporting database operations and debug tools.12
- AlicenseNot gradedqualityDmaintenanceHeadless MCP server for IDA Pro enabling on-demand database loading and programmatic reverse engineering workflows via MCP tools.18MIT
- FlicenseNot gradedqualityBmaintenanceMCP server that enables AI agents to control IDA Pro instances via Unix-socket supervisor, providing tools for decompilation, disassembly, and Python scripting.3
Related MCP Connectors
MCP Server for Slima - AI Writing IDE for Novel Authors with AI Beta Reader.
MCP server for ScanMalware.com URL scanning, malware detection, and analysis.
MCP server for Pentest-Tools.com: run scans, manage findings and reports via your preffered LLM.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Claude-Reverser/IDA-instances-MCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server