home / mcp / ida pro mcp server
Provides a remote and headless MCP server for IDA Pro to analyze binaries, run scripts, and manage comments and structures.
Configuration
View docs{
"mcpServers": {
"icryo-ida-pro-mcp": {
"url": "http://127.0.0.1:8744/sse"
}
}
}You use the MCP server to connect your IDA Pro workflows to a remote or local MCP client, enabling scripted analysis, navigation, and automation for reverse engineering tasks. This setup makes it easier to load binaries, run analyses, rename variables, add comments, and run custom Python code across your IDA projects.
You interact with the MCP server through an MCP client of your choice. Start the server in a way that fits your workflow (headless or with a live IDA session), then connect the client to the server. Typical usage patterns include loading a binary into a headless session, performing repetitive analysis tasks via the client, and saving analyses for future sessions. You can switch between binaries in a single session, persist your analysis to disk, and execute arbitrary IDAPython code to automate tasks such as decompilation, comment insertion, and variable renaming.
# Prerequisites
# - Python 3.11 or higher
# - A modern MCP client (e.g., idalib, VSCode integration, or other supported clients)
# - A compatible environment for running the MCP server
# Install the MCP package
pip uninstall ida-pro-mcp
pip install https://github.com/icryo/ida-pro-mcp/archive/refs/heads/main.zip
# Install the MCP server plugin for your environment
ida-pro-mcp --install
# Important: completely restart the application(s) after installation to ensure the plugin and server are wired up correctly. If you use Claude, quit it from the tray icon as needed.The next steps depend on whether you want a remote HTTP transport or a local, headless server. You can also load and switch binaries dynamically in a headless session. A typical flow is to start a headless server, load a binary, perform analyses, save the database, and then switch to another binary if needed.
Configuration and transport options include an HTTP-based transport for an SSE server and a headless local server via a command-line tool. For remote UI transport, you can run an SSE server and connect with your frontend client, for example via a transport URL such as a local SSE endpoint.
Headless MCP server with dynamic database loading lets you start without a binary and load or switch binaries on demand. You can load a binary with load_database("/path/to/binary.exe"), inspect, rename, and annotate, then save the analysis with save_database("/path/to/backup.i64"). You can also check current status with get_database_status() and close the database with close_database().
If you want to run a local MCP server alongside IDA, you can start the server in a headless mode using a command such as uv run idalib-mcp --host 127.0.0.1 --port 8745, optionally providing the path to a binary to load at startup. Use get_database_status() to verify the current state of the loaded database.
Make sure to restart tools after installation to ensure plugins and servers are loaded correctly. For Windows environments, verify that the plugin appears under the appropriate Plugins menu once the MCP server starts.
If you encounter connection issues, confirm that the MCP client is running and that you are pointing to the correct transport URL or stdio command. Use the available tooling to check the server status and to load/save databases as needed.
{
"mcpServers": {
"ida_http_transport": {
"type": "http",
"name": "ida_http_transport",
"url": "http://127.0.0.1:8744/sse",
"args": []
},
"idalib_stdio_local": {
"type": "stdio",
"name": "idalib_stdio_local",
"command": "uv",
"args": ["run", "idalib-mcp", "--host", "127.0.0.1", "--port", "8745", "path/to/executable"]
},
"idalib_stdio_no_binary": {
"type": "stdio",
"name": "idalib_stdio_no_binary",
"command": "uv",
"args": ["run", "idalib-mcp", "--host", "127.0.0.1", "--port", "8745"]
}
}
}Check if the IDA Pro MCP plugin is currently running and able to communicate with the server.
Retrieve metadata about the current IDA project and loaded data.
Load a binary or IDB into the headless server for analysis, enabling dynamic switching between binaries.
Persist the current analysis state to disk so you can resume later.
Close the currently loaded database without exiting the server.
Query the server to determine whether a database is loaded and what path it is using.
Retrieve information about a function by its name in the loaded database.
Retrieve information about a function by its starting address in the loaded database.
Decompile a function at a given address to obtain C-like pseudo-code.
Disassemble a function to show raw assembly starting from a given address.
Get all cross references to a specific address in the binary.
Query information about user-defined structures or types.
Rename a function to a more descriptive name.
Set or update a function's prototype signature.
Add a comment at an address with a specified comment type.
Retrieve all comments at a given address.
Set or update a comment at an address in the function disassembly.
Search for a byte pattern, including wildcards, within the loaded binary.
Obtain the control flow graph for a function, including basic blocks and their relationships.
Execute arbitrary IDAPython code with access to IDA modules.
Retrieve the stack frame variables for a given function.
Rename a local variable within a function.
Patch instructions at a given address with new assembly.
Read a global variable's value if it is known at compile time.
Read the value of a global variable by its address if known at compile time.
Rename a global variable to a more descriptive name.
Set a global variable's type.