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

action/format/direction 매개변수 제공execute_on_main_thread() 래퍼 사용IDASSISTMCP_ 접두사)hcli plugin install idassistmcp
이 명령어는 플러그인과 Python 의존성을 자동으로 설치합니다.
최신 릴리스 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환경 변수를 사용하여 사용자 정의 플러그인 디렉토리를 지정할 수도 있습니다.
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 type) |
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 파일을 참조하세요.