github Captain-AI-Hub/IDA-MCP v1.0.0
v1.0.0 — idalib-only architecture

latest release: v1.0.1
3 hours ago

What's Changed

v1.0.0 is a full architecture release: IDA-MCP now runs on headless idalib workers only — no GUI plugin, no IDA executable path, no plugin installation. Everything runs through uvx idamcp-hub stdio.

Breaking Changes

  • BREAKING: GUI support removed entirely — the IDA plugin entry (ida_mcp.py), ida-plugin.json, install.py, and the in-GUI bridge runtime are gone. GUI instances can no longer be attached to or launched.
  • BREAKING: select_database removed together with the mutable default selection. Routing is per call: an explicit instance_id always wins; with exactly one live instance it is the implicit target; with several live instances an omitted id is a loud instance_ambiguous error. Concurrent agents can never re-route each other's calls.
  • Config key ida_path removed; the only remaining launch setting is ida_python (any interpreter that can import idapro — normally IDA's bundled ida-python runtime).

Features

  • Operation interruption (design borrowed from Hex-Rays' ida-nexus): tool calls that carry a timeout get an operation id; on client-side timeout the still-running code is interrupted on the instance — IDA's native cancel switch for stuck SDK calls, plus a PyThreadState_SetAsyncExc injection for pure-Python loops. A hung py_eval("while True: pass") now unwinds in milliseconds instead of pinning the worker forever. Verified end to end: after interruption the worker keeps answering.
  • Debugger works headless: dbg_start loads the platform's local debugger itself (debugger parameter for remote names like gdb) and places an entry-point breakpoint for a deterministic suspend.
  • Call stack rebuilt on IDA 9: IDA 9 removed get_call_stack/walk_stack without replacements; dbg_callstack now reconstructs the stack from the frame-pointer chain (RBP/EBP/X29), including the entry-instruction case where the prologue has not run.
  • Safe memory access under IDA 9: dbg_read_mem uses the ida_idd.dbg_read_memory wrapper (the legacy 2-arg form raises TypeError on 9.4).
  • Test suite now compiles its own ELF sample with a known call chain (main → level1 → level2 → level3) and runs a real debugger session headlessly — previously always skipped.

Bug Fixes

  • fix(lifecycle): actually interrupt timed-out py_eval in idalib workers — the async exception was injected into the executor thread that merely waits on the future, while user code runs on the worker's main thread; the queued closure now re-registers the executing thread at run time. Client-side timeouts are also classified correctly so the auto-cancel hooks fire, and the CLI tool-call path gained the same cancellation as the MCP server.

Installation

hcli ida install --download-id ida-pro:latest --set-default --accept-eula --yes
uvx idamcp-hub stdio

Full Changelog: v0.9.8...v1.0.0

Don't miss a new IDA-MCP release

NewReleases is sending notifications on new releases.