IDA Auto MCP
IDA Auto MCP
English
헤드리스 IDA Pro MCP 서버로, AI 에이전트가 수동 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가지 분석 도구 — 디컴파일, 디스어셈블리, 교차 참조(xrefs), 문자열, 임포트, 타입, 검색, 이름 변경, 패칭 등.
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 기본 블록 가져오기 |
| 주소를 세그먼트/함수/심볼 컨텍스트로 해석 |
| 동일 함수 내 두 주소 간의 제어 흐름 경로 찾기 |
| 교차 참조를 통한 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: Ghidra MCP Bridge
中文
无界面 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 installed
Maintenance
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
Self-hosted MCP server: 26 deterministic dev, security, and EVM tools.
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 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-
- 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.7MIT
- FlicenseNot gradedqualityDmaintenanceMCP server that enables AI agents to control IDA Pro instances via Unix-socket supervisor, providing tools for decompilation, disassembly, and Python scripting.3-