IDA Pro 的独立 MCP 服务器插件。
[!IMPORTANT] 计划归档: IDAssistMCP 计划归档,因为 IDA Pro 将引入内置的原生 MCP 服务器。原生支持不再需要维护单独的 MCP 集成,并使其与 IDA Pro 本身保持一致。请在您安装的版本中提供原生 MCP 服务器后使用它。此仓库将保留以供参考。
用于 IDA Pro 9.x 的独立 MCP(模型上下文协议)服务器插件,将 IDA 的分析能力暴露给 Claude Desktop 等 LLM 客户端。

action/format/direction 参数,用于注释、变量、类型、交叉引用、书签和代码execute_on_main_thread() 包装器IDASSISTMCP_ 前缀)hcli plugin install idassistmcp
这会自动安装插件及其 Python 依赖项。
从 GitHub Releases 下载最新的发布 zip 并解压到您的 IDA 插件目录:
Linux / macOS:
unzip IDAssistMCP-*.zip -d ~/.idapro/plugins/
Windows:
将 zip 解压到 %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 entry point
├── requirements.txt
├── README.md
└── src/
└── idassist_mcp/
├── __init__.py
├── server.py # FastMCP server + transport
├── context.py # Single-binary IDA context
├── tools.py # 41 MCP tools (IDA API)
├── resources.py # 8 MCP resources
├── prompts.py # 7 guided workflow prompts
├── config.py # Pydantic settings
├── cache.py # LRU analysis cache
├── tasks.py # Async task manager
├── logging.py # IDA logging wrapper
├── utils.py # IDA-specific utilities
└── ui/
└── tool_registry.py # Tool catalog for UI
有关详细信息,请参阅 LICENSE 文件。