IDA MCP
OfficialIDA MCP
⚠️ 실험용 프리릴리스 ⚠️
이 저장소는 현재 활발히 작업 중이므로 사용하지 마십시오.
IDA GUI 플러그인
IDA MCP를 사용할 때 IDA GUI 인스턴스를 지원하려면 플러그인을 설치하십시오:
uvx ida-hcli plugin install https://github.com/HexRaysSA/ida-mcp
# or if you have hcli installed:
hcli plugin install https://github.com/HexRaysSA/ida-mcp참고: GUI 플러그인이 없으면 IDA MCP는 헤드리스 모드에서만 작동합니다.
Related MCP server: IDA MCP
MCP 설치
요구 사항
PATH에 설치되어 있어야 합니다.
idalib 및 Python 3.11+을 포함하는 IDA 9.4 이상
에이전트의 혼동을 줄이기 위해 다른 IDA MCP 서버는 비활성화해야 합니다.
Claude Code
claude plugin marketplace add HexRaysSA/claude-marketplace
claude plugin install ida-mcp@HexRaysSACodex CLI
codex plugin marketplace add HexRaysSA/codex-marketplace
codex plugin add ida-mcp@HexRaysSAPi
pi install git:github.com/HexRaysSA/ida-mcp@latestoh-my-pi
omp plugin install github:HexRaysSA/ida-mcp#latest기타 에이전트
MCP JSON 구성에서 일반 stdio MCP 서버를 설정하십시오:
{
"mcpServers": {
"ida": {
"command": "uvx",
"args": [
"ida-nexus",
"mcp",
"--agent=my-agent"
]
}
}
}uvx는 PyPI에서 최신 안정 버전의 ida-nexus 릴리스를 확인하므로 이 구성은 릴리스마다 업데이트할 필요가 없습니다. ida-domain이 개발 릴리스로 게시되어 있기 때문에 현재는 프리릴리스 의존성 해석이 필요합니다.
--agent=my-agent는 메트릭 대시보드에서 세션을 구분하는 데 사용되는 사람이 선택한 레이블입니다(claude-code, cursor, my-custom-agent 등).
다음 클라이언트를 테스트했지만, 모든 MCP 클라이언트가 비슷하게 작동해야 합니다:
사용 예
에이전트 하네스를 시작하고 다음과 같이 요청하십시오:
/path/to/sample.elf를 리버스 엔지니어링 해줘
GUI 통합을 테스트하려면 IDA에서 무언가를 열고 하네스에 다음과 같이 물어보십시오:
IDA GUI에 무엇이 열려 있나요?
개발자: IDA Nexus
IDA MCP 프로젝트는 IDA Nexus를 기반으로 구축되었으며, 여러 클라이언트가 IDA 데이터베이스를 원활하게 공유하고 운영할 수 있습니다.
ida-nexus 라이브러리를 기반으로 자체 도구를 구축할 수 있습니다. 자세한 내용은 문서를 참조하십시오.
Available Tools
6 toolsclose_databaseA
Release this MCP's IDA Nexus database handle without disrupting other clients.
If this is the final lease on a managed idalib worker, orphaned execution is cancelled and this call waits for the IDB to finish closing. GUI databases are never closed here.
| Name | Required | Description | Default |
|---|---|---|---|
| instance_id | No | Optional database instance id. If omitted, release the current target. |
Output Schema
| Name | Required | Description |
|---|---|---|
| closed | Yes |
execute_pythonA
Execute Python and return its result plus captured stdout and stderr.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | Python code that runs against an already-open database. Call reference(query) first; do not guess the API shape. `db` is the current ida-domain Database, and `ida_domain` is also imported globally. Imports, variables, and definitions persist for this agent's database lease. A single or trailing expression is returned. For function-style code, define run(db), execute(db), or main(db); it is invoked automatically when there is no trailing expression. | |
| timeout | No | Python execution timeout in seconds. This does not include the separate initial autoanalysis wait. | |
| instance_id | No | Optional database instance id. If omitted, use the current target. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes | |
| stderr | Yes | |
| stdout | Yes |
list_databasesA
Discover registered GUI and idalib databases in IDA Nexus.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | No | |
| instances | Yes |
open_databaseB
Attach to a GUI database or shared managed idalib worker through IDA Nexus.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Path to a local executable or IDB. A GUI instance is used when available. | |
| set_current | No | Whether this database should become the default target for execute_python(). |
Output Schema
| Name | Required | Description |
|---|---|---|
| hint | Yes | |
| status | Yes | Attachment state: attached or current. |
| backend | Yes | Instance backend: gui or idalib. |
| log_path | Yes | |
| nexus_id | Yes | |
| recovery | Yes | Crash recovery performed while opening: none, repaired, or restored. |
| instance_id | Yes |
referenceA
Look up the active ida-domain API and return a plain-text IDA reference.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Class, method, or reverse-engineering concept to look up in the IDA reference. |
save_databaseA
Explicitly save an active GUI or idalib database.
| Name | Required | Description | Default |
|---|---|---|---|
| instance_id | No | Optional database instance id. If omitted, save the current target. |
Output Schema
| Name | Required | Description |
|---|---|---|
| path | Yes |
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
v0.10.3- Changed
open_database2 fields changed- added
Output schema / properties / recoveryAdded value: +{ + "description": "Crash recovery performed while opening: none, repaired, or restored.", + "type": "string" +} - changed
Output schema / requiredPrevious value: -[ - "instance_id", - "backend", - "status", - "log_path", - "nexus_id", - "hint" -]New value: +[ + "instance_id", + "backend", + "status", + "recovery", + "log_path", + "nexus_id", + "hint" +]
6 tool updates
v0.7.0- First observed
close_database - First observed
execute_python - First observed
list_databases - First observed
open_database - First observed
reference - First observed
save_database
TDQS
Scored across 6 tools
Each tool has a clearly distinct purpose: reference for API lookup, open_database for attaching, execute_python for running code, list_databases for discovery, save_database for persistence, and close_database for cleanup. No two tools overlap in functionality, making misselection unlikely.
Most tools follow a consistent verb_noun pattern (open_database, list_databases, save_database, close_database, execute_python). The exception is 'reference', which is a noun and deviates from the verb-first convention, but it remains clear and unambiguous, so the minor inconsistency is acceptable.
Six tools is well within the ideal range for a focused server. Each tool covers a distinct operation necessary for IDA database interaction and Python execution, with no redundancy or bloat.
The surface covers the core lifecycle (open, list, save, close) and execution (execute_python) along with reference lookup. While there is no explicit 'create database' or 'get database info' tool, execute_python can handle arbitrary operations, mitigating any gaps. Minor missing features like status checks are workable.
Maintenance
Related MCP Connectors
Code intelligence platform for AI agents. 20 tools for architecture, security & impact analysis.
Codebase intelligence for agents: 152 structured artifacts across 21 programs, one call.
AI-native programming language and toolchain for accountable, verifiable agent-driven development.
Code intelligence for coding agents: semantic, AST, graph, and full-text search. 279+ languages.
Related MCP Servers
- AlicenseCqualityDmaintenanceEnables AI-assisted reverse engineering in IDA Pro by providing tools to analyze binaries, decompile functions, manage comments, search patterns, and interact with the IDA database through natural language.564MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to inspect, reverse engineer, decompile, and operate on binaries through IDA Pro, including headless and GUI sessions, over stdio or Streamable HTTP.42 npmMIT
- FlicenseNot gradedqualityAmaintenanceEnables AI assistants to drive IDA Pro for reverse engineering and binary analysis, including running Python scripts inside the disassembler, extracting strings, imports, exports and functions, searching for immediate values, text and byte sequences, and retrieving disassembly for address ranges.-
- FlicenseNot gradedqualityAmaintenanceEnables AI assistants to remotely drive IDA Pro for reverse engineering and binary analysis, including script execution, binary metadata retrieval, value/text/byte searches, and disassembly.-