set_binary_path
Set the path to the binary file
Run IDA Pro headless as a background service, so an agent can work through a binary without the GUI open.
LABSCO SUMMARY
The interactive-plugin route ties the agent to a session someone has to keep open. Running headless means the binary can be analyzed on a server, over sse, as part of something larger. The cost is that IDA Pro is still a licensed product you have to have.
A command-line MCP server that drives IDA Pro's headless mode over the headless-ida library, exposing analysis of a binary — its functions, variables and more — as tools.
A licensed IDA Pro with headless support, and Python 3.12 or higher. Configuration goes in a .env file: IDA_PATH points at the idat executable, TRANSPORT selects sse or stdio, and HOST and PORT set the listen address when you use sse. Install with uv pip install -e . and start with uv run headless_ida_mcp_server. The tool implementations are adapted from ida-pro-mcp.
Build from source — git clone https://github.com/cnitlrt/headless-ida-mcp-server.git
USE CASES
Let the assistant query IDA's recovered functions and variables and explain what it finds.
Run it as a CLI service against idat rather than keeping an interactive IDA session open.
Set TRANSPORT to sse with a host and port, and connect a client over the network.
Have the assistant apply changes to functions and variables in the database while it works.
Listed in project docs. Your client may show a different list.
set_binary_pathSet the path to the binary file
get_functionGet a function by address
get_function_by_nameGet a function by name
get_function_by_addressGet a function by address
get_current_addressGet the current address
get_current_functionGet the current function
convert_numberConvert a number to a different representation
list_functionsList all functions
decompile_checkedDecompile a function at the given address
decompile_functionDecompile a function at the given address
disassemble_functionDisassemble a function at the given address
get_xrefs_toGet cross references to a given address
get_entry_pointsGet all entry points of the binary
set_decompiler_commentSet a comment for a given address in the function pseudocode
set_disassembly_commentSet a comment for a given address in the function disassembly
refresh_decompiler_widgetRefresh the decompiler widget
refresh_decompiler_ctextRefresh the decompiler ctext for a given function
rename_local_variableRename a local variable in a function
rename_functionRename a function
set_function_prototypeSet a function's prototype
save_idb_fileSave the IDB file
BEFORE YOU INSTALL
21 tools named in the project's documentation.
The documented client runs the server on your machine.
INSTALLATION
You clone this one yourself.
git clone https://github.com/cnitlrt/headless-ida-mcp-server.git
cd headless-ida-mcp-server
uv python install 3.12
uv venv --python 3.12
uv pip install -e .
cp .env_example .envIn .env, set IDA_PATH to IDA Pro's headless executable (idat), and TRANSPORT to stdio for a local client, or sse with HOST and PORT
{
"mcpServers": {
"ida": {
"command": "<YOUR_PATH_TO_UV>",
"args": [
"--directory",
"<YOUR_PATH_TO_HEADLESS_IDA_MCP_SERVER>",
"run",
"headless_ida_mcp_server"
]
}
}
}