IDA Auto MCP
IDA Auto MCP
English
AIエージェントが自動的に複数のバイナリファイルを開き、分析し、クエリを実行できるようにするヘッドレスIDA Pro MCPサーバーです。手動でのIDA GUI操作は不要です。
なぜこのプロジェクトなのか?
既存のIDA MCPソリューション(ida-pro-mcpなど)では、以下の手順が必要です:
IDA Pro GUIを手動で開く
MCPプラグインを手動で有効化する (Ctrl+Alt+M)
分析したいバイナリごとに繰り返す
これでは、複数ファイル(例:複数の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トランスポート
前提条件
IDA Pro 9.0+ (有効なライセンスが必要)
idapro Pythonパッケージ — IDA Proに同梱されています:
pip install "<IDA_INSTALL_DIR>/idalib/python/idapro-9.0-py3-none-win_amd64.whl"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個)
セッション
ツール | 説明 |
| 分析用にバイナリを開く(自動分析を含む) |
| セッションを閉じる |
| アクティブなセッションを切り替える |
| 開いているすべてのセッションを一覧表示 |
| アクティブなセッション情報を取得 |
データベース
ツール | 説明 |
| バイナリのメタデータ(ファイル名、アーキテクチャ、イメージベース、MD5、SHA256、ファイルサイズ) |
| 自動分析の完了を待機 |
| IDAデータベースをディスクに保存 |
分析
ツール | 説明 |
| 関数を一覧表示/フィルタリング(ページネーション対応) |
| 詳細な関数情報(プロトタイプ、サイズ) |
| Hex-RaysによるC擬似コードへの逆コンパイル |
| アセンブリの逆アセンブル |
| 特定のアドレスへの相互参照 |
| 特定のアドレスからの相互参照 |
| 関数をCヘッダーまたは完全な逆コンパイルコードとしてエクスポート |
データ
ツール | 説明 |
| バイナリ内の文字列 |
| 文字列の正規表現検索 |
| モジュールごとのインポート関数 |
| エクスポートされたシンボル |
| メモリセグメント/セクション |
| バイナリのエントリポイント一覧 |
| グローバル変数のリスト |
制御フロー
ツール | 説明 |
| 指定された関数を呼び出すすべての関数を検索 |
| 指定された関数によって呼び出されるすべての関数を検索 |
| 深さ制御(BFS)付きのコールグラフを構築 |
| 型/後続/先行情報を含むCFG基本ブロックを取得 |
| アドレスをセグメント/関数/シンボルのコンテキストに解決 |
| 同じ関数内の2つのアドレス間の制御フローパスを検索 |
| 相互参照を介したBFSデータフロー追跡(前方/後方) |
型と構造体
ツール | 説明 |
| データベース内の構造体/共用体を一覧表示 |
| すべてのメンバーフィールドを含む構造体の詳細を取得 |
| フィルタリング付きですべてのローカル型(構造体、列挙型、typedef)を一覧表示 |
| 名前付きの型を詳細に調査(サイズ、種類、宣言、メンバー) |
| ローカル型ライブラリでC型の定義を宣言 |
| アドレスに型を適用(関数、グローバルなど) |
| 列挙型を作成または拡張(冪等) |
| アドレスで型を自動推論して適用(Hex-Rays/ヒューリスティック) |
| 特定の構造体フィールドメンバーへの相互参照を取得 |
| スタックフレームレイアウトを取得(ローカル変数、引数) |
| スタック変数を作成または名前変更 |
| 関数フレームからスタック変数を削除 |
コード定義
ツール | 説明 |
| アドレスに関数を定義 |
| バイトをコード命令に変換 |
| アイテムを未定義に戻し、生のバイトにする |
検索
ツール | 説明 |
| ワイルドカード付きのバイトパターン検索 ( |
| ニーモニック/オペランドパターン(正規表現)に一致する命令を検索 |
変更
ツール | 説明 |
| 関数/アドレスの名前を変更(逆コンパイラキャッシュを自動無効化) |
| 逆アセンブリコメントを設定 |
| 上書きせずにコメントを追加(自動重複排除) |
| 関数プロトタイプを設定(逆コンパイラキャッシュを自動無効化) |
| アドレスのバイトをパッチ(バイナリパッチ) |
| 命令をアセンブルしてアドレスにパッチ |
メモリ読み取り
ツール | 説明 |
| アドレスの生のバイトを読み取り |
| アドレスのnull終端文字列を読み取り |
スクリプト
ツール | 説明 |
| 任意の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)需要你:
手动打开 IDA Pro 界面
手动启用 MCP 插件(Ctrl+Alt+M)
每分析一个文件都要重复上述步骤
这对于多文件分析(比如一个包含多个 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 模式用于调试
前置要求
IDA Pro 9.0+(需要有效许可证)
idapro Python 包 — IDA Pro 安装目录自带:
pip install "<IDA安装目录>/idalib/python/idapro-9.0-py3-none-win_amd64.whl"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 个)
会话管理
工具 | 说明 |
| 打开二进制文件进行分析(含自动分析) |
| 关闭分析会话 |
| 切换到其他会话 |
| 列出所有打开的会话 |
| 获取当前活跃会话信息 |
数据库操作
工具 | 说明 |
| 获取二进制文件元数据(文件名、架构、基址、MD5、SHA256、文件大小) |
| 等待自动分析完成 |
| 保存 IDA 数据库到磁盘 |
分析功能
工具 | 说明 |
| 列出/过滤函数(支持分页) |
| 获取函数详细信息(原型、大小) |
| Hex-Rays 反编译为 C 伪代码 |
| 反汇编 |
| 获取到某地址的交叉引用 |
| 获取从某地址出发的交叉引用 |
| 导出函数为 C 头文件或完整反编译代码 |
数据查询
工具 | 说明 |
| 列出二进制中的字符串 |
| 正则搜索字符串 |
| 列出导入函数(按模块) |
| 列出导出符号 |
| 列出内存段/节 |
| 列出二进制入口点 |
| 列出全局变量 |
控制流分析
工具 | 说明 |
| 查找调用指定函数的所有函数 |
| 查找指定函数调用的所有函数 |
| 构建调用图(BFS,支持深度控制) |
| 获取函数基本块(含块类型/后继/前驱) |
| 解析地址所属的段/函数/符号 |
| 在函数内查找两个地址间的控制流路径 |
| 沿交叉引用 BFS 追踪数据流(前向/后向) |
类型与结构体
工具 | 说明 |
| 列出数据库中的结构体/联合体 |
| 获取结构体详细信息(含所有字段) |
| 列出所有本地类型(结构体、枚举、typedef) |
| 按名称查看类型详情(大小/类型/声明/成员) |
| 声明 C 类型定义到本地类型库 |
| 将类型应用到地址(函数、全局变量等) |
| 创建或扩展枚举类型(幂等操作) |
| 自动推断并应用地址处的类型(Hex-Rays/启发式) |
| 获取结构体特定字段的交叉引用 |
| 获取函数栈帧布局 |
| 创建或重命名栈变量 |
| 删除函数栈帧中的栈变量 |
代码定义
工具 | 说明 |
| 在指定地址定义函数 |
| 将字节转换为代码指令 |
| 取消定义,恢复为原始字节 |
搜索
工具 | 说明 |
| 字节模式搜索(支持通配符,如 |
| 按助记符/操作数模式搜索指令(支持正则) |
修改
工具 | 说明 |
| 重命名函数/地址(自动刷新反编译缓存) |
| 设置反汇编注释 |
| 追加注释(不覆盖已有注释,自动去重) |
| 设置函数原型(自动刷新反编译缓存) |
| 在指定地址写入字节(二进制补丁) |
| 汇编指令并写入到指定地址 |
内存读取
工具 | 说明 |
| 读取指定地址的原始字节 |
| 读取指定地址的以 null 结尾的字符串 |
脚本
工具 | 说明 |
| 执行 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 许可证。
This server cannot be deployed
Maintenance
Related MCP Connectors
214 tools for AI agents over one MCP endpoint: image, video, audio, 3D, data, storage, mail, GPUs.
MCP server for building and testing AI agents with multi-model experimentation and insights.
Free public MCP for AI agents — 193 tools, 44 workflows. No API key.
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceA 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-
- AlicenseNot gradedqualityDmaintenanceAn 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.6MIT
- FlicenseNot gradedqualityCmaintenanceMCP server that enables AI agents to control IDA Pro instances via Unix-socket supervisor, providing tools for decompilation, disassembly, and Python scripting.3-
- AlicenseNot gradedqualityBmaintenanceAn 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 PyPI9MIT