Skip to main content
Glama

IDA Auto MCP

English | 中文


English

AIエージェントが自動的に複数のバイナリファイルを開き、分析し、クエリを実行できるようにするヘッドレスIDA Pro MCPサーバーです。手動でのIDA GUI操作は不要です。

なぜこのプロジェクトなのか?

既存のIDA MCPソリューション(ida-pro-mcpなど)では、以下の手順が必要です:

  1. IDA Pro GUIを手動で開く

  2. MCPプラグインを手動で有効化する (Ctrl+Alt+M)

  3. 分析したいバイナリごとに繰り返す

これでは、複数ファイル(例:複数のDLLを持つプログラム)の分析が非常に面倒です。IDA Auto MCPは、IDAのヘッドレスライブラリであるidalibを使用することで、AIエージェントが任意の数のバイナリを自律的に開いて分析できるようにし、この問題を解決します。

主な機能

  • 完全自動化 — AIエージェントが open_binary("path/to/file.dll") を呼び出すだけで分析を開始でき、人間が介在する必要はありません

  • マルチバイナリセッション — 複数のバイナリを同時に開き、自由に切り替え可能

  • ヘッドレス — idalib (ライブラリとしてのIDA) を使用するため、GUIは不要

  • 55個の分析ツール — 逆コンパイル、逆アセンブル、相互参照、文字列、インポート、型、検索、名前変更、パッチ適用など

  • MCP標準 — Claude Desktop、Claude Code、およびMCP互換クライアントで動作

  • Stdio + HTTP — MCPクライアント用のStdioトランスポートと、デバッグ用のHTTPトランスポート

前提条件

  1. IDA Pro 9.0+ (有効なライセンスが必要)

  2. idapro Pythonパッケージ — IDA Proに同梱されています:

    pip install "<IDA_INSTALL_DIR>/idalib/python/idapro-9.0-py3-none-win_amd64.whl"
  3. IDADIR — 環境変数または --ida-dir フラグで設定

インストール

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"
      }
    }
  }
}

コマンドライン

# 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

ツール (合計55個)

セッション

ツール

説明

open_binary

分析用にバイナリを開く(自動分析を含む)

close_binary

セッションを閉じる

switch_binary

アクティブなセッションを切り替える

list_sessions

開いているすべてのセッションを一覧表示

get_current_session

アクティブなセッション情報を取得

データベース

ツール

説明

get_database_info

バイナリのメタデータ(ファイル名、アーキテクチャ、イメージベース、MD5、SHA256、ファイルサイズ)

wait_analysis

自動分析の完了を待機

save_database

IDAデータベースをディスクに保存

分析

ツール

説明

list_functions

関数を一覧表示/フィルタリング(ページネーション対応)

get_function_info

詳細な関数情報(プロトタイプ、サイズ)

decompile_function

Hex-RaysによるC擬似コードへの逆コンパイル

disassemble_function

アセンブリの逆アセンブル

get_xrefs_to

特定のアドレスへの相互参照

get_xrefs_from

特定のアドレスからの相互参照

export_function

関数をCヘッダーまたは完全な逆コンパイルコードとしてエクスポート

データ

ツール

説明

list_strings

バイナリ内の文字列

search_strings

文字列の正規表現検索

list_imports

モジュールごとのインポート関数

list_exports

エクスポートされたシンボル

list_segments

メモリセグメント/セクション

list_entrypoints

バイナリのエントリポイント一覧

get_globals

グローバル変数のリスト

制御フロー

ツール

説明

get_callers

指定された関数を呼び出すすべての関数を検索

get_callees

指定された関数によって呼び出されるすべての関数を検索

get_callgraph

深さ制御(BFS)付きのコールグラフを構築

get_basic_blocks

型/後続/先行情報を含むCFG基本ブロックを取得

get_address_info

アドレスをセグメント/関数/シンボルのコンテキストに解決

find_paths

同じ関数内の2つのアドレス間の制御フローパスを検索

trace_data_flow

相互参照を介したBFSデータフロー追跡(前方/後方)

型と構造体

ツール

説明

list_structs

データベース内の構造体/共用体を一覧表示

get_struct_info

すべてのメンバーフィールドを含む構造体の詳細を取得

list_local_types

フィルタリング付きですべてのローカル型(構造体、列挙型、typedef)を一覧表示

type_inspect

名前付きの型を詳細に調査(サイズ、種類、宣言、メンバー)

declare_type

ローカル型ライブラリでC型の定義を宣言

apply_type

アドレスに型を適用(関数、グローバルなど)

enum_upsert

列挙型を作成または拡張(冪等)

infer_types

アドレスで型を自動推論して適用(Hex-Rays/ヒューリスティック)

xrefs_to_field

特定の構造体フィールドメンバーへの相互参照を取得

get_stack_frame

スタックフレームレイアウトを取得(ローカル変数、引数)

declare_stack_var

スタック変数を作成または名前変更

delete_stack_var

関数フレームからスタック変数を削除

コード定義

ツール

説明

define_function

アドレスに関数を定義

define_code

バイトをコード命令に変換

undefine_code

アイテムを未定義に戻し、生のバイトにする

検索

ツール

説明

search_bytes

ワイルドカード付きのバイトパターン検索 (48 89 5C ?? 57)

find_insns

ニーモニック/オペランドパターン(正規表現)に一致する命令を検索

変更

ツール

説明

rename_address

関数/アドレスの名前を変更(逆コンパイラキャッシュを自動無効化)

set_comment

逆アセンブリコメントを設定

append_comment

上書きせずにコメントを追加(自動重複排除)

set_function_type

関数プロトタイプを設定(逆コンパイラキャッシュを自動無効化)

patch_bytes

アドレスのバイトをパッチ(バイナリパッチ)

patch_asm

命令をアセンブルしてアドレスにパッチ

メモリ読み取り

ツール

説明

read_bytes

アドレスの生のバイトを読み取り

get_string_at

アドレスのnull終端文字列を読み取り

スクリプト

ツール

説明

run_script

任意のIDAPythonコードを実行

マルチバイナリワークフローの例

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

アーキテクチャ

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         # 55 IDA analysis tools

ライセンス

このプロジェクトは個人および教育目的のものです。有効なIDA Proライセンスが必要です。


Related MCP server: ida-pro-mcp-plus

中文

無界面 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 界面

  • 55 个分析工具 — 反编译、反汇编、交叉引用、字符串、导入表、类型系统、搜索、重命名、补丁等

  • 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

工具列表(共 55 个)

会话管理

工具

说明

open_binary

打开二进制文件进行分析(含自动分析)

close_binary

关闭分析会话

switch_binary

切换到其他会话

list_sessions

列出所有打开的会话

get_current_session

获取当前活跃会话信息

数据库操作

工具

说明

get_database_info

获取二进制文件元数据(文件名、架构、基址、MD5、SHA256、文件大小)

wait_analysis

等待自动分析完成

save_database

保存 IDA 数据库到磁盘

分析功能

工具

说明

list_functions

列出/过滤函数(支持分页)

get_function_info

获取函数详细信息(原型、大小)

decompile_function

Hex-Rays 反编译为 C 伪代码

disassemble_function

反汇编

get_xrefs_to

获取到某地址的交叉引用

get_xrefs_from

获取从某地址出发的交叉引用

export_function

导出函数为 C 头文件或完整反编译代码

数据查询

工具

说明

list_strings

列出二进制中的字符串

search_strings

正则搜索字符串

list_imports

列出导入函数(按模块)

list_exports

列出导出符号

list_segments

列出内存段/节

list_entrypoints

列出二进制入口点

get_globals

列出全局变量

控制流分析

工具

说明

get_callers

查找调用指定函数的所有函数

get_callees

查找指定函数调用的所有函数

get_callgraph

构建调用图(BFS,支持深度控制)

get_basic_blocks

获取函数基本块(含块类型/后继/前驱)

get_address_info

解析地址所属的段/函数/符号

find_paths

在函数内查找两个地址间的控制流路径

trace_data_flow

沿交叉引用 BFS 追踪数据流(前向/后向)

类型与结构体

工具

说明

list_structs

列出数据库中的结构体/联合体

get_struct_info

获取结构体详细信息(含所有字段)

list_local_types

列出所有本地类型(结构体、枚举、typedef)

type_inspect

按名称查看类型详情(大小/类型/声明/成员)

declare_type

声明 C 类型定义到本地类型库

apply_type

将类型应用到地址(函数、全局变量等)

enum_upsert

创建或扩展枚举类型(幂等操作)

infer_types

自动推断并应用地址处的类型(Hex-Rays/启发式)

xrefs_to_field

获取结构体特定字段的交叉引用

get_stack_frame

获取函数栈帧布局

declare_stack_var

创建或重命名栈变量

delete_stack_var

删除函数栈帧中的栈变量

代码定义

工具

说明

define_function

在指定地址定义函数

define_code

将字节转换为代码指令

undefine_code

取消定义,恢复为原始字节

搜索

工具

说明

search_bytes

字节模式搜索(支持通配符,如 48 89 5C ?? 57)

find_insns

按助记符/操作数模式搜索指令(支持正则)

修改

工具

说明

rename_address

重命名函数/地址(自动刷新反编译缓存)

set_comment

设置反汇编注释

append_comment

追加注释(不覆盖已有注释,自动去重)

set_function_type

设置函数原型(自动刷新反编译缓存)

patch_bytes

在指定地址写入字节(二进制补丁)

patch_asm

汇编指令并写入到指定地址

内存读取

工具

说明

read_bytes

读取指定地址的原始字节

get_string_at

读取指定地址的以 null 结尾的字符串

脚本

工具

说明

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         # 55 个 IDA 分析工具

许可

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

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    A PyGhidra-based MCP server that exposes Ghidra's reverse engineering capabilities to AI agents, enabling binary analysis via tools like overview, search, view, list, edit, script execution, and version control.
    1
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    An enhanced MCP server for IDA Pro that integrates bulk binary export, multi-instance management via Broker mode, and 80+ analysis tools for AI-assisted reverse engineering.
    6
    MIT
  • F
    license
    Not graded
    quality
    C
    maintenance
    MCP server that enables AI agents to control IDA Pro instances via Unix-socket supervisor, providing tools for decompilation, disassembly, and Python scripting.
    3
    -
  • A
    license
    Not graded
    quality
    B
    maintenance
    An MCP server that exposes IDA Pro's disassembler and Hex-Rays decompiler as tools and resources, enabling parallel binary analysis with multiple agents through a supervisor.
    28 PyPI
    9
    MIT