IDAssistMCP
IDA Pro 9.x를 위한 독립형 MCP(Model Context Protocol) 서버 플러그인으로, IDA의 분석 기능을 Claude Desktop과 같은 LLM 클라이언트에 노출합니다.

기능
- 41개의 MCP 도구 - 바이너리 분석, 디컴파일, 상호 참조, 심볼 관리, 타입 시스템, 네비게이션, 패치, 내보내기 등을 포함
- 6개의 통합 도구 - 주석, 변수, 타입, 상호 참조, 북마크, 코드에 대한
action/format/direction 매개변수 제공
- 8개의 MCP 리소스 - 탐색 가능한 바이너리 메타데이터 제공 (분류, 함수, 임포트, 익스포트, 문자열, 정보, 세그먼트, 섹션)
- 7개의 가이드 프롬프트 - 일반적인 리버스 엔지니어링 워크플로우 지원 (함수 분석, 취약점 식별, 문서화, 데이터 흐름 추적, 함수 비교, 구조체 복구, 네트워크 프로토콜 분석)
- SSE 및 Streamable 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: 수동 설치 (릴리스 tarball 사용)
최신 릴리스 zip 파일을 GitHub Releases에서 다운로드하여 IDA 플러그인 디렉토리에 압축 해제하세요.
Linux / macOS:
unzip IDAssistMCP-*.zip -d ~/.idapro/plugins/
Windows:
Extract the zip into %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을 누르거나 Edit > Plugins > 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 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 파일을 참조하세요.