IDA Pro MCP Server
IDA Pro MCP Server is a plugin that allows remote querying and control of IDA Pro through the Model Context Protocol (MCP) interface. This plugin enables AI assistants (such as Claude) to interact directly with IDA Pro for binary analysis tasks.
Overview
This server provides a series of tools that allow AI assistants to perform the following operations:
- Get byte data from specific addresses
- Get disassembly code
- Get decompiled pseudocode
- Query function names
- Get segment information
- List all functions
- Find cross-references
- Get import/export tables
- Get entry points
- Define/undefine functions
- Get various data types (dword, word, byte, qword, float, double, string)
- Get all strings in the binary file
Installation
- Ensure Python and related dependencies are installed:
pip install -r requirements.txt
- Copy the
ida-mcp-server.py
file to the IDA Pro plugins directory:
* Windows: %APPDATA%\Hex-Rays\IDA Pro\plugins\
* Linux: ~/.idapro/plugins/
* macOS: ~/Library/Application Support/IDA Pro/plugins/
Configure Claude / VSCode
Add the following configuration to the mcp.json
file in Claude or VSCode:
{
"mcpServers": {
"IDAPro": {
"url": "http://127.0.0.1:3000/sse",
"env": {}
}
}
}
Usage
- Open a binary file in IDA Pro
- The plugin will automatically load and start the MCP server locally (port 3000)
- Connect your AI assistant (e.g., Claude) to this server
- Use the AI assistant to perform binary analysis tasks
Available Analysis Tools
IDA Pro MCP Server provides the following tools:
get_bytes
: Get bytes at a specified address
get_disasm
: Get disassembly at a specified address
get_decompiled_func
: Get pseudocode of the function containing the specified address
get_function_name
: Get function name at a specified address
get_segments
: Get all segment information
get_functions
: Get all functions in the binary
get_xrefs_to
: Get all cross-references to a specified address
get_imports
: Get all imported functions
get_exports
: Get all exported functions
get_entry_point
: Get the entry point of the binary
make_function
: Create a function at a specified address
undefine_function
: Undefine a function at a specified address
get_dword_at
: Get the dword at a specified address
get_word_at
: Get the word at a specified address
get_byte_at
: Get the byte at a specified address
get_qword_at
: Get the qword at a specified address
get_float_at
: Get the float at a specified address
get_double_at
: Get the double at a specified address
get_string_at
: Get the string at a specified address
get_string_list
: Get all strings in the binary
get_strings
: Get all strings in the binary (with addresses)
Best Practices
When analyzing binary files, it's recommended to follow these steps:
- Examine the entry point
- Analyze the import table
- Review strings
- Track key API calls
- Identify main functional blocks
- Analyze control flow
- Identify malicious behaviors
- Analyze algorithms and encryption routines
- Document analysis results
- Use advanced techniques