Lets an assistant read and annotate the binary you have open in IDA Pro.
- Started in our test
- ★ 13.2K GitHub stars
- 3.1K downloads a week
- Last commit 26 Sept 2026
At a glance
IDA Pro MCP has two halves: a plugin inside IDA that exposes the open database, and an MCP server your client talks to. Together they let the assistant decompile functions, follow cross-references, read strings and write back renames and comments.
It needs a licensed copy of IDA Pro with Python, so it is for people already doing reverse engineering, not a way to start.
- Made by
- Duncan Ogilvie (mrexodia)
- Latest version
- 1.4.0 (6 Oct 2025)
- PyPI package
- ida_pro_mcp
- GitHub stars
- 13.2K
- Downloads
- 3.1K a week
- Last commit
- 26 Sept 2026
- Tools
- 48
- Runs on
- Your computer
Our check: We installed it with the steps on this page on 26 Oct 2026: it started and answered with 48 tools. ida-pro-mcp on PyPI links back to mrexodia/ida-pro-mcp. Version 1.4.0 needs the MCP Python library below version 2.
What's in the pod: its tools
We found 48 tools when we started it on 26 Oct 2026. 26 only read. The rest can change things, so keep your app's "ask before each tool call" setting on for them.
How we tested it: Started ida-pro-mcp 1.4.0 from PyPI with the MCP library pinned below version 2. It lists its tools without IDA open; calling them needs IDA Pro with the plugin running.
Changes things22 tools · Can create, edit, send or delete.
| Tool | What it is for |
|---|---|
analyze_struct_detailed | Lays out every field of a structure with offsets and types. |
convert_number | Turns a number into hex, decimal, bytes and text so the model never converts in its head. |
create_stack_frame_variable | Adds a typed variable to a function's stack frame. |
data_read_byte | Reads one byte at an address. |
data_read_dword | Reads a 4-byte value at an address. |
data_read_qword | Reads an 8-byte value at an address. |
data_read_string | Reads the text string stored at an address. |
data_read_word | Reads a 2-byte value at an address. |
declare_c_type | Adds or updates a type from a C declaration. |
decompile_function | Returns Hex-Rays pseudocode for a function. |
delete_stack_frame_variable | Removes a variable from a function's stack frame. |
disassemble_function | Returns the assembly listing for a function. |
patch_address_assembles | Assembles new instructions over the code at an address. |
rename_function | Gives a function a meaningful name. |
rename_global_variable | Renames a global variable. |
rename_local_variable | Renames a local variable inside a function. |
rename_stack_frame_variable | Renames a variable on a function's stack. |
set_comment | Adds a comment at an address, shown in both the assembly and the pseudocode. |
set_function_prototype | Sets a function's signature: return type and arguments. |
set_global_variable_type | Sets the type of a global variable. |
set_local_variable_type | Sets the type of a local variable. |
set_stack_frame_variable_type | Sets the type of a stack variable. |
Only reads26 tools · Looks things up and changes nothing.
| Tool | What it is for |
|---|---|
check_connection | Confirms the IDA plugin is running and reachable. |
get_callees | Lists the functions a function calls. |
get_callers | Lists every place that calls an address. |
get_current_address | Reads where your cursor is in IDA. |
get_current_function | Reads which function your cursor is in. |
get_defined_structures | Lists every structure defined in the database. |
get_entry_points | Lists the program's entry points. |
get_function_by_address | Looks up the function containing an address. |
get_function_by_name | Looks up a function by its name. |
get_global_variable_value_at_address | Reads a global's value by address, when it is fixed at build time. |
get_global_variable_value_by_name | Reads a global's value by name, when it is fixed at build time. |
get_metadata | Describes the open database: file, architecture and base address. |
get_stack_frame_variables | Lists the local variables on a function's stack. |
get_struct_at_address | Reads a structure's field values at an address. |
get_struct_info_simple | Gives a short summary of one structure. |
get_xrefs_to | Lists every reference to an address. |
get_xrefs_to_field | Lists every reference to one field of a structure. |
list_functions | Lists all functions, page by page. |
list_globals | Lists all global variables, page by page. |
list_globals_filter | Lists global variables whose names match a filter. |
list_imports | Lists imported functions and the libraries they come from. |
list_local_types | Lists the types defined in the database. |
list_strings | Lists the strings found in the binary, page by page. |
list_strings_filter | Lists strings that match a filter. |
read_memory_bytes | Reads raw bytes at an address. |
search_structures | Finds structures whose names match a pattern. |
Grouped and described by us. The README on GitHub lists the inputs each tool takes.
Set it up
- Install the package with the MCP library it was built for: pip install ida-pro-mcp "mcp<2". Without the pin, pip pulls MCP 2 and the server will not start.
- Run ida-pro-mcp --install. It installs the IDA plugin and adds the server to the MCP clients it finds.
- Restart IDA and your MCP client, open a binary, and start the plugin from the Edit → Plugins menu.
New to this? See the setup guides for Claude Code, Cursor, Claude Desktop and ChatGPT.
Settings
Names are exactly as the project spells them. Required ones are marked.
| Setting | What it does |
|---|---|
pip install ida-pro-mcp "mcp<2"Config · required | Installs version 1.4.0 with the MCP library it was built for. Without the pin it will not start. |
ida-pro-mcp --installConfig · required | Adds the IDA plugin and writes the server into the MCP clients it finds. |
Edit → Plugins → MCPConfig · required | Start the plugin inside IDA with a binary open. The tools only answer while it runs. |
ida-pro-mcp --configConfig | Prints JSON config to paste into any client the installer missed. |
idalib-mcpConfig | In newer releases, a headless server that opens databases without the IDA window. Needs idalib activated once. |
What it can touch
It can read
- The binary and IDA database you open: code, data, types and cross-references
It can change
- Names, comments and types in the IDA database
- Patched instructions in the database, if asked
Safer setup: Work on a copy of the database and only analyse untrusted malware inside a virtual machine.
Before you start
- IDA Pro (not the free version) with IDAPython
- Python 3.11 or newer
If it does not work
- The server will not start after pip install
- pip pulled MCP 2. Reinstall with the "mcp<2" pin shown above.
- Tools fail with a connection error
- Open a binary in IDA and start the plugin from the Edit menu first. Ask check_connection to confirm.
- Changes do not appear after installing
- Fully restart IDA and your MCP client. Claude Desktop must be quit from the tray icon, not just closed.
- The model gets numbers wrong
- Tell it to use convert_number for every base conversion rather than converting in its head.
- Results on packed or obfuscated code are poor
- Remove string encryption, control flow flattening and similar tricks first, and apply FLIRT or Lumina to name library code.
Peas in a pod: similar servers
How IDA Pro MCP lines up against other developer tools servers on the shelf.
| Server | Tools | Runs on | Licence | Stars |
|---|---|---|---|---|
| IDA Pro MCP | 48 | Your computer | – | 13.2K |
| Desktop Commander | 25 | Your computer | MIT | 10.1K |
| Serena | 3 | Your computer | – | 30.7K |
| Context7 | 2 | Your computer or hosted | MIT | 63.7K |
| GitHub | 46 | Hosted | – | 34K |
Questions
Is there an official Hex-Rays version?
Yes. Hex-Rays now publishes its own IDA MCP server, and this project's author recommends it. This one remains popular and widely used.
Does it work with IDA Free?
No. It needs IDA Pro 8.3 or later, with version 9 recommended.
Why do the tool names differ from the README?
The list on this page comes from version 1.4.0 on PyPI, which we ran. The GitHub version has since merged and renamed tools and added a debugger and headless mode.
Is it free?
The server is MIT licensed. IDA Pro itself is a paid product.
Something wrong on this page? Tell us.