Home / MCP / IDA Pro MCP Server

IDA Pro MCP Server

Provides an MCP backend for IDA Pro to enable vibe reversing workflows via multiple MCP clients.

python
Installation
Add the following to your MCP client configuration file.

Configuration

View docs
{
    "mcpServers": {
        "ida_pro_mcp_stdio": {
            "command": "uv",
            "args": [
                "run",
                "ida-pro-mcp",
                "--transport",
                "http://127.0.0.1:8744/sse"
            ]
        }
    }
}

This MCP server enables seamless interaction between IDA Pro and your preferred MCP client to assist in reverse engineering tasks. It runs as a backend service that communicates with your client and the IDA Pro plugin, providing structured access to binary analysis features, decompilation, and data exploration through a programmable API.

How to use

Install the MCP package and set up the server, then connect your MCP client to the running process. Start the SSE-enabled server interface to let your client communicate with IDA Pro and exchange analysis data in real time. Use the client’s prompts to drive decompilation, variable renaming, type adjustments, and function analysis within IDA Pro.

How to install

pip uninstall ida-pro-mcp
pip install https://github.com/mrexodia/ida-pro-mcp/archive/refs/heads/main.zip
```

Configure and install the IDA Plugin and MCP server support:

```
ida-pro-mcp --install
```

Restart IDA Pro and your MCP client completely for the changes to take effect. If a client runs in the background, quit it from the system tray or taskbar before restarting.

Additional notes

To connect the user interface for live interaction, run the SSE server using the provided transport endpoint. This enables you to view and control IDA Pro state through the MCP tools from your client.

Available tools

idb_meta

Retrieve IDB metadata such as path, base address, size, and hashes.

lookup_funcs

Find functions by address or name with auto-detection and support for lists.

cursor_addr

Get the current cursor address in the disassembly view.

cursor_func

Get the function at the current cursor position.

int_convert

Convert numbers between decimal, hex, bytes, ASCII, and binary representations.

list_funcs

List functions with pagination and filtering options.

list_globals

List global variables with pagination and filtering.

imports

List all imported symbols with optional pagination.

strings

List all strings in the binary with optional filtering.

segments

List memory segments and their permissions.

local_types

List all local types defined in the database.

decompile

Decompile function(s) at given address(es) to inspect high-level logic.

disasm

Disassemble function(s) with full details like arguments and stack frames.

xrefs_to

Get all cross-references to a given address.

xrefs_from

Get cross-references from a given address.

callees

Identify functions called by a function.

callers

Identify functions that call a given function.

entrypoints

List all program entry points.

set_comments

Set comments in disassembly and decompiler views at specific addresses.

patch_asm

Patch assembly instructions at specified addresses.

declare_type

Declare or update type information in the local type library.

get_bytes

Read raw bytes from the target binary at given addresses.

get_u8

Read 8-bit unsigned integers from addresses.

get_u16

Read 16-bit unsigned integers from addresses.

get_u32

Read 32-bit unsigned integers from addresses.

get_u64

Read 64-bit unsigned integers from addresses.

get_string

Read null-terminated strings from addresses.

get_global_value

Read value of global variables by address or name.

stack_frame

Get stack frame variables for function(s) and inspect their layout.

declare_stack

Create or modify stack variable definitions at specified offsets.

delete_stack

Remove stack variable definitions by name.

structs

List all defined structures and their members.

struct_info

Get detailed information about a structure.

read_struct

Read structure field values at given addresses.

search_structs

Search for structures by name pattern.

dbg_regs

Retrieve all registers for all threads in the debugging session.

dbg_callstack

Get the current call stack with module and symbol information.

dbg_start

Start the debugger process.

dbg_continue

Continue debugger execution.

dbg_run_to

Run the debugger to a specific address.

dbg_add_bp

Add a breakpoint at a given address.

dbg_read_mem

Read memory from the debugged process.

py_eval

Execute Python code within the IDA context and return results.

analyze_funcs

Perform a comprehensive analysis of functions including decompilation, xrefs, and strings.