IDA Pro MCP Server is a plugin that enables AI assistants like Claude to interact directly with IDA Pro for binary analysis tasks. It provides a Model Context Protocol (MCP) interface that allows remote querying and control of IDA Pro, enabling AI assistants to perform various operations such as retrieving disassembly code, decompiled pseudocode, and function information.
Requirements: This plugin is designed for and tested with IDA Pro version 9.0+.
pip install -r requirements.txt
ida-mcp-server.py
file to your IDA Pro plugins directory:Windows: %Programfiles%\IDA Pro 9.0\plugins\
Linux: ~/.idapro/plugins/
macOS: ~/Library/Application Support/IDA Pro/plugins/
To configure Claude or VSCode to work with the IDA Pro MCP Server, add the following to your mcp.json
file:
{
"mcpServers": {
"IDAPro": {
"url": "http://127.0.0.1:3000/sse",
"type": "sse"
}
}
}
The server provides numerous tools for binary analysis:
get_bytes
: Retrieve raw bytes from a specific addressget_disasm
: Get disassembly at a specified addressget_decompiled_func
: Get pseudocode of the function containing the specified addressget_function_name
: Get function name at a specified addressget_entry_point
: Get the entry point of the binaryget_segments
: Get all segment informationget_functions
: Get all functions in the binaryget_imports
: Get all imported functionsget_exports
: Get all exported functionsget_xrefs_to
: Get all cross-references to a specified addressmake_function
: Create a function at a specified addressundefine_function
: Undefine a function at a specified addressget_dword_at
: Get the dword (4 bytes) at a specified addressget_word_at
: Get the word (2 bytes) at a specified addressget_byte_at
: Get the byte at a specified addressget_qword_at
: Get the qword (8 bytes) at a specified addressget_float_at
: Get the float at a specified addressget_double_at
: Get the double at a specified addressget_string_at
: Get the string at a specified addressget_string_list
: Get all strings in the binaryget_strings
: Get all strings in the binary (with addresses)When analyzing binaries with this tool, consider the following workflow:
To add this MCP server to Claude Code, run this command in your terminal:
claude mcp add-json "IDAPro" '{"url":"http://127.0.0.1:3000/sse","type":"sse"}'
See the official Claude Code MCP documentation for more details.
There are two ways to add an MCP server to Cursor. The most common way is to add the server globally in the ~/.cursor/mcp.json
file so that it is available in all of your projects.
If you only need the server in a single project, you can add it to the project instead by creating or adding it to the .cursor/mcp.json
file.
To add a global MCP server go to Cursor Settings > Tools & Integrations and click "New MCP Server".
When you click that button the ~/.cursor/mcp.json
file will be opened and you can add your server like this:
{
"mcpServers": {
"IDAPro": {
"url": "http://127.0.0.1:3000/sse",
"type": "sse"
}
}
}
To add an MCP server to a project you can create a new .cursor/mcp.json
file or add it to the existing one. This will look exactly the same as the global MCP server example above.
Once the server is installed, you might need to head back to Settings > MCP and click the refresh button.
The Cursor agent will then be able to see the available tools the added MCP server has available and will call them when it needs to.
You can also explicitly ask the agent to use the tool by mentioning the tool name and describing what the function does.
To add this MCP server to Claude Desktop:
1. Find your configuration file:
~/Library/Application Support/Claude/claude_desktop_config.json
%APPDATA%\Claude\claude_desktop_config.json
~/.config/Claude/claude_desktop_config.json
2. Add this to your configuration file:
{
"mcpServers": {
"IDAPro": {
"url": "http://127.0.0.1:3000/sse",
"type": "sse"
}
}
}
3. Restart Claude Desktop for the changes to take effect