Token导航 LogoToken导航TokenDH.com
Ida Headless MCP logo
运维云端stdio官方级别未说明来源级核验

Ida Headless MCP

MCP Server

通过模型上下文协议提供无头IDA Pro二进制分析服务,支持多会话并发和自动化操作。

工具数

8

提示词数

0

GitHub Stars

115

资源数

0
PythonClaude云端部署Claude DesktopClaude

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

zboralski

提供方

zboralski

最后核验

2026/5/17 20:20

运行时

Python

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

python3 -c "import idapro; print('OK')"

详细介绍

IDA无头MCP服务器

通过模型上下文协议进行无头IDA Pro二进制分析。Go在Python workers处理IDA操作时协调多会话并发。

建筑

┌─────────────────┐
│  MCP Client     │  Claude Desktop, Claude Code, CLI
│  (HTTP/SSE)     │
└────────┬────────┘
         │ http://localhost:17300/
         ▼
┌─────────────────┐
│   Go Server     │  Session registry, worker manager, watchdog
│   (MCP Tools)   │
└────────┬────────┘
         │ Connect RPC over Unix socket
         ▼
┌─────────────────┐
│ Python Worker   │  IDA + idalib (one per session)
│ (per session)   │
└─────────────────┘

主要特点:

  • 通过进程隔离实现多会话并发
  • 52个用于二元分析的MCP工具
  • 自动会话超时(默认4小时,可配置)
  • 带可配置限制的分页结果(默认值1000)
  • Il2CppDumper Unity游戏的元数据导入
  • 不颤动 Flutter/Dart应用程序的元数据导入

先决条件

  1. IDA Pro 9.0+或IDA Essential 9.2+
  1. idalib:安装并激活:
   ./scripts/setup_idalib.sh

IDA作为图书馆文档.

  1. 转到1.21+ 使用协议工具:
   make install-tools
  1. Python 3.10+ 有依赖关系:
   pip3 install -r python/requirements.txt
  1. 可选: Il2CppDumper 用于Unity游戏分析
  1. 可选: 不颤动 用于Flutter/Dart应用程序分析
   # Install unflutter (provides flutter_meta.json for import_flutter)
   git clone https://github.com/zboralski/unflutter.git
   cd unflutter && make install

安装

git clone 
cd ida-headless-mcp
make setup

这将运行idalib安装程序,安装Python依赖项,并构建服务器。

对于手动设置或故障排除:

./scripts/setup_idalib.sh   # Setup idalib (requires IDA Pro/Essential 9.x)
make install-python         # Install Python dependencies
make build                  # Build Go server

用法

启动服务器

./bin/ida-mcp-server

服务器开始在端口17300上运行(可通过配置 config.json、环境变量,或 --port),暴露两种传输方式:

  • 流式HTTP(推荐): http://localhost:17300/
  • SSE兼容性端点: http://localhost:17300/sse

配置Claude桌面版

编辑 ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "ida-headless": {
      "url": "http://127.0.0.1:17300/",
      "type": "http"
    }
  }
}

编辑后重新启动Claude Desktop。

配置Claude代码

复制 .claude/settings.json~/.claude/settings.json 授予对所有IDA MCP工具的访问权限。

基本工作流程

1. open_binary(path="/path/to/binary.so")
   → {"session_id": "abc123", "has_decompiler": true}

2. run_auto_analysis(session_id="abc123")
   → {"completed": true}

3. get_entry_point(session_id="abc123")
   → {"address": 4198400}

4. get_decompiled_func(session_id="abc123", address=4198400)
   → {pseudocode...}

5. get_functions(session_id="abc123")
   → {"functions": [...], "count": 1523}

6. close_binary(session_id="abc123")
   → {"success": true}

颤振/飞镖导入

1. Run unflutter on the target: unflutter meta libapp.so
2. open_binary(path="libapp.so")
3. import_flutter(session_id="...", meta_json_path="flutter_meta.json")
   → {"functions_created": 9926, "structs_created": 2090,
      "signatures_applied": 9926, "comments_set": 34172}
4. run_auto_analysis(session_id="...")

import_flutter 该工具从unflutter读取结构化JSON元数据。它创建Dart类结构、具有类型化签名的函数定义,并在一次传递中注释THR/PP/string引用注释。

使用 tools/list 通过MCP查看所有可用工具。

配置

命令行标志:

./bin/ida-mcp-server \
  --port 17300 \
  --max-sessions 10 \
  --session-timeout 4h \
  --worker python/worker/server.py \
  --debug

环境变量(被CLI标志覆盖):

IDA_MCP_PORT=17300
IDA_MCP_SESSION_TIMEOUT_MIN=240
IDA_MCP_MAX_SESSIONS=10
IDA_MCP_WORKER=/custom/worker.py
IDA_MCP_DEBUG=1

发展

构建

make build          # Build Go server
make proto          # Regenerate protobuf
make test           # Run tests + consistency checks
make restart        # Kill, rebuild, restart server
make clean          # Clean build artifacts

测试

安装测试依赖项:

pip3 install -r requirements-test.txt

运行测试:

make test           # All tests
pytest tests/ -v    # Python tests only
go test ./...       # Go tests only

交互式测试

使用MCP检查器:

make run            # Start server
make inspector      # Launch inspector at http://localhost:5173

项目结构

ida-headless-mcp/
├── cmd/ida-mcp-server/   # Go MCP server entry point
├── internal/
│   ├── server/           # MCP tool handlers
│   ├── session/          # Session registry
│   └── worker/           # Worker process manager
├── proto/                # Protobuf definitions
├── python/worker/        # Python worker (idalib wrapper)
├── contrib/il2cpp/       # Il2CppDumper helpers (MIT)
└── tests/                # Test suites

添加新工具

  1. 将RPC添加到 proto/ida/worker/v1/ida_service.proto
  2. 重新生成: make proto
  3. 实施中 python/worker/ida_wrapper.py
  4. 在中添加处理程序 python/worker/connect_server.py
  5. 在中注册MCP工具 internal/server/server.go

会话生命周期

  1. 客户电话 open_binary(path)
  2. Go在注册表中创建会话(UUID)
  3. Go生成Python worker子进程
  4. Worker在以下位置创建Unix套接字 /tmp/ida-worker-{id}.sock
  5. Worker使用idalib打开IDA数据库
  6. Go通过套接字创建连接RPC客户端
  7. 后续工具通过Connect向worker调用代理
  8. 监视器监视空闲时间(默认值:4小时)
  9. 超时或 close_binary:保存数据库、杀死worker、清理
  10. 会话元数据保存在 /sessions 用于服务器重启后的自动恢复

故障排除

工人无法启动:

python3 -c "import idapro; print('OK')"

如果失败,请运行 ./scripts/setup_idalib.sh

套接字超时: 检查Python worker日志。Worker可能在初始化过程中崩溃。

端口已在使用中:

lsof -ti:17300 | xargs kill
# or use a different port
./bin/ida-mcp-server --port 17301

未找到会话: 会话可能已超时。使用 list_sessions 以检查活动会话。

许可证

麻省理工学院

相关项目

MCP服务器:

元数据转储程序:

参考文献

目录标签

目录标签

PythonClaude云端部署二进制分析本地部署IDAPro无头服务器多会话并发自动化工具

支持客户端

Claude DesktopClaude

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

session

运行时(runtime,运行环境)

Python

工具数量(toolCount,工具数)

8

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdiosession部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP