Skip to main content

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

When you have more than one IDA Pro database open simultaneously — for example, a main executable alongside a shared library, or two versions of the same binary — the MCP server can discover all running instances and route tool calls to any of them. Each MCP transport session tracks its own active target, so multiple agents can operate on different databases through the same server.

Auto-discovery

When ida-pro-mcp starts without an explicit --ida-rpc argument, it automatically discovers all running IDA instances:
  • No instances found — falls back to the default 127.0.0.1:13337.
  • One instance found — connects automatically and logs the binary name.
  • Multiple instances found — lists them all, auto-selects the first one, and suggests using select_instance to switch.
[MCP] Found 2 IDA instances:
  [0] crackme.exe at 127.0.0.1:13337
  [1] library.dll at 127.0.0.1:13338
[MCP] Auto-selected: crackme.exe. Use select_instance tool to switch.

Instance management tools

list_instances

Lists all discovered IDA Pro instances, with reachability and active status for each:
[
  { "host": "127.0.0.1", "port": 13337, "binary": "crackme.exe", "reachable": true, "active": true },
  { "host": "127.0.0.1", "port": 13338, "binary": "library.dll", "reachable": true, "active": false }
]
Each entry includes host, port, binary, idb_path, pid, started_at, reachable, and active.

select_instance

Switches this MCP session to proxy all subsequent tool calls to a different IDA instance. Use list_instances first to find the target port:
select_instance(port=13338)
Pass port=0 to reset to the default auto-discovered target.
select_instance affects only the current MCP transport session. Other connected agents are not affected.

open_file

Opens a binary in a new IDA Pro instance. Requires at least one IDA instance to already be running (it delegates to a live instance to launch the new one):
open_file(
    file_path="/path/to/another_binary.exe",
    switch=True,       # automatically select the new instance
    autonomous=False,  # suppress IDA dialogs (-A flag)
    new_database=False # force a new IDB even if one exists
)
Once the new instance registers (within timeout seconds), the MCP session is automatically switched to it if switch=True.

Session-level routing

Each MCP transport session maintains its own active IDA target independently. This means:
  • Two agents connected to the same ida-pro-mcp server can target different IDA instances simultaneously.
  • Switching instances with select_instance in one session does not affect other sessions.
  • The server proxies all non-local tool calls to the selected target for that session.
The local tools list_instances, select_instance, and open_file are always handled by the MCP proxy itself and are never forwarded to IDA.

Example use cases

Compare two binary versions

Open v1 and v2 of the same binary in separate IDA instances. Use select_instance to switch between them and compare decompilation output for changed functions.

Analyze library and main binary

Open an executable and its statically linked library in separate instances. Cross-reference exports from the library against call sites in the main binary.

Parallel agent analysis

Run two LLM agents concurrently, each connected to the same MCP server but targeting different instances via select_instance in separate sessions.

Progressive file opening

Start with one binary, discover additional dependencies during analysis, and open them on demand with open_file without restarting the MCP server.

Build docs developers (and LLMs) love