Skip to main content
Glama
IDA MCP

IDA MCP

Official
by HexRaysSA

IDA 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@HexRaysSA

Codex CLI

codex plugin marketplace add HexRaysSA/codex-marketplace
codex plugin add ida-mcp@HexRaysSA

Pi

pi install git:github.com/HexRaysSA/ida-mcp@latest

oh-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 tools
close_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.

NameRequiredDescriptionDefault
instance_idNoOptional database instance id. If omitted, release the current target.

Output Schema

NameRequiredDescription
closedYes
execute_pythonA

Execute Python and return its result plus captured stdout and stderr.

NameRequiredDescriptionDefault
codeYesPython 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.
timeoutNoPython execution timeout in seconds. This does not include the separate initial autoanalysis wait.
instance_idNoOptional database instance id. If omitted, use the current target.

Output Schema

NameRequiredDescription
resultYes
stderrYes
stdoutYes
list_databasesA

Discover registered GUI and idalib databases in IDA Nexus.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
hintNo
instancesYes
open_databaseB

Attach to a GUI database or shared managed idalib worker through IDA Nexus.

NameRequiredDescriptionDefault
pathYesPath to a local executable or IDB. A GUI instance is used when available.
set_currentNoWhether this database should become the default target for execute_python().

Output Schema

NameRequiredDescription
hintYes
statusYesAttachment state: attached or current.
backendYesInstance backend: gui or idalib.
log_pathYes
nexus_idYes
recoveryYesCrash recovery performed while opening: none, repaired, or restored.
instance_idYes
referenceA

Look up the active ida-domain API and return a plain-text IDA reference.

NameRequiredDescriptionDefault
queryYesClass, method, or reverse-engineering concept to look up in the IDA reference.
save_databaseA

Explicitly save an active GUI or idalib database.

NameRequiredDescriptionDefault
instance_idNoOptional database instance id. If omitted, save the current target.

Output Schema

NameRequiredDescription
pathYes

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 1 tool updatev0.10.3
    • Changedopen_database2 fields changed
      • addedOutput schema / properties / recovery
        Added value: +{
        +  "description": "Crash recovery performed while opening: none, repaired, or restored.",
        +  "type": "string"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "instance_id",
        -  "backend",
        -  "status",
        -  "log_path",
        -  "nexus_id",
        -  "hint"
        -]New value: +[
        +  "instance_id",
        +  "backend",
        +  "status",
        +  "recovery",
        +  "log_path",
        +  "nexus_id",
        +  "hint"
        +]
  2. 6 tool updatesv0.7.0
    • First observedclose_database
    • First observedexecute_python
    • First observedlist_databases
    • First observedopen_database
    • First observedreference
    • First observedsave_database

TDQS

A4/5.0

Scored across 6 tools

Disambiguation5/5

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.

Naming Consistency4/5

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.

Tool Count5/5

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.

Completeness4/5

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

ActivityActive
ResponsivenessSyncing

Related MCP Connectors

Related MCP Servers

  • A
    license
    C
    quality
    D
    maintenance
    Enables 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.
    56
    4
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables 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 npm
    MIT
  • F
    license
    Not graded
    quality
    A
    maintenance
    Enables 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.
    -