RR

ramuneida/ramune-ida

Developer tools

Эта страница переведена автоматически. Технические детали смотрите в оригинале. Открыть оригинал

32 stars 3 forks Качество 68 Тренд 15

Безголовый IDA Pro MCP Server предоставляет возможности обратной инженерии IDA Pro агентам ИИ для более эффективного автоматизированного анализа.

Обзор

Безголовый IDA Pro MCP Server — предоставляет возможности обратной инженерии IDA Pro агентам ИИ через протокол Model Context. Ramune-ida запускает IDA Pro (idalib) в безголовом режиме и обертывает его как MCP-сервер. Агенты ИИ, такие как Claude, Cursor или любой MCP-совместимый клиент, могут декомпилировать функции, переименовывать символы, задавать типы и выполнять произвольные IDAPython - все через структурированные вызовы инструментов. Сервер MCP и IDA работают в отдельных процессах. Сервер представляет собой чистый асинхронный Python; каждый сотрудник IDA представляет собой однопоточный подпроцесс, взаимодействующий через выделенные fd-парные трубы (линейный протокол JSON). Это устраняет все проблемы безопасности потоков, которые мешают использованию IDA SDK. Инструменты определяются метаданными (описание, параметры, теги) и функциями обработчика. Сервер обнаруживает инструменты при запуске, динамически генерирует функции инструмента MCP и отправляет вызовы работнику. Для добавления нового инструмента требуется только файл метаданных и обработчик — никакого кода регистрации.

Обзор (машинный перевод)

**[WIP] Этот проект находится в активной разработке. API и функции могут изменяться без предварительного уведомления.

Главная ветвь содержит нестабильные обновления. Для стабильных версий, пожалуйста, используйте коммиты, отмеченные тегами выпуска.**

Безголовый IDA Pro MCP Server — предоставляет возможности обратной инженерии IDA Pro агентам ИИ через протокол Model Context.

中

##Что это такое?

Ramune-ida запускает IDA Pro (idalib) в безголовом режиме и обертывает его как MCP-сервер. Агенты ИИ, такие как Claude, Cursor или любой MCP-совместимый клиент, могут декомпилировать функции, переименовывать символы, задавать типы и выполнять произвольные IDAPython - все через структурированные вызовы инструментов.

Ключевые дизайнерские решения

** Разделение процессов** — сервер MCP и IDA работают в отдельных процессах. Сервер представляет собой чистый асинхронный Python; каждый сотрудник IDA представляет собой однопоточный подпроцесс, взаимодействующий через выделенные fd-парные трубы (линейный протокол JSON). Это устраняет все проблемы безопасности потоков, которые мешают использованию IDA SDK.

Архитектура плагина — Инструменты определяются метаданными (описание, параметры, теги) и функциями обработчика. Сервер обнаруживает инструменты при запуске, динамически генерирует функции инструмента MCP и отправляет вызовы работнику.

Эта страница переведена автоматически. Технические детали смотрите в оригинале.

README

Показан фрагмент оригинального README. Открыть оригинал.

Ramune-ida

[WIP] This project is under active development. APIs and features may change without notice.

The main branch contains unstable updates. For stable versions, please use commits marked with release tags.

Headless IDA Pro MCP Server — expose IDA Pro’s reverse engineering capabilities to AI agents via the Model Context Protocol.

中文版


What is this?

Ramune-ida runs IDA Pro (idalib) in headless mode and wraps it as an MCP server. AI agents like Claude, Cursor, or any MCP-compatible client can decompile functions, rename symbols, set types, and execute arbitrary IDAPython — all through structured tool calls.

Key Design Decisions

Process separation — The MCP server and IDA run in separate processes. The server is pure async Python; each IDA worker is a single-threaded subprocess communicating via dedicated fd-pair pipes (JSON line protocol). This eliminates all thread-safety issues that plague IDA SDK usage.

Plugin architecture — Tools are defined by metadata (description, parameters, tags) and handler functions. The server discovers tools at startup, dynamically generates MCP tool functions, and dispatches calls to the worker. Adding a new tool requires only a metadata file and a handler — no boilerplate registration code.

Worker is stateless — Workers are disposable command executors. All management state (task queues, crash recovery) lives in the Project layer. If a worker crashes, the project spawns a new one and reopens the IDB transparently.

Architecture

MCP Client (Claude / Cursor / ...)
    │  Streamable HTTP / SSE
    ▼
┌──────────────────────────────────┐
│  MCP Server (async Python)       │
│  FastMCP + Project management    │
│  Plugin discovery + registration │
└──────────────┬───────────────────┘
               │  fd-pair pipe (JSON lines)
         ┌─────┼─────┐
         ▼     ▼     ▼
      Worker Worker Worker
      idalib idalib idalib
      (plugin handlers)

Tools

Ramune-ida provides 28 tools (21 plugin tools + 7 session tools) covering the core reverse engineering workflow:

  • Session (7) — project lifecycle, database open/close, async task management
  • Analysis (4) — decompile, disassemble, cross-references, binary overview
  • Annotation (3) — rename symbols, read/write comments
  • Data (2) — auto-detect address type, read raw bytes
  • Listing (5) — enumerate functions, strings, imports, names, types (with filtering)
  • Search (2) — regex search across strings/names/disasm, byte pattern search
  • Types (3) — get/set types on functions/variables, declare C types (struct/enum/typedef)
  • Execution (1) — run arbitrary IDAPython with stdout/stderr capture
  • Undo (1) — IDA 9.0+ native undo

Low-frequency or exploratory operations are covered by execute_python, which provides full IDAPython access within the IDA environment.

Features

Открыть полный README на GitHub

Установка

docker run -p 8000:8000 ramune-ida
Новичок в MCP? Начните с руководства на mcpskill.org →

Конфигурация

{ "mcpServers": { "ramune-ida": { "command": "uv", "args": ["run", "ramune-ida", "--local", "stdio://"], "cwd": "/path/to/your/reversing/workspace" } } }