Skip to content
MCP Shelf

IDA Pro MCP

View on GitHub

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.

ToolWhat it is for
analyze_struct_detailedLays out every field of a structure with offsets and types.
convert_numberTurns a number into hex, decimal, bytes and text so the model never converts in its head.
create_stack_frame_variableAdds a typed variable to a function's stack frame.
data_read_byteReads one byte at an address.
data_read_dwordReads a 4-byte value at an address.
data_read_qwordReads an 8-byte value at an address.
data_read_stringReads the text string stored at an address.
data_read_wordReads a 2-byte value at an address.
declare_c_typeAdds or updates a type from a C declaration.
decompile_functionReturns Hex-Rays pseudocode for a function.
delete_stack_frame_variableRemoves a variable from a function's stack frame.
disassemble_functionReturns the assembly listing for a function.
patch_address_assemblesAssembles new instructions over the code at an address.
rename_functionGives a function a meaningful name.
rename_global_variableRenames a global variable.
rename_local_variableRenames a local variable inside a function.
rename_stack_frame_variableRenames a variable on a function's stack.
set_commentAdds a comment at an address, shown in both the assembly and the pseudocode.
set_function_prototypeSets a function's signature: return type and arguments.
set_global_variable_typeSets the type of a global variable.
set_local_variable_typeSets the type of a local variable.
set_stack_frame_variable_typeSets the type of a stack variable.

Only reads26 tools · Looks things up and changes nothing.

ToolWhat it is for
check_connectionConfirms the IDA plugin is running and reachable.
get_calleesLists the functions a function calls.
get_callersLists every place that calls an address.
get_current_addressReads where your cursor is in IDA.
get_current_functionReads which function your cursor is in.
get_defined_structuresLists every structure defined in the database.
get_entry_pointsLists the program's entry points.
get_function_by_addressLooks up the function containing an address.
get_function_by_nameLooks up a function by its name.
get_global_variable_value_at_addressReads a global's value by address, when it is fixed at build time.
get_global_variable_value_by_nameReads a global's value by name, when it is fixed at build time.
get_metadataDescribes the open database: file, architecture and base address.
get_stack_frame_variablesLists the local variables on a function's stack.
get_struct_at_addressReads a structure's field values at an address.
get_struct_info_simpleGives a short summary of one structure.
get_xrefs_toLists every reference to an address.
get_xrefs_to_fieldLists every reference to one field of a structure.
list_functionsLists all functions, page by page.
list_globalsLists all global variables, page by page.
list_globals_filterLists global variables whose names match a filter.
list_importsLists imported functions and the libraries they come from.
list_local_typesLists the types defined in the database.
list_stringsLists the strings found in the binary, page by page.
list_strings_filterLists strings that match a filter.
read_memory_bytesReads raw bytes at an address.
search_structuresFinds structures whose names match a pattern.

Grouped and described by us. The README on GitHub lists the inputs each tool takes.

Set it up

  1. 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.
  2. Run ida-pro-mcp --install. It installs the IDA plugin and adds the server to the MCP clients it finds.
  3. 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.

SettingWhat it does
pip install ida-pro-mcp "mcp<2"Config · requiredInstalls version 1.4.0 with the MCP library it was built for. Without the pin it will not start.
ida-pro-mcp --installConfig · requiredAdds the IDA plugin and writes the server into the MCP clients it finds.
Edit → Plugins → MCPConfig · requiredStart the plugin inside IDA with a binary open. The tools only answer while it runs.
ida-pro-mcp --configConfigPrints JSON config to paste into any client the installer missed.
idalib-mcpConfigIn 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.

ServerToolsRuns onLicenceStars
IDA Pro MCP48Your computer–13.2K
Desktop Commander25Your computerMIT10.1K
Serena3Your computer–30.7K
Context72Your computer or hostedMIT63.7K
GitHub46Hosted–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.

Full docs on GitHubmrexodia/ida-pro-mcp

Something wrong on this page? Tell us.

More in Developer tools