
IDA Pro MCP Server: Setup for Claude Code, Cursor and Other Apps
Not the official IDA Pro MCP server. This one is built by the community. IDA Pro makes its own: IDA MCP →
Lets Claude, Cursor and other assistants reverse engineer binaries in IDA Pro: read decompiled code, rename and retype, search and patch.
IDA Pro MCP is a community plugin that connects IDA Pro to your assistant, so it can read decompiled code, explain functions and rename or retype things in your database. It runs on your own machine and needs a paid IDA Pro (8.3 or newer, not IDA Free), Python 3.11 and uv. The author now recommends the official Hex-Rays IDA MCP server instead. One tool runs any Python code inside IDA, so use it only on files you are happy to analyze that way.
Good for
- Reverse engineers and malware analysts who already use IDA Pro
- CTF players who want an assistant to read decompiled code and name functions
- Teams running headless IDA batch analysis with several binaries open
Works in
12 should work
Tap an app to see how to set it up and any known problems.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Supports local MCP servers.
Client does not support this transport.
Client does not support this transport.
Install ida-pro MCP
Claude Code
- 1
Copy this prompt.
Add the ida-pro MCP server to Claude Code. Run this command: claude plugin marketplace add mrexodia/claude-marketplace claude plugin uninstall ida-pro-mcp@mrexodia claude plugin install ida-pro-mcp@mrexodia Then check that it loaded and tell me if I need to sign in or restart.
- 2
Paste it into Claude Code. It shows the change and asks before running it.
Requires Python 3.11+, IDA Pro 8.3+ (not IDA Free), uv.
Run the idalib activation step from the README once first. Restart IDA and your client after installing.
From the project README. Source.
Tools
Gives a quick overview of the open binary
Returns file info, segments, entry points, statistics and the most notable strings in one call.
Try: “Give me a quick overview of this binary.”
Read ·
survey_binaryShows a function as C-like code
Decompiles one function with the Hex-Rays decompiler and pages through long output.
Try: “Decompile main and explain what it does.”
Read ·
decompileShows a function's assembly
Disassembles a function, with paging for long ones.
Try: “Show the disassembly of the function at 0x401000.”
Read ·
disasmSummarizes one function in a single call
Returns pseudocode, strings, constants, callers, callees, cross-references and blocks for one function.
Try: “Analyze sub_401500 and tell me what it is for.”
Read ·
analyze_functionAnalyzes a group of related functions
Summarizes related functions together with their internal call graph and shared data.
Try: “Analyze the functions that handle the license check as a group.”
Read ·
analyze_componentAnalyzes several functions at once
Runs a full analysis over one or more target functions.
Try: “Analyze these five functions together.”
Read ·
analyze_batchProfiles functions by size and complexity
Returns summary numbers for functions, with optional sampled detail.
Try: “Which functions are the biggest and most complex?”
Read ·
func_profileFollows where data goes or comes from
Follows cross-references across several hops from or to an address.
Try: “Where does the value at 0x404000 flow to?”
Read ·
trace_data_flowFinds what refers to an address or name
Lists cross-references to addresses or named symbols, capped per target.
Try: “What calls the function CheckPassword?”
Read ·
xrefs_toSearches cross-references with filters
Queries cross-references by direction and type, with paging.
Try: “Show only the code references to this string.”
Read ·
xref_queryFinds uses of a struct field
Lists cross-references to a field of a structure.
Try: “Where is the field flags of struct Config used?”
Read ·
xrefs_to_fieldLists the functions a function calls
Returns the unique callees of each function.
Try: “What does main call?”
Read ·
calleesBuilds a call graph from a function
Builds a bounded call graph from one or more root functions.
Try: “Draw the call graph two levels down from main.”
Read ·
callgraphShows a function's control flow
Returns the basic blocks of a function with their links.
Try: “Show the control-flow blocks of this function.”
Read ·
basic_blocksSearches for a byte pattern
Finds byte patterns, with wildcards, with paging.
Try: “Find the byte pattern 48 8B ?? ?? in the binary.”
Read ·
find_bytesSearches strings, constants and references
Searches for strings, immediate values or references.
Try: “Find where the constant 0xDEADBEEF is used.”
Read ·
findSearches strings with a regex
Finds strings by a case-insensitive regular expression.
Try: “Find strings that look like URLs.”
Read ·
find_regexSearches the disassembly listing
Searches the rendered listing for text in an address range.
Try: “Search the listing for the word password.”
Read ·
search_textSearches instructions by filter
Finds instructions by mnemonic or operand filters.
Try: “Find all call instructions to eax.”
Read ·
insn_queryExports function data
Exports functions as JSON, a C header or prototypes.
Try: “Export the prototypes of all functions in this range.”
Read ·
export_funcsFinds functions by name or address
Looks up functions by address or name.
Try: “Look up the function named main.”
Read ·
lookup_funcsLists functions
Lists functions with optional filters and paging.
Try: “List the first 50 functions.”
Read ·
list_funcsSearches functions with filters
Queries functions with richer filters than the plain list.
Try: “List functions larger than 500 bytes with no name.”
Read ·
func_queryLists global variables
Lists global variables with filters and paging.
Try: “List the global variables.”
Read ·
list_globalsSearches database entities with filters
Queries entities in the IDA database with typed filters and paging.
Try: “Find all named data items that start with g_.”
Read ·
entity_queryLists imported functions
Lists imports with their module names.
Try: “Which Windows API functions does it import?”
Read ·
importsSearches imports with filters
Queries imports with richer filters.
Try: “Show imports from ws2_32.dll.”
Read ·
imports_queryReads raw bytes
Reads bytes from addresses in the database.
Try: “Read 32 bytes at 0x404000.”
Read ·
get_bytesReads numbers from memory
Reads integer values of a chosen type from addresses.
Try: “Read a 32-bit integer at 0x404010.”
Read ·
get_intReads strings from memory
Reads text strings at addresses.
Try: “What string is at 0x405000?”
Read ·
get_stringReads a global variable's value
Reads the value of a global by address or name.
Try: “What is the value of g_key?”
Read ·
get_global_valueShows a function's stack variables
Returns the stack variables of a function.
Try: “Show the stack layout of this function.”
Read ·
stack_frameReads a struct at an address
Reads a structure's field values at an address.
Try: “Read the struct at 0x404100.”
Read ·
read_structFinds structs by name
Searches local structs and unions by name pattern.
Try: “Find structs with Config in the name.”
Read ·
search_structsSearches local types
Queries local types with filters.
Try: “List the enums defined in this database.”
Read ·
type_queryShows a type's size and members
Inspects named types: size, kind, declaration and members.
Try: “Show the members of struct Packet.”
Read ·
type_inspectConverts numbers between formats
Converts numbers between decimal, hex, bytes, ASCII and binary, so the model does not guess.
Try: “Convert 0x1F4 to decimal.”
Read ·
int_convertMakes a byte signature for an address
Builds the shortest unique byte signature starting at an address, for finding it again after updates.
Try: “Make a signature for the function at 0x401000.”
Read ·
make_signatureMakes a byte signature for a function
Builds unique signatures for function entry points.
Try: “Make signatures for the functions I selected.”
Read ·
make_signature_for_functionMakes a signature for an address range
Builds a signature for a range of addresses. Uniqueness is not guaranteed.
Try: “Make a signature for 0x401000 to 0x401040.”
Read ·
make_signature_for_rangeMakes signatures for code that refers to an address
Finds signatures for code locations that reference an address.
Try: “Make signatures for the code that uses this global.”
Read ·
find_xref_signaturesSaves the database
Saves the open IDA database to disk, optionally to a new path.
Try: “Save the database now.”
Write ·
idb_saveRenames functions, globals and variables
Renames functions, globals, locals and stack variables in a batch, with a dry run option.
Try: “Rename sub_401500 to check_license.”
Write ·
renameAdds comments to the disassembly
Sets comments at addresses in both the disassembly and the decompiler views.
Try: “Add a comment explaining this loop.”
Write ·
set_commentsAppends to existing comments
Adds to comments at addresses, skipping exact duplicates.
Try: “Add a note to the comment at this address.”
Write ·
append_commentsAdds a bookmark
Adds or replaces an IDA bookmark at an address.
Try: “Bookmark the license check.”
Write ·
add_bookmarkApplies types to functions and variables
Applies types to functions, globals, locals or stack variables.
Try: “Set the type of arg1 to a char pointer.”
Write ·
set_typeApplies many type edits at once
Applies several type edits and returns the overall status.
Try: “Apply these type fixes to the whole module.”
Write ·
type_apply_batchGuesses and applies likely types
Infers likely types at addresses using Hex-Rays or heuristics, and applies them.
Try: “Infer the types in this function.”
Write ·
infer_typesDefines C types
Declares C type definitions in the local type library.
Try: “Declare a struct for this packet header.”
Write ·
declare_typeCreates or extends enums
Creates local enums or adds members to them.
Try: “Create an enum for these error codes.”
Write ·
enum_upsertCreates stack variables
Creates stack variables at given offsets.
Try: “Declare a buffer at offset -0x40.”
Write ·
declare_stackDeletes stack variables
Deletes stack variables by name or offset.
Try: “Delete the stack variable var_8.”
Delete ·
delete_stackDefines a function at an address
Creates a function at an address, with optional end.
Try: “Define a function at 0x401800.”
Write ·
define_funcTurns bytes into code
Converts bytes into instructions at addresses.
Try: “Convert the bytes at 0x401900 to code.”
Write ·
define_codeTurns code or data back into raw bytes
Undefines items at addresses and returns them to raw bytes.
Try: “Undefine the data at 0x404000.”
Delete ·
undefineCreates typed data
Creates a typed data item at an address, replacing what was there.
Try: “Make a 4-byte integer at 0x404010.”
Write ·
make_dataSets how an instruction operand is shown
Sets the type of an operand, like the Y, O or # keys in the GUI.
Try: “Show this operand as an offset.”
Write ·
set_op_typeRefreshes the decompiler's cache
Clears the decompile cache for functions so changes show up.
Try: “Recompile this function after the type change.”
Write ·
force_recompileShows a change and its decompile before and after
Renames a function, sets its type or adds a comment, then shows the decompiled result before and after.
Try: “Rename this function and show me the difference.”
Write ·
diff_before_afterPatches bytes in the program
Changes bytes at addresses in the database, in a batch.
Try: “Patch the byte at 0x401234 to 0x90.”
Write ·
patchPatches assembly instructions
Replaces instructions at addresses with new assembly.
Try: “Replace this jump with a nop.”
Write ·
patch_asmWrites numbers into the database
Writes integer values at addresses.
Try: “Set the integer at 0x404010 to 5.”
Write ·
put_intRuns Python code inside IDA
Runs any Python in IDA and returns the output. It can do anything IDA and your account can do, with no limits.
Try: “Run a script that lists all functions with no name.”
Runs code ·
py_evalRuns a Python file inside IDA
Runs a whole Python script file in IDA and returns its output, with no limits.
Try: “Run my script analyze.py in IDA.”
Runs code ·
py_exec_fileStarts debugging the program
Starts a debugger session. Hidden unless the debugger extension is turned on in the address.
Try: “Start the debugger and stop at the entry point.”
Runs code ·
dbg_startReads memory of the running program
Reads memory from the program being debugged. Hidden unless the debugger extension is on.
Try: “Read 64 bytes at the stack pointer.”
Read ·
dbg_readWrites memory of the running program
Writes bytes into the program being debugged. Hidden unless the debugger extension is on.
Try: “Set the flag byte to 1 in the running program.”
Write ·
dbg_writeOpens a binary for headless work
In the headless idalib mode, opens a binary and returns a session ID that other tools need.
Try: “Open C:/samples/crackme.exe.”
Files ·
idb_openCloses a headless session
Saves, if asked, and closes a headless session.
Try: “Close the crackme session.”
Write ·
idb_closeUsed by the assistant behind the scenes
Checks the server is up
Reports the state of the MCP server for the open database.
Try: “Is the IDA server responding?”
Read ·
server_healthLists open sessions
Lists open sessions and running IDA windows in headless mode.
Try: “Which databases are open?”
Read ·
idb_list
Read from the source code
Permissions
high risk · 4 things to watch
High risk
The assistant can rename, retype and patch your IDA database, and one tool runs any Python code inside IDA. Back up the database and turn the unsafe tools off unless you need them.
What it can do
- Read your data
- Create and change things
- Delete things
- Read-only mode
Watch out for
One tool runs any Python code inside IDA
py_eval and py_exec_file run code with no limits, so they can read and write files and reach the network from your machine. Turn unsafe tools off in the plugin's tool page if you do not need them. github.com
It changes your database and patches bytes
Tools rename, retype, undefine and patch code in the open database. Keep a copy of the IDB before a long session. github.com
Debugger tools can run the program
The debugger tools are hidden by default and turn on with an option in the address. They can start the program and write to its memory, so use them only in a sandbox. github.com
The author recommends the official server
The README says to use the official Hex-Rays IDA MCP server instead. This one is still maintained. github.com
Security advisories
No published security advisories as of Nov 1, 2026.
Technical details
| Turning on read-only | No read-only mode is documented. The README lets you turn tools on or off from the plugin's web page, which has a Disable unsafe link. |
|---|---|
| Sign-in and keys | No sign-in or API key. It uses your IDA Pro license and local database. |
Questions
Is this the official IDA Pro MCP server?
No. It is a community project by mrexodia and contributors. The README itself recommends the official Hex-Rays IDA MCP server instead.
Does it work with IDA Free?
No. It needs IDA Pro 8.3 or newer, and version 9 is recommended. IDA Free is not supported.
Does it need an API key?
No. It has no sign-in or key. It runs on your machine and uses your IDA Pro license.
Which assistants does it work with?
The README lists many, including Claude, Claude Code, Cursor, Codex, VS Code, Cline, Windsurf, Zed, Gemini CLI and opencode. Use the install box for the steps.
Can it run code on my machine?
Yes. One tool runs any Python code inside IDA with no limits, and the optional debugger tools can start the program. Turn the unsafe tools off if you do not need them.
Can I run it without the IDA window?
Yes. The headless idalib mode opens binaries without the IDA interface and can keep several open at once. It needs idalib set up first.
Is this the full tool list?
No. The list on this page is partial. The source registers about 75 tools by default and 22 more debugger tools that stay hidden until you enable them.
Information
updated Nov 2, 2026
- Publisher
- Community
- Transport
- stdio, Streamable HTTP
- Auth
- None
- License
- MIT
- Last commit
- Sep 26, 2026
- Open issues
- 36
Other IDA Pro MCP servers
Sources
Docs, issue trackers and discussions this page is built from. Issues, quotes and findings above link to their own source.
Show all 3Hide
- github.com · github.com
- github.com · github.com
- github.com · github.com