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

action/format/direction 参数,用于注释、变量、类型、交叉引用、书签和代码execute_on_main_thread() 包装器实现IDASSISTMCP_ 前缀)hcli plugin install idassistmcp
这将自动安装插件及其 Python 依赖项。
从 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环境变量来指定自定义插件目录。
添加到你的 Claude Desktop claude_desktop_config.json:
{
"mcpServers": {
"idassistmcp": {
"url": "http://localhost:9080/mcp"
}
}
}
通过带有 IDASSISTMCP_ 前缀的环境变量进行配置:
| 变量 | 默认值 | 描述 |
|---|---|---|
IDASSISTMCP_SERVER__HOST | localhost | 服务器绑定地址 |
IDASSISTMCP_SERVER__PORT | 9080 | 服务器端口 |
IDASSISTMCP_SERVER__TRANSPORT | streamablehttp | 传输类型(sse 或 streamablehttp) |
IDASSISTMCP_DEBUG | false | 启用调试模式 |
IDASSISTMCP_LOG_LEVEL | INFO | 日志级别 |
| 工具 | 描述 |
|---|---|
list_binaries | 列出当前加载的二进制文件 |
get_binary_info | 详细的二进制元数据(架构、哈希、段) |
| 工具 | 描述 |
|---|---|
get_code | 获取函数代码 — format:'decompile'(伪C)或 'disasm'(汇编) |
analyze_function | 全面分析:元数据、CFG、调用者/被调用者、反编译 |
get_basic_blocks | CFG 基本块及其后继/前驱 |
get_function_stack_layout | 栈帧布局(局部变量、参数、保存的寄存器) |
| 工具 | 操作 | 描述 |
|---|---|---|
xrefs | direction:to/from/both,include_calls:bool | 某地址的交叉引用及可选的调用者/被调用者 |
| 工具 | 操作 | 描述 |
|---|---|---|
comments | action:get, set, list, remove | 管理注释(常规、可重复、函数) |
| 工具 | 操作 | 描述 |
|---|---|---|
variables | action:list, rename | 列出局部变量,或通过 scope:auto、local、global 重命名局部/全局变量 |
| 工具 | 操作 / 描述 |
|---|---|
types | action:list, set, create_struct, create_enum — 管理 IDB 类型 |
get_classes | 从类型库中列出结构体/类类型 |
| 工具 | 描述 |
|---|---|
get_functions | 所有函数,支持过滤和分页 |
search_functions_by_name | 按名称模式及大小过滤器搜索 |
get_function_by_name | 精确名称查找 |
get_function_by_address | 地址查找 |
get_function_statistics | 聚合统计(数量、大小、前10个) |
| 工具 | 描述 |
|---|---|
rename_symbol | 重命名任意符号(函数或数据) |
batch_rename | 批量重命名多个符号 |
| 工具 | 描述 |
|---|---|
get_imports | 按模块分组的导入表 |
get_exports | 导出表 |
get_strings | 字符串表,支持分页 |
get_segments | 内存段及其权限 |
get_entry_points | 所有二进制入口点 |
| 工具 | 描述 |
|---|---|
read_memory | 读取地址处的原始字节 |
get_data_at | 获取地址处的类型化数据 |
search_bytes | 二进制字节模式搜索 |
search_strings | 字符串搜索,支持分页 |
create_data_var | 在地址处定义数据变量(byte/word/dword/qword/float/ascii/C 类型) |
get_data_vars | 列出已定义的数据变量(非代码项) |
| 工具 | 描述 |
|---|---|
patch_bytes | 在 IDB 中补丁原始字节 |
assemble_code | 在某个地址处汇编指令文本,并可选择补丁它 |
export_program | 将补丁后的二进制文件或 IDA 数据库导出到磁盘 |
| 工具 | 描述 |
|---|---|
navigate_to | 将 IDA 光标移动到某个地址 |
bookmarks | 整合的书签管理 — 操作:list、set、remove |
get_current_address | 获取光标位置的地址及其上下文 |
get_current_function | 获取光标位置的函数信息 |
| 工具 | 描述 |
|---|---|
start_task | 启动异步后台任务 |
get_task_status | 检查任务进度 |
cancel_task | 取消正在运行的任务 |
list_tasks | 列出所有异步任务 |
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 文件。