Server facts
IDA Pro MCP
Project
- Author
- mrexodia
- Repository
- github.com/mrexodia/ida-pro-mcp
- License
- MIT
- Category
- Security & Reverse Engineering
Tech
- Runtime / language
- pythonPython
- Transports
- stdio
- Remote available
- No
- Authentication
- Not specified
Activity
- GitHub stars
- 12,951
- Last commit
- Data as of
Tags
- Binary Analysis
- Decompilation
- Headless
- Ida Pro
- Reverse Engineering
Overview
IDA Pro MCP links AI assistants with IDA Pro for reverse-engineering workflows. The README lists operations for locating functions, inspecting decompiled output and assembly, reading memory, finding cross-references, and editing analysis state. Comments, types, code definitions, and assembly patches can be changed through documented tools. Numeric conversion has a dedicated operation because the author warns that language models can mishandle number bases. Debugger controls exist as an optional extension rather than being exposed by default. The integration is intended to support analysis, but the documentation emphasizes that model output still needs careful prompting and verification, particularly for obfuscated binaries.
The recommended direction is the headless idalib-mcp service; the older GUI plugin is no longer recommended and is expected to be deprecated. Headless operation uses a supervisor with one persistent worker per open database. Subsequent supervisors can adopt an existing worker, and tools must identify their target database with a returned session ID instead of relying on an implicit current file. Both stdio and network-based launch examples are provided. Requirements include Python 3.11 or newer and IDA Pro 8.3 or newer, with version 9 recommended; IDA Free is explicitly unsupported. The Claude Code plugin path additionally requires globally activated idalib and uv. These prerequisites make it a specialized integration for existing IDA users rather than a standalone replacement for the analysis application.
Install & configure
Requirements
- Python 3.11 or newer
- IDA Pro 8.3 or newer; version 9 recommended
- Installed idalib for headless operation
- uv for the documented launch command
- An MCP-compatible client
uv run idalib-mcp --stdioThe selected command uses the recommended headless direction. Install the package or Claude Code plugin as documented and activate idalib as required. IDA Free is unsupported. Database tools require explicit session identifiers.
Examples are translated from the published configuration. Supply your own credentials and verify requirements in the upstream README. Remote connectors are shown only where a supported configuration format is known.
Config file · macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
Use Settings → Developer → Edit Config when available. Do not assume a Linux configuration path; check the client documentation for your platform. Remote servers use the app’s connector flow when supported, not the local stdio file shown here. Merge this example with existing settings; do not overwrite unrelated servers.
{
"mcpServers": {
"ida-pro-mcp": {
"command": "uv",
"args": [
"run",
"idalib-mcp",
"--stdio"
],
"env": {}
}
}
}Config file · Project: .cursor/mcp.json
User: ~/.cursor/mcp.json
The project path is relative to the workspace root. The tilde denotes your user home directory. Use Cursor’s MCP settings to confirm which configuration and scope your installed version is reading. Merge this example with existing settings; do not overwrite unrelated servers.
{
"mcpServers": {
"ida-pro-mcp": {
"command": "uv",
"args": [
"run",
"idalib-mcp",
"--stdio"
],
"env": {}
}
}
}Config file · Workspace: .vscode/mcp.json
For user scope, use the “MCP: Open User Configuration” command if available. Do not guess a user configuration path across operating systems, profiles, containers, or remote workspaces; check the client documentation. Merge this example with existing settings; do not overwrite unrelated servers.
{
"servers": {
"ida-pro-mcp": {
"type": "stdio",
"command": "uv",
"args": [
"run",
"idalib-mcp",
"--stdio"
],
"env": {}
}
}
}Config file · macOS/Linux: ~/.codeium/windsurf/mcp_config.json
Windows: %USERPROFILE%\.codeium\windsurf\mcp_config.json
Open the MCP configuration through Windsurf’s settings when possible to confirm the active file. Paths can differ in managed or future releases; check the client documentation if this location is not present. Merge this example with existing settings; do not overwrite unrelated servers.
{
"mcpServers": {
"ida-pro-mcp": {
"command": "uv",
"args": [
"run",
"idalib-mcp",
"--stdio"
],
"env": {}
}
}
}Config file · Project scope: .mcp.json at the repository root
The project file uses mcpServers. For user scope, use claude mcp add --scope user rather than assuming .mcp.json in your home directory is the user configuration. Check the client documentation for managed settings and storage details. Merge this example with existing settings; do not overwrite unrelated servers.
{
"mcpServers": {
"ida-pro-mcp": {
"type": "stdio",
"command": "uv",
"args": [
"run",
"idalib-mcp",
"--stdio"
],
"env": {}
}
}
}Examples are translated from the published configuration. Supply your own credentials and verify requirements in the upstream README. Remote connectors are shown only where a supported configuration format is known.
Tools
Source: repository README. Tool descriptions are a documented snapshot, not a live capability check.
| Tool | What it does |
|---|---|
| idb_open | Open or adopt a binary database and return its session identifier. |
| idb_list | Inspect open sessions and discovered IDA GUI instances. |
| idb_save | Save a session’s analysis database to disk. |
| server_health | Inspect health for an explicitly selected database. |
| lookup_funcs | Resolve functions by name or address. |
| int_convert | Convert numeric values among decimal, hexadecimal, bytes, ASCII, and binary formats. |
| list_funcs | List functions with filtering and pagination. |
| list_globals | Browse global variables with pagination and filters. |
| imports | List imported symbols and their modules. |
| decompile | Produce decompiler output for a function address. |
| disasm | Inspect a function’s assembly and related details. |
| xrefs_to | Find references targeting one or more addresses. |
| xrefs_to_field | Find references to specified structure fields. |
| callees | List functions called from selected function addresses. |
| add_bookmark | Create or replace an IDA bookmark at an address. |
| set_comments | Write comments in assembly and decompiler views. |
| patch_asm | Replace instructions using assembly patches. |
| declare_type | Add C type declarations to the local type library. |
| define_func | Define functions at selected addresses, optionally with explicit endpoints. |
| define_code | Interpret selected bytes as instructions. |
| undefine | Return selected defined items to raw bytes. |
| get_bytes | Read raw memory bytes from selected addresses. |
| get_int | Read integers using a requested type and byte order. |
| get_string | Read strings terminated by a null byte. |
| get_global_value | Read compile-time global values by name or address. |
| stack_frame | Inspect stack variables belonging to selected functions. |
| declare_stack | Create stack variables at chosen offsets. |
| delete_stack | Remove named stack variables. |
| read_struct | Read field values for a structure at an address. |
| search_structs | Find structures using a name filter. |
| dbg_start | Start a debugging process when the debugger extension is enabled. |
| dbg_exit | End a debugging process. |
| dbg_continue | Resume execution in the debugger. |
| dbg_run_to | Continue debugging until a selected address. |
| dbg_step_into | Advance into the next instruction during debugging. |
Names, permissions, and defaults can change. Check the current upstream documentation before granting access.
Use cases
- Inspect binary functions through decompilation, disassembly, and cross-references.
- Document findings by editing comments and type definitions.
- Coordinate analysis across explicit headless database sessions.
- Read memory structures or use opt-in debugger operations.
Strengths
- Combines read operations with IDA database modification tools.
- Headless workers can persist and be adopted by later supervisors.
- Offers dedicated number-format conversion and optional debugger tools.
Limitations
- Requires IDA Pro; IDA Free is unsupported.
- The GUI plugin path is no longer recommended.
- The README warns that hallucinations and obfuscation can reduce model accuracy.
Frequently asked questions
Independent listing, not an affiliation or security review. Grant the least access needed and verify the upstream instructions before running code.