Featured

Deploy OpenClaw in 60 seconds — 20% off logoDeploy OpenClaw in 60 seconds — 20% off

Launch OpenClaw on Hostinger in about 60 seconds and keep your agent live 24/7. Our referral link gives you 20% off, no coupon code needed.

Launch on Hostinger
Run your Hermes agent on Hostinger, fully managed logoRun your Hermes agent on Hostinger, fully managed

Launch Hermes on Hostinger in one click, fully managed, no VPS knowledge needed. Use code ZACAARON10 for 10% off.

Launch on Hostinger
Crawl and scrape any site into clean data, 10% off logoCrawl and scrape any site into clean data, 10% off

Firecrawl crawls and scrapes any site into clean markdown for your agent. Get 1,000 free credits, and new users get 10% off their first purchase.

Try Firecrawl free
6,000+ web scrapers for your AI agent, start free logo6,000+ web scrapers for your AI agent, start free

Apify gives your agent live web data: 6,000+ prebuilt scrapers and actors, MCP-ready. Sign up free with $5 in usage credits.

Try Apify free
One API to scrape, enrich, and extract the internet. logoOne API to scrape, enrich, and extract the internet.

Context.dev gives your agents a single API to scrape, enrich, and extract live web data — no proxies, no parsers, no maintenance.

Start building free
SetupClaw: done-for-you OpenClaw for founders & exec teams logoSetupClaw: done-for-you OpenClaw for founders & exec teams

White-glove OpenClaw for founders and exec teams (4–50+ employees): we install, harden, integrate your tools, and maintain it — secured from day one.

Get it set up for you
SEO data APIs for your agent, $1 free credit logoSEO data APIs for your agent, $1 free credit

DataForSEO gives your agent live access to SERP results, keyword data, backlinks, and on-page SEO data through one API. New accounts get a $1 credit, good for up to 20,000 keyword or backlink lookups.

Try DataForSEO free
Reach 48,000+ AI builders

A flat monthly placement in front of developers actively installing AI tools. No lock-in, cancel anytime.

Advertise here

Works with

Claude CodeClaude DesktopCursorVS CodeClineCodex CLIOpenClaw+ any MCP client

Install to Claude Code

This server doesn't publish a one-line install command. Follow the setup in the source repository.

Summary

Exposes IDA Pro's analysis capabilities through the Model Context Protocol (MCP). Provides 247 tools for reverse engineering and binary analysis.

README.md

IDAPro-MCP Server

Exposes IDA Pro's analysis capabilities through the Model Context Protocol (MCP). Provides 247 tools for reverse engineering and binary analysis. Supports headless operation via IDA's idalib (no GUI required) and optional GUI plugin mode for interactive IDA Pro sessions.

Requirements

  • Python 3.10 or later
  • IDA Pro 8.3 or later (for headless idalib mode)
  • The mcp Python package (installed automatically)

Installation

pip install -e .

This installs the IDAPro-MCP package in editable mode, making the IDAPro-MCP command available.

Running the Server

Stdio transport (default, for MCP clients)

IDAPro-MCP

The server listens on stdin/stdout using the MCP protocol. Most MCP clients connect this way.

HTTP/SSE transport

IDAPro-MCP --http --port 8744

Useful for remote access or when multiple clients need to share one server instance.

Tool exposure modes

The server supports three levels of tool visibility. This affects which tools the MCP client sees during list_tools.

| Mode | Visible tools | Use case | |------|---------------|----------| | dynamic (default) | 5 discovery tools | Minimizes context window; tools load on demand via load_toolset | | aliased | 5 meta-tools + 5 discovery | Groups 247 operations into 5 parameterized tools (inspect, analyze, modify, debug, search) | | full | All 247 tools | Maximum discoverability; all tools visible at once |

IDAPro-MCP --tool-mode dynamic
IDAPro-MCP --tool-mode aliased
IDAPro-MCP --tool-mode full

Unsafe operations

Some tools modify the database (patch bytes, rename, define functions) or control the debugger. These are hidden unless --unsafe is passed:

IDAPro-MCP --unsafe

All flags

IDAPro-MCP --help

Output:

usage: __main__.py [-h] [--unsafe] [--http] [--host HOST] [--port PORT]
                   [--install] [--uninstall]
                   [--tool-mode {dynamic,aliased,full}]

options:
  -h, --help            show this help message and exit
  --unsafe              Enable unsafe operations (debugger, destructive tools)
  --http                Use HTTP/SSE transport instead of stdio
  --host HOST           Host to bind HTTP server to (default: 127.0.0.1)
  --port PORT           Port for HTTP server (default: 8744)
  --install             Install the IDA Pro plugin
  --uninstall           Uninstall the IDA Pro plugin
  --tool-mode           Tool exposure mode: 'dynamic' (default, 3 tools
                        initially), 'aliased' (5 meta-tools), 'full' (all 247
                        tools)

Tool Categories

The 247 tools are organized into 24 categories. Discovery tools (discover_categories, load_toolset, open_target, close_target, list_resources) are always visible. Other tools become available after loading their category.

| Category | Tools | Description | |---|---|---| | core | 11 | Server health, IDB operations, instance management | | functions | 28 | Query, analyze, create, delete, and modify functions | | memory | 18 | Read bytes, ints, floats, strings; data flags; address navigation | | instructions | 17 | Disassembly, operands, mnemonics, flow break checks | | search | 8 | Search bytes, text, immediates, regex across the binary | | imports_exports | 11 | List imports, exports, and entry points | | segments | 13 | List, look up, and inspect memory segments | | xrefs | 17 | Cross-references: code/data, callers/callees, reads/writes | | strings | 8 | List and search strings; ASCII and Unicode | | analysis | 4 | Function analysis, binary survey, data flow tracing | | decompilation | 6 | Decompile, disassemble, microcode, flowchart, basic blocks | | types | 10 | Query, declare, apply, infer types; structs, enums | | names | 12 | Get, set, delete, demangle names; visibility flags | | heads | 3 | Enumerate defined items, check if code or data | | comments | 11 | Set, get, delete comments and bookmarks | | modification | 6 | Define/undefine functions, rename, patch bytes/asm, create data | | stack | 3 | Inspect and declare stack variables | | patches | 5 | Revert patches, list patches, undo/redo | | signatures | 5 | Generate signatures, apply FLIRT | | python | 2 | Execute arbitrary Python in IDA context | | debugger | 18 | Start/stop debugger, breakpoints, registers, memory read/write | | info | 16 | Binary metadata, architecture, hashes, analysis status | | hooks | 5 | Install and remove IDA event hooks | | flow | 5 | Call graphs, cyclomatic complexity, critical paths |

Aliased tools (--tool-mode aliased)

When using aliased mode, five parameterized tools group related operations:

  • inspect — inspect functions, segments, strings, memory, names, types, imports, exports
  • analyze — analyze function, binary survey, component analysis, data flow trace
  • modify — patch bytes, patch asm, rename, define function, make data, set comment, undo/redo
  • debug — start/stop debugger, step, breakpoints, registers, memory
  • search — search bytes, text, immediates, regex, strings

Each takes an artifact and action parameter to select the specific operation.

Architecture

MCP Client
    |  stdio / HTTP SSE (MCP Protocol)
    v
+-----------------------------------------+
| IDAPro-MCP Server                       |
|  - 247 tools across 24 categories       |
|  - Dynamic tool registry                |
|  - Instance router                      |
|  - Session manager                      |
+--+-------+-------+-------+--------------+
   |       |       |       |  HTTP JSON-RPC
   v       v       v       v
 idalib   idalib   idalib  IDA GUI
 (bin1)   (bin2)   (bin3)  (plugin)

The server routes tool calls to the appropriate IDA Pro session. Each session can be either:

  • A headless idalib subprocess (spawned per binary via open_target)
  • A GUI IDA Pro instance (connected via the optional plugin)

Multi-instance support

The server can manage multiple IDA Pro sessions simultaneously. Each session has a unique instance_id. Tool calls target a specific instance, or the most recently active one if none is specified.

Usage

Opening a binary

The open_target tool starts a headless idalib session for a binary file:

open_target(path="/path/to/binary.exe")

Returns an instance_id that subsequent tools can use to target this session.

Instance-aware tool calls

Most tools accept an instance_id parameter. If omitted, the most recently active instance is used.

Dynamic tool loading (default mode)

In default dynamic mode, only discovery tools are initially visible:

  1. Call discover_categories() to see available categories
  2. Call load_toolset(category="functions") to load a category's tools
  3. Loaded tools become visible for subsequent calls

After open_target() succeeds, seven commonly used categories (functions, memory, search, info, segments, xrefs, strings) load automatically.

IDA plugin mode

Install the plugin to connect an interactive IDA Pro GUI session:

IDAPro-MCP --install

This copies idapro_mcp_plugin.py to IDA's plugins directory. After restarting IDA, the plugin registers the GUI session with the MCP server, allowing tools to operate on the currently open database.

Resources

The server exposes 34 read-only resources through MCP's resource protocol:

  • ida://idb/metadata — IDB metadata
  • ida://idb/segments — Memory segments
  • ida://function/{addr} — Function details
  • ida://function/pseudocode/{addr} — Decompiled pseudocode
  • ida://strings — All strings
  • ida://import/{name} — Import details
  • and 28 more

Resources are automatically available when a binary is open.

Project structure

IDAPro-MCP/
  pyproject.toml
  README.md
  src/IDAPro_MCP/
    __init__.py
    __main__.py          # CLI entry point
    server.py            # MCP server, transports, handler registration
    framework.py         # @tool, @unsafe decorators
    sync.py              # @idasync thread safety
    compat.py            # IDA 8.3-9.3 version shims
    utils.py             # Address parsing, ID generation
    tool_registry.py     # 24 categories, 5 aliased tools, dynamic loading
    api_core.py          # Server health, IDB open/close, instance management
    api_query.py         # Function lookup, flags, locals, create/delete
    api_memory.py        # Byte/int/float/string reads, data flags
    api_instructions.py  # Mnemonics, operands, flow checks
    api_search.py        # Binary search tools
    api_import_export.py # Import/export listing
    api_segments.py      # Segment operations
    api_xrefs.py         # Cross-references
    api_strings.py       # String listing and search
    api_analysis.py      # Function analysis, binary survey
    api_heads.py         # Head enumeration
    api_names.py         # Symbol name operations
    api_hexrays.py       # Decompilation, disassembly, microcode, flowchart
    api_types.py         # Type system: query, declare, structs, enums
    api_modify.py        # Patch bytes/asm, rename, define/undefine
    api_comments.py      # Comments and bookmarks
    api_stack.py         # Stack frame inspection
    api_patch.py         # Patch management, undo/redo
    api_sigmaker.py      # Signature generation, FLIRT
    api_python.py        # Python execution in IDA context
    api_debug.py         # Debugger control
    api_entries.py       # Entry point operations
    api_info.py          # Binary metadata, hashes, architecture
    api_hooks.py         # Event hook installation
    api_flow.py          # Call graphs, complexity metrics
    api_resources.py     # 34 MCP resource URIs
    idalib/
      __init__.py
      server.py          # idalib subprocess JSON-RPC server
      session_manager.py # Subprocess lifecycle
      supervisor.py      # Health monitoring, idle timeout
    router/
      __init__.py
      registry.py        # Instance registry
      router.py          # Tool routing to correct instance
    zeromcp/
      __init__.py        # JSON-RPC protocol helpers
  tests/
    test_tool_inventory.py

Compatibility

  • Python 3.10, 3.11, 3.12
  • IDA Pro 8.3 through 9.3 (headless idalib mode)
  • The mcp SDK version 1.26.0 (or compatible 1.x)

License

MIT

See related servers & alternatives →

Related MCP servers

Browse all →

Related guides

Hand-picked reading to help you choose and use AI & ML servers.