Skip to main content
Glama

IDA Auto MCP

English | 中文


English

Сервер IDA Pro MCP без графического интерфейса, который позволяет ИИ-агентам автоматически открывать, анализировать и запрашивать несколько бинарных файлов — без необходимости ручного взаимодействия с GUI IDA.

Зачем нужен этот проект?

Существующие решения IDA MCP (например, ida-pro-mcp) требуют от вас:

  1. Вручную открыть GUI IDA Pro

  2. Вручную активировать плагин MCP (Ctrl+Alt+M)

  3. Повторять это для каждого бинарного файла, который вы хотите проанализировать

Это делает анализ нескольких файлов (например, программы с несколькими DLL) утомительным. IDA Auto MCP решает эту проблему, используя библиотеку idalib от IDA, позволяя ИИ-агентам автономно открывать и анализировать любое количество бинарных файлов.

Ключевые особенности

  • Полная автоматизация — ИИ-агенты вызывают open_binary("path/to/file.dll") для начала анализа, без участия человека

  • Сессии с несколькими файлами — Открывайте несколько бинарных файлов одновременно, свободно переключайтесь между ними

  • Без GUI — Использует idalib (IDA как библиотека), графический интерфейс не требуется

  • 55 инструментов анализа — Декомпиляция, дизассемблирование, перекрестные ссылки, строки, импорт, типы, поиск, переименование, патчинг и многое другое

  • Стандарт MCP — Работает с Claude Desktop, Claude Code и любым MCP-совместимым клиентом

  • Stdio + HTTP — Транспорт Stdio для клиентов MCP, HTTP для отладки

Предварительные требования

  1. IDA Pro 9.0+ (с действующей лицензией)

  2. Python-пакет idapro — поставляется вместе с 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

Найти пути потока управления между двумя адресами в одной функции

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

Найти инструкции, соответствующие шаблону мнемоники/операнда (regex)

Модификация

Инструмент

Описание

rename_address

Переименовать функцию/адрес (автоматически сбрасывает кэш декомпилятора)

set_comment

Установить комментарий дизассемблирования

append_comment

Добавить комментарий без перезаписи (автоматическое удаление дубликатов)

set_function_type

Установить прототип функции (автоматически сбрасывает кэш декомпилятора)

patch_bytes

Патчить байты по адресу (бинарный патчинг)

patch_asm

Ассемблировать инструкцию и пропатчить по адресу

Чтение памяти

Инструмент

Описание

read_bytes

Читать сырые байты по адресу

get_string_at

Читать строку с нулевым терминатором по адресу

Скрипт

Инструмент

Описание

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: Ghidra MCP Bridge

中文

无界面 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 许可证。

Maintenance

ActivitySlowing
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    A lightweight MCP server that exposes IDA Pro's disassembly, decompilation, and symbol query capabilities to AI clients, with reduced tool set for lower token consumption.
    284
    -
  • 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.
    7
    MIT
  • F
    license
    Not graded
    quality
    D
    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
    -