IDA Auto MCP

IDA Auto MCP

A headless IDA Pro MCP server that enables AI agents to automatically open, analyze, and query multiple binary files simultaneously without manual GUI interaction. It provides 36 tools for tasks like decompilation, disassembly, and cross-reference analysis through IDA's idalib library.

Category
访问服务器

README

IDA Auto MCP

English | 中文


English

Headless IDA Pro MCP server that enables AI agents to automatically open, analyze, and query multiple binary files — no manual IDA GUI interaction required.

Why This Project?

Existing IDA MCP solutions (like ida-pro-mcp) require you to:

  1. Manually open IDA Pro GUI
  2. Manually activate the MCP plugin (Ctrl+Alt+M)
  3. Repeat for every binary you want to analyze

This makes multi-file analysis (e.g., a program with multiple DLLs) painful. IDA Auto MCP solves this by using IDA's headless idalib library, letting AI agents autonomously open and analyze any number of binaries.

Key Features

  • Fully Automatic — AI agents call open_binary("path/to/file.dll") to start analysis, no human in the loop
  • Multi-Binary Sessions — Open multiple binaries simultaneously, switch between them freely
  • Headless — Uses idalib (IDA as a library), no GUI needed
  • 36 Analysis Tools — Decompile, disassemble, xrefs, strings, imports, search, rename, and more
  • MCP Standard — Works with Claude Desktop, Claude Code, and any MCP-compatible client
  • Stdio + HTTP — Stdio transport for MCP clients, HTTP for debugging

Prerequisites

  1. IDA Pro 9.0+ (with valid license)
  2. idapro Python package — shipped with IDA Pro:
    pip install "<IDA_INSTALL_DIR>/idalib/python/idapro-9.0-py3-none-win_amd64.whl"
    
  3. IDADIR — set via environment variable or --ida-dir flag

Installation

git clone https://github.com/mufeng05/ida-auto-mcp.git
cd ida-auto-mcp
pip install -e .

Quick Start

Claude Code (~/.claude.json)

{
  "mcpServers": {
    "ida": {
      "command": "python",
      "args": ["-m", "ida_auto_mcp", "--ida-dir", "C:/Program Files/IDA Pro"],
      "env": {
        "IDADIR": "C:/Program Files/IDA Pro"
      }
    }
  }
}

Claude Desktop (claude_desktop_config.json)

{
  "mcpServers": {
    "ida": {
      "command": "python",
      "args": ["-m", "ida_auto_mcp", "--ida-dir", "C:/Program Files/IDA Pro"],
      "env": {
        "IDADIR": "C:/Program Files/IDA Pro"
      }
    }
  }
}

Command Line

# Start server (stdio mode, default)
python -m ida_auto_mcp

# Pre-load a binary on startup
python -m ida_auto_mcp C:/samples/target.exe

# HTTP mode for debugging
python -m ida_auto_mcp --transport http --port 8765

# Verbose logging
python -m ida_auto_mcp -v

Tools (36 total)

Session Management

Tool Description
open_binary Open a binary for analysis (auto-analysis included)
close_binary Close a session
switch_binary Switch active session
list_sessions List all open sessions
get_current_session Get active session info

Database

Tool Description
get_database_info Binary metadata (filename, arch, imagebase)
wait_analysis Wait for auto-analysis to complete
save_database Save IDA database to disk

Analysis

Tool Description
list_functions List/filter functions with pagination
get_function_info Detailed function info (prototype, size)
decompile_function Hex-Rays decompilation to C pseudocode
disassemble_function Assembly disassembly
get_xrefs_to Cross-references TO an address
get_xrefs_from Cross-references FROM an address

Data

Tool Description
list_strings Strings in the binary
search_strings Regex search in strings
list_imports Imported functions by module
list_exports Exported symbols
list_segments Memory segments/sections

Control Flow

Tool Description
get_callers Find all functions that call a given function
get_callees Find all functions called by a given function
get_callgraph Build call graph with depth control (BFS)
get_basic_blocks Get CFG basic blocks with successor/predecessor info
get_address_info Resolve address to segment/function/symbol context

Types & Structs

Tool Description
list_structs List structs/unions in the database
get_struct_info Get struct details with all member fields
get_stack_frame Get stack frame layout (locals, args)
list_entrypoints List binary entry points
get_globals List global variables

Search & Modify

Tool Description
search_bytes Byte pattern search with wildcards (48 89 5C ?? 57)
rename_address Rename function/address
set_comment Set disassembly comment
set_function_type Set function prototype
patch_bytes Patch bytes at an address (binary patching)
read_bytes Read raw bytes at address
run_script Execute arbitrary IDAPython code

Multi-Binary Workflow Example

User: Analyze main.exe and its plugin.dll

AI: open_binary("C:/samples/main.exe")        → Opens & analyzes main.exe
AI: list_functions(filter_str="*LoadPlugin*")  → Finds LoadPlugin function
AI: decompile_function("LoadPlugin")           → Gets pseudocode
AI: open_binary("C:/samples/plugin.dll")       → Opens plugin.dll (new session)
AI: list_exports()                             → Lists DLL exports
AI: decompile_function("PluginInit")           → Decompiles export
AI: switch_binary("<main.exe session id>")     → Switches back to main.exe
AI: get_xrefs_to("0x401000")                  → Checks cross-references

Architecture

ida_auto_mcp/
├── server.py        # CLI entry point, idapro initialization
├── mcp_server.py    # MCP protocol implementation (stdio + HTTP)
├── _registry.py     # Global McpServer instance + @tool decorator
├── session.py       # Multi-binary session management via idalib
└── tools.py         # 36 IDA analysis tools

License

This project is for personal and educational use. Requires a valid IDA Pro license.


中文

无界面 IDA Pro MCP 服务器,让 AI 智能体自动打开、分析和查询多个二进制文件——无需手动操作 IDA GUI。

为什么做这个项目?

现有的 IDA MCP 方案(如 ida-pro-mcp)需要你:

  1. 手动打开 IDA Pro 界面
  2. 手动启用 MCP 插件(Ctrl+Alt+M)
  3. 每分析一个文件都要重复上述步骤

这对于多文件分析(比如一个包含多个 DLL 的程序)非常不友好。IDA Auto MCP 使用 IDA 的无头分析库 idalib,让 AI 智能体能够自主打开和分析任意数量的二进制文件。

核心特性

  • 全自动 — AI 直接调用 open_binary("path/to/file.dll") 即可开始分析,无需人工干预
  • 多文件会话 — 同时打开多个二进制文件,自由切换
  • 无需 GUI — 使用 idalib(IDA 库模式),不需要打开 IDA 界面
  • 36 个分析工具 — 反编译、反汇编、交叉引用、字符串、导入表、搜索、重命名等
  • MCP 标准协议 — 支持 Claude Desktop、Claude Code 及所有 MCP 兼容客户端
  • 双传输模式 — stdio 模式用于 MCP 客户端,HTTP 模式用于调试

前置要求

  1. IDA Pro 9.0+(需要有效许可证)
  2. idapro Python 包 — IDA Pro 安装目录自带:
    pip install "<IDA安装目录>/idalib/python/idapro-9.0-py3-none-win_amd64.whl"
    
  3. IDADIR — 通过环境变量或 --ida-dir 参数设置 IDA 安装路径

安装

git clone https://github.com/mufeng05/ida-auto-mcp.git
cd ida-auto-mcp
pip install -e .

快速开始

Claude Code 配置 (~/.claude.json)

{
  "mcpServers": {
    "ida": {
      "command": "python",
      "args": ["-m", "ida_auto_mcp", "--ida-dir", "C:/Program Files/IDA Pro"],
      "env": {
        "IDADIR": "C:/Program Files/IDA Pro"
      }
    }
  }
}

Claude Desktop 配置 (claude_desktop_config.json)

{
  "mcpServers": {
    "ida": {
      "command": "python",
      "args": ["-m", "ida_auto_mcp", "--ida-dir", "C:/Program Files/IDA Pro"],
      "env": {
        "IDADIR": "C:/Program Files/IDA Pro"
      }
    }
  }
}

命令行使用

# 启动服务器(stdio 模式,默认)
python -m ida_auto_mcp

# 启动时预加载一个文件
python -m ida_auto_mcp C:/samples/target.exe

# HTTP 模式(调试用)
python -m ida_auto_mcp --transport http --port 8765

# 详细日志
python -m ida_auto_mcp -v

工具列表(共 36 个)

会话管理

工具 说明
open_binary 打开二进制文件进行分析(含自动分析)
close_binary 关闭分析会话
switch_binary 切换到其他会话
list_sessions 列出所有打开的会话
get_current_session 获取当前活跃会话信息

数据库操作

工具 说明
get_database_info 获取二进制文件元数据(文件名、架构、基址)
wait_analysis 等待自动分析完成
save_database 保存 IDA 数据库到磁盘

分析功能

工具 说明
list_functions 列出/过滤函数(支持分页)
get_function_info 获取函数详细信息(原型、大小)
decompile_function Hex-Rays 反编译为 C 伪代码
disassemble_function 反汇编
get_xrefs_to 获取到某地址的交叉引用
get_xrefs_from 获取从某地址出发的交叉引用

数据查询

工具 说明
list_strings 列出二进制中的字符串
search_strings 正则搜索字符串
list_imports 列出导入函数(按模块)
list_exports 列出导出符号
list_segments 列出内存段/节

控制流分析

工具 说明
get_callers 查找调用指定函数的所有函数
get_callees 查找指定函数调用的所有函数
get_callgraph 构建调用图(BFS,支持深度控制)
get_basic_blocks 获取函数的基本块(CFG)
get_address_info 解析地址所属的段/函数/符号

类型与结构体

工具 说明
list_structs 列出数据库中的结构体/联合体
get_struct_info 获取结构体详细信息(含所有字段)
get_stack_frame 获取函数栈帧布局
list_entrypoints 列出二进制入口点
get_globals 列出全局变量

搜索与修改

工具 说明
search_bytes 字节模式搜索(支持通配符,如 48 89 5C ?? 57
rename_address 重命名函数/地址
set_comment 设置反汇编注释
set_function_type 设置函数原型
patch_bytes 在指定地址写入字节(二进制补丁)
read_bytes 读取指定地址的原始字节
run_script 执行 IDAPython 脚本

多文件分析示例

用户:分析 main.exe 和它的 plugin.dll

AI: open_binary("C:/samples/main.exe")        → 打开并分析 main.exe
AI: list_functions(filter_str="*LoadPlugin*")  → 查找 LoadPlugin 函数
AI: decompile_function("LoadPlugin")           → 反编译
AI: open_binary("C:/samples/plugin.dll")       → 打开 plugin.dll(新会话)
AI: list_exports()                             → 查看 DLL 导出
AI: decompile_function("PluginInit")           → 反编译导出函数
AI: switch_binary("<main.exe 的会话 ID>")      → 切回 main.exe
AI: get_xrefs_to("0x401000")                  → 查看交叉引用

项目结构

ida_auto_mcp/
├── server.py        # 命令行入口,idapro 初始化
├── mcp_server.py    # MCP 协议实现(stdio + HTTP 传输)
├── _registry.py     # 全局 McpServer 实例 + @tool 装饰器
├── session.py       # 多文件会话管理(基于 idalib)
└── tools.py         # 25 个 IDA 分析工具

许可

本项目供个人学习和研究使用,需要有效的 IDA Pro 许可证。

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选