Standalone MCP (Model Context Protocol) server plugin for IDA Pro 9.x that exposes IDA's analysis capabilities to LLM clients like Claude Desktop.
38 MCP tools covering binary analysis, decompilation, cross-references, symbol management, type system, navigation, and more
6 consolidated tools with action/format/direction parameters for comments, variables, types, xrefs, bookmarks, and code
8 MCP resources for browsable binary metadata (triage, functions, imports, exports, strings, info, segments, sections)
7 guided prompts for common reverse engineering workflows (function analysis, vulnerability identification, documentation, data flow tracing, function comparison, struct recovery, network protocol analysis)
SSE and Streamable HTTP transports via Hypercorn ASGI server
Thread-safe IDB modifications via execute_on_main_thread() wrapper
LRU analysis cache for expensive operations like decompilation
Async task manager for long-running operations
Pydantic configuration with environment variable support (IDASSISTMCP_ prefix)
IDA Pro 9.x with Python 3.10+
Hex-Rays decompiler (optional, for decompilation tools)
Option 1: IDA Plugin Manager (recommended)
hcli plugin install idassistmcp
This automatically installs the plugin and its Python dependencies.
Option 2: Manual install (from release tarball)
Download the latest release zip from GitHub Releases and extract it into your IDA plugins directory:
Linux / macOS:
unzip IDAssistMCP-* .zip -d ~ /.idapro/plugins/
Windows:
Extract the zip into %APPDATA%\Hex-Rays\IDA Pro\plugins\.
Then install dependencies using IDA's bundled Python (not your system Python):
Linux / macOS:
< IDA_INSTALL_DIR> /python3/bin/pip3 install -r ~ /.idapro/plugins/IDAssistMCP/requirements.txt
Windows:
" <IDA_INSTALL_DIR>\python3\python.exe" -m pip install -r " %APPDATA% \Hex-Rays\IDA Pro\plugins\IDAssistMCP\requirements.txt"
Replace <IDA_INSTALL_DIR> with your IDA Pro installation path.
Tip: You can also use the IDAUSR environment variable to specify a custom plugins directory.
Open a binary in IDA Pro
Press Ctrl+Shift+M or go to Edit > Plugins > IDAssistMCP
The MCP server URL will be printed to IDA's output window
Press Ctrl+Shift+M again to stop the server
Claude Desktop Configuration
Add to your Claude Desktop claude_desktop_config.json:
{
"mcpServers" : {
"idassistmcp" : {
"url" : " http://localhost:9080/mcp"
}
}
}
Configure via environment variables with the IDASSISTMCP_ prefix:
Variable
Default
Description
IDASSISTMCP_SERVER__HOST
localhost
Server bind address
IDASSISTMCP_SERVER__PORT
9080
Server port
IDASSISTMCP_SERVER__TRANSPORT
streamablehttp
Transport type (sse or streamablehttp)
IDASSISTMCP_DEBUG
false
Enable debug mode
IDASSISTMCP_LOG_LEVEL
INFO
Log level
Tool
Description
list_binaries
List the currently loaded binary
get_binary_info
Detailed binary metadata (arch, hashes, segments)
Tool
Description
get_code
Get function code — format: 'decompile' (pseudo-C) or 'disasm' (assembly)
analyze_function
Comprehensive analysis: metadata, CFG, callers/callees, decompilation
get_basic_blocks
CFG basic blocks with successors/predecessors
get_function_stack_layout
Stack frame layout (locals, args, saved regs)
Cross-References (1 consolidated)
Tool
Actions
Description
xrefs
direction: to/from/both, include_calls: bool
Xrefs and optional callers/callees for an address
Comments (1 consolidated)
Tool
Actions
Description
comments
action: get, set, list, remove
Manage comments (regular, repeatable, function)
Variables (1 consolidated)
Tool
Actions
Description
variables
action: list, rename
List or rename local variables via Hex-Rays
Types (2 — 1 consolidated + 1 standalone)
Tool
Actions / Description
types
action: list, set, create_struct, create_enum — manage IDB types
get_classes
List struct/class types from type library
Tool
Description
get_functions
All functions with filtering and pagination
search_functions_by_name
Search by name pattern and size filters
get_function_by_name
Exact name lookup
get_function_by_address
Address lookup
get_function_statistics
Aggregate statistics (counts, sizes, top-10)
Tool
Description
rename_symbol
Rename any symbol (function or data)
batch_rename
Batch rename multiple symbols
Tool
Description
get_imports
Import table grouped by module
get_exports
Export table
get_strings
String table with pagination
get_segments
Memory segments with permissions
get_entry_points
All binary entry points
Tool
Description
read_memory
Read raw bytes at address
get_data_at
Get typed data at address
search_bytes
Binary byte pattern search
search_strings
String search with pagination
create_data_var
Define data variable at address (byte/word/dword/qword/float/ascii/C type)
get_data_vars
List defined data variables (non-code items)
Tool
Description
patch_bytes
Patch bytes in IDB
Tool
Description
navigate_to
Move IDA cursor to address
bookmarks
Consolidated bookmark management - actions: list, set, remove
get_current_address
Get address and context at cursor position
get_current_function
Get function info at cursor position
Tool
Description
start_task
Start async background task
get_task_status
Check task progress
cancel_task
Cancel running task
list_tasks
List all async tasks
IDAssistMCP/
├── idassistmcp_plugin.py # IDA plugin_t entry point
├── requirements.txt
├── README.md
└── src/
└── idassist_mcp/
├── __init__.py
├── server.py # FastMCP server + transport
├── context.py # Single-binary IDA context
├── tools.py # 38 MCP tools (IDA API)
├── resources.py # 8 MCP resources
├── prompts.py # 7 guided workflow prompts
├── config.py # Pydantic settings
├── cache.py # LRU analysis cache
├── tasks.py # Async task manager
├── logging.py # IDA logging wrapper
├── utils.py # IDA-specific utilities
└── ui/
└── tool_registry.py # Tool catalog for UI
See LICENSE file for details.