Renaming a function and setting a prototype improve the database; attaching a note to an address, tagged and retrievable by binary, captures the reasoning that the database itself cannot hold — and that is the thing you lose between sessions on a long engagement. The IDAPython escape hatch covers everything else, and it returns captured output rather than leaving you guessing whether the script ran.
An MCP server for reverse engineering with IDA Pro. It exposes the analysis surface an agent needs — functions, cross references, decompilation, renaming and typing — plus a notes store so findings survive between sessions.
- Finding your way: `list_functions`, `get_function_by_name`, `get_function_by_address`, `get_current_address`, `get_current_function`, `get_entrypoints`, `get_metadata`
- Reading code: `decompile_function` through Hex-Rays, `disassemble_function` with addresses and comments, `get_function_blocks` and `get_function_cfg`
- Following the graph: `get_xrefs_to` and `get_xrefs_from` for any address
- Writing your understanding back into the database: `rename_function`, `rename_local_variable`, `set_function_prototype`, `set_local_variable_type`, `create_structure_type`
- Annotating: `set_decompiler_comment` and `set_disassembly_comment` at a given address
- `repl_idapython` runs IDAPython and captures stdout and stderr, for anything the tools do not cover
- Engagement notes tied to the binary: `add_note`, `update_note`, `get_notes` filtered by file, address or tag, and `delete_note`
IDA Pro with Hex-Rays for the decompiler tools, and uv. Clone the repository and add it to your client config, running `server.py` from the checkout directory. The project is based on IDA Pro MCP and is MIT licensed.
Build from source — clone the repository and build it, then point your client at the binary
