TheDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/mrexodia/ida-pro-mcp/llms.txt
Use this file to discover all available pages before exploring further.
idalib-mcp server is a supervisor process that keeps each open database in its own idalib worker subprocess. Management tools let you open binaries dynamically, switch your active context between open databases, inspect session health, and route individual tool calls to specific databases — all without restarting the server.
These tools are only present when connecting through
idalib-mcp. They do not appear when using the IDA GUI plugin (ida-pro-mcp).Opening and closing sessions
idalib_open
Open a binary in its own idalib worker process and bind it to the active MCP context.
Absolute path to the binary file to analyze.
Run IDA’s automatic analysis after loading. Set to
false to skip analysis and open the IDB faster when reloading a previously analyzed file.Custom session identifier. Auto-generated (8-character UUID prefix) if omitted. Must be unique across open sessions.
idalib_open uses that GUI instance as the backend instead of spawning a duplicate headless worker. If the GUI instance later disappears, the next routed request reopens the database headlessly.
true on success.Human-readable confirmation message.
The context ID that was bound to this session.
Error message if the open failed.
idalib_close
Close a database worker and remove all context bindings pointing to it.
Session ID to close. Obtain from
idalib_list or idalib_current.true if the session was found and closed.Confirmation message.
Error message if the session was not found or could not be closed.
Context binding
Each MCP transport connection (transport context) has an active session binding. Tools that do not pass an explicitdatabase argument are routed to the session bound to the caller’s context.
idalib_switch
Rebind the active context to an existing session without reopening it.
Session ID to bind. The session must already be open.
true on success.The session that is now bound.
idalib_current
Return the session currently bound to the active context.
IdalibSessionInfo plus context_id. Returns { "error": "No session bound..." } if the context has no binding.
idalib_unbind
Remove the active context’s session binding without closing the session.
database will fail with “No database bound for this context” until idalib_open or idalib_switch is called again.
Listing sessions
idalib_list
List all open sessions with context-binding metadata.
Total number of open sessions.
Session ID bound to the calling context, or
null if unbound.Saving and health
idalib_save
Save the current database to disk.
Destination path. Defaults to the existing IDB path when empty.
Session to save. Defaults to the context-bound session.
true when the save succeeded.Path where the IDB was saved.
Error message, or
null on success.idalib_health
Probe whether a database worker is responsive.
Session to probe. Defaults to the context-bound session.
true if the worker responded without error.Session information if available.
Raw health response from the worker.
idalib_warmup
Warm up a database worker by waiting for auto-analysis, building caches, and optionally initializing Hex-Rays. Call this after idalib_open when you want to ensure the worker is fully ready before running decompilation or search operations.
Session to warm up. Defaults to the context-bound session.
Wait for IDA’s auto-analysis queue to drain.
Build core caches (string list, function index, etc.).
Initialize the Hex-Rays decompiler plugin.
true if warmup completed successfully.Raw warmup response from the worker.
The database argument
Every analysis tool (e.g., decompile, xrefs_to, get_bytes) accepts an optional database argument when running through idalib-mcp. If omitted, the tool is routed to the session bound to the caller’s MCP context.
database accepts any of:
- A session ID (e.g.,
"binary_a") - A filename (e.g.,
"crackme.elf") - A full input path (e.g.,
"/home/user/samples/crackme.elf")
If multiple open sessions share the same filename, passing the filename as
database raises an ambiguity error. Use session IDs in that case.Proxy-level instance management
Two additional tools handle routing betweenidalib-mcp and running IDA GUI plugin instances. These are not exposed through idalib-mcp directly — they are GUI plugin routing tools.
list_instances— Discover running IDA GUI plugin instances on the local machine.select_instance— Bind the active connection to a specific GUI instance.
idalib-mcp, you will receive an error directing you to use idalib_list or idalib_switch instead.
Multi-session workflow
The following example opens two binaries, waits for analysis, then queries both in sequence.Worker limits
By default,idalib-mcp allows up to 4 simultaneous worker processes. Attempting to open a fifth database raises an error. Adjust the limit with the --max-workers flag or the IDA_MCP_MAX_WORKERS environment variable.
Isolated contexts
By default, all transport connections share a single fallback context binding. Use--isolated-contexts to give each transport connection its own independent binding — useful when multiple agents connect to the same server and need separate active databases.
- Each transport context must call
idalib_openoridalib_switchbefore using database-dependent tools. idalib_switchandidalib_openbind only the calling context.- Agents can still share a session by passing
database=session_idexplicitly.