IDAssistMCP
独立 MCP(模型上下文协议)服务器插件,用于 IDA Pro 9.x,将 IDA 的分析能力暴露给 Claude Desktop 等 LLM 客户端。

功能
- 41 个 MCP 工具,涵盖二进制分析、反编译、交叉引用、符号管理、类型系统、导航、补丁、导出等
- 6 个整合工具,包含
action/format/direction 参数,用于注释、变量、类型、交叉引用、书签和代码
- 8 个 MCP 资源,用于可浏览的二进制元数据(分类、函数、导入、导出、字符串、信息、段、节)
- 7 个引导提示,用于常见的逆向工程工作流程(函数分析、漏洞识别、文档编写、数据流追踪、函数比较、结构体恢复、网络协议分析)
- SSE 和可流式 HTTP 传输,通过 Hypercorn ASGI 服务器实现
- 线程安全的 IDB 修改,通过
execute_on_main_thread() 包装器实现
- LRU 分析缓存,用于反编译等耗时操作
- 异步任务管理器,用于长时间运行的操作
- Pydantic 配置,支持环境变量(
IDASSISTMCP_ 前缀)
安装
先决条件
- IDA Pro 9.x,带有 Python 3.10+
- Hex-Rays 反编译器(可选,用于反编译工具)
选项 1:IDA 插件管理器(推荐)
hcli plugin install idassistmcp
这将自动安装插件及其 Python 依赖项。
选项 2:手动安装(从发布压缩包)
从 GitHub Releases 下载最新的发布压缩包,并将其解压到你的 IDA 插件目录:
Linux / macOS:
unzip IDAssistMCP-*.zip -d ~/.idapro/plugins/
Windows:
将压缩包解压到 %APPDATA%\Hex-Rays\IDA Pro\plugins\。
然后使用 IDA 自带的 Python(而不是系统 Python)安装依赖项:
Linux / macOS:
<IDA_INSTALL_DIR>/python3/bin/pip3 install -r ~/.idapro/plugins/IDAssistMCP/requirements.txt
Windows:
"<IDA_INSTALL_DIR>\python3\python.exe" -m pip install -r "%APPDATA%\Hex-Rays\IDA Pro\plugins\IDAssistMCP\requirements.txt"
将 <IDA_INSTALL_DIR> 替换为你的 IDA Pro 安装路径。
提示: 你也可以使用 IDAUSR 环境变量来指定自定义插件目录。
使用
启动服务器
- 在 IDA Pro 中打开一个二进制文件
- 按 Ctrl+Shift+M 或转到 编辑 > 插件 > IDAssistMCP
- MCP 服务器 URL 将打印到 IDA 的输出窗口中
- 再次按 Ctrl+Shift+M 停止服务器
Claude Desktop 配置
添加到你的 Claude Desktop claude_desktop_config.json:
{
"mcpServers": {
"idassistmcp": {
"url": "http://localhost:9080/mcp"
}
}
}
环境变量
通过带有 IDASSISTMCP_ 前缀的环境变量进行配置:
工具参考
二进制管理(2个)
| 工具 | 描述 |
|---|
list_binaries | 列出当前加载的二进制文件 |
get_binary_info | 详细的二进制元数据(架构、哈希、段) |
代码分析(4个)
交叉引用(1个整合)
| 工具 | 操作 | 描述 |
|---|
xrefs | direction:to/from/both,include_calls:bool | 某地址的交叉引用及可选的调用者/被调用者 |
注释(1个整合)
| 工具 | 操作 | 描述 |
|---|
comments | action:get, set, list, remove | 管理注释(常规、可重复、函数) |
变量(1个整合)
| 工具 | 操作 | 描述 |
|---|
variables | action:list, rename | 列出局部变量,或通过 scope:auto、local、global 重命名局部/全局变量 |
类型(2个 — 1个整合 + 1个独立)
| 工具 | 操作 / 描述 |
|---|
types | action:list, set, create_struct, create_enum — 管理 IDB 类型 |
get_classes | 从类型库中列出结构体/类类型 |
函数发现(5个)
符号管理(2个)
| 工具 | 描述 |
|---|
rename_symbol | 重命名任意符号(函数或数据) |
batch_rename | 批量重命名多个符号 |
二进制信息(5个)
数据分析(6个)
补丁(3个)
| 工具 | 描述 |
|---|
patch_bytes | 在 IDB 中补丁原始字节 |
assemble_code | 在某个地址处汇编指令文本,并可选择补丁它 |
export_program | 将补丁后的二进制文件或 IDA 数据库导出到磁盘 |
导航(4个)
任务管理(4个)
| 工具 | 描述 |
|---|
start_task | 启动异步后台任务 |
get_task_status | 检查任务进度 |
cancel_task | 取消正在运行的任务 |
|
项目结构
IDAssistMCP/
├── idassistmcp_plugin.py # IDA plugin_t 入口点
├── requirements.txt
├── README.md
└── src/
└── idassist_mcp/
├── __init__.py
├── server.py # FastMCP 服务器 + 传输
├── context.py # 单一二进制 IDA 上下文
├── tools.py # 41 个 MCP 工具(IDA API)
├── resources.py # 8 个 MCP 资源
├── prompts.py # 7 个引导工作流提示
├── config.py # Pydantic 设置
├── cache.py # LRU 分析缓存
├── tasks.py # 异步任务管理器
├── logging.py # IDA 日志包装器
├── utils.py # IDA 专用工具
└── ui/
└── tool_registry.py # 用于 UI 的工具目录
许可证
详情请参阅 LICENSE 文件。