Token导航 LogoToken导航TokenDH.com
IDA Script Helper logo
开发工具未说明官方级别未说明来源级核验

IDA Script Helper

MCP Server

ida-api-mcp是一个MCP服务器,帮助代理通过从真实的IDA Pro SDK源代码和IDAPython示例中检索API调用序列来编写正确的IDA Pro脚本。

工具数

8

提示词数

0

GitHub Stars

1

资源数

0
代码分析PythonClaude逆向工程Claude

安装说明

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

作者 / 组织

Taardisaa

提供方

Taardisaa

最后核验

2026/5/17 20:21

快速接入

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

详细介绍

ida api mcp

ida-api-mcp 是一个MCP服务器,通过检索来帮助代理编写正确的IDA Pro脚本 API调用序列 来自真实的IDA SDK源代码和IDAPython示例。

当前状态:在IDA Pro 8.4 SDK和相应的IDAPython版本上进行了测试。由于解析器后端基于C++的树形图和Python的内置 ast 对于IDAPython的模块,需要稍作调整以支持解析其他版本的SDK示例。

示例用例

当为Claude Code等代理启用MCP服务器时,您可以询问:

在examples/dir下,编写一个列出所有函数的IDAPython脚本\ 在.text部分中,然后在控制台中打印出来。将脚本命名为“list_all_text_funcs.py”。

然后,代理可以查询此工具集以找到完成此任务的正确工作流(API调用序列),并检索API文档以了解如何正确使用每个函数。最后,代理可以生成一个完整的脚本,该脚本遵循API调用的正确顺序,并具有正确的参数和数据流。

问题陈述

LLM经常得到错误的IDA SDK API调用序列。列出交叉引用不是一个单独的API调用,它需要调用 get_screen_ea(),获得a func_t* 随着 get_func(),迭代 xrefblk_t::first_to() / xrefblk_t::next_to(),并使用格式化输出 get_name()msg()。错过任何一步,脚本都会悄无声息地失败。

此工具自动从IDA自己的SDK示例(C++插件、处理器模块、加载器)中提取这些工作流模式 IDAPython示例脚本,对其进行索引,并通过MCP提供服务,以便任何LLM都可以查询它们。

特性

  • 双语支持:从C++SDK示例和IDAPython脚本中提取工作流
  • SWIG存根解析:从中获取丰富的文档字符串 ida_*.py 存根(@param, @return,签名)
  • 数据流跟踪:遵循API调用之间的变量分配,以显示输出如何输入
  • 信任排名结果:官方SDK示例首先出现,模块和加载器其次
  • 语义搜索:与工作流描述和API简介匹配的自然语言查询
  • 多版本支持:并排索引多个SDK版本,在查询时切换

MCP工具

工具目的输入
get_workflows查找任务的API调用序列自然语言任务描述
get_api_doc查找函数、结构或类(模糊匹配)函数/类型名称或关键字
list_related_apis查找同时出现的API函数或类型名称
get_index_info显示索引版本元数据和记录计数--
clear_index删除一个版本的索引数据可选版本字符串
initialize_index从SDK路径(和可选的IDAPython路径)SDK_path、version、可选的python_path构建索引
get_versions列出所有已索引的SDK版本--
select_version切换活动SDK版本版本字符串(例如。, "84")

示例

get_workflows("get the function at an address and print its name")

退货:

=== Result 1 (trust: highest) ===
Workflow: run
Source: plugins/vcsample/vcsample.cpp

1. get_screen_ea(...)
2. get_func(...)        [uses ea from step 1]
3. get_func_name(...)   [uses pfn from step 2]
4. msg(...)

Source code:
  ea_t ea = get_screen_ea();
  func_t *pfn = get_func(ea);
  qstring name = get_func_name(ea);
  msg("Function: %s\n", name.c_str());

随着 --python-path,Python结果与C++一起显示:

=== Result 2 (trust: highest) ===
Workflow: 
Source: python/examples/core/dump_flowchart.py

1. ida_kernwin.get_screen_ea(...)
2. ida_funcs.get_func(...)    [uses ea from step 1]
3. ida_gdl.FlowChart(...)     [uses func from step 2]

安装

运行时间(推荐)

# Install from PyPI into uv's tool environment
uv tool install ida-api-mcp

开发设置

# Clone and install (dev only)
git clone https://github.com/ruotoy/IDA-Sdk-Workflow-MCP.git
cd IDA-Sdk-Workflow-MCP
python3.10 -m venv .venv
.venv/bin/pip install -e ".[dev]"
备注:需要Python 3.10-- tree-sitter-languages 不提供3.13+的车轮。

用法

1.建立索引

仅限C++(IDA SDK)

ida-api-mcp-admin build-index \
  --sdk-path /path/to/idasdk_pro84 \
  --version 84

C++Python(IDA SDK+IDAPython)

ida-api-mcp-admin build-index \
  --sdk-path /path/to/idasdk_pro84 \
  --python-path /path/to/idapro-8.4/python \
  --version 84

--python-path 应该指向 python/ IDA Pro安装中的目录。它预计:

  • 3/ida_*.py -SWIG生成的API存根
  • 3/idautils.py, 3/idc.py --高级实用模块
  • examples/ --IDAPython官方示例脚本

选项

选项描述
--sdk-path(必填) IDA SDK目录的路径(例如。, idasdk_pro84/)
--python-pathIDAPython目录的路径(例如。, idapro-8.4/python/)
--version(必填) SDK版本字符串(例如。, 84 IDA 8.4)
--db-pathChromaDB存储的基本路径(默认: data/chroma_db)
--max-files限制要处理的源文件数量(用于测试)

2.测试查询

ida-api-mcp-admin inspect workflows "decompile a function"
ida-api-mcp-admin inspect workflows "cross references to an address"
ida-api-mcp-admin inspect workflows "list all functions in a segment"
ida-api-mcp-admin inspect workflows "enumerate file imports"

# Inspect metadata and API docs from CLI:
ida-api-mcp-admin inspect info --version 84
ida-api-mcp-admin inspect api-doc get_func --version 84
ida-api-mcp-admin inspect related get_func --version 84

# Clear one indexed version:
ida-api-mcp-admin clear-index --version 84

3.添加为MCP服务器

克劳德代码

claude mcp add ida-api-mcp -- uvx --python python3.10 ida-api-mcp

或全局(用户范围)

# user-wide (global)
claude mcp add -s user ida-api-mcp -- uvx --python python3.10 ida-api-mcp

或者创建一个 .mcp.json 项目根目录中的文件:

{
  "mcpServers": {
    "ida-api-mcp": {
      "command": "uvx",
      "args": ["--python", "python3.10", "ida-api-mcp"]
    }
  }
}

克劳德桌面版

增添 ~/.config/Claude/claude_desktop_config.json (Linux), ~/Library/Application Support/Claude/claude_desktop_config.json (macOS),或 %APPDATA%\Claude\claude_desktop_config.json (Windows):

{
  "mcpServers": {
    "ida-api-mcp": {
      "command": "uvx",
      "args": ["--python", "python3.10", "ida-api-mcp"]
    }
  }
}

运作原理

[1. Collect]  Enumerate source files from IDA SDK (C++) and IDAPython (Python)
      |         C++: plugins/, module/, ldr/, dbg/
      |         Python: python/examples/core/, hexrays/, analysis/, ...
      ↓
[2. Parse]    C++: tree-sitter C++ → AST
              Python: ast module → AST
              Stubs: ast module → API docs from ida_*.py SWIG docstrings
      ↓
[3. Extract]  Identify IDA API calls per function
              C++: idaman/ida_export patterns, member calls, qualified calls
              Python: module-qualified calls (ida_funcs.get_func),
                      direct imports (from ida_funcs import get_func)
              Track variable assignments to build data-flow edges
      ↓
[4. Index]    Store call chains + source snippets in ChromaDB
              Embed with semantic vectors for natural-language search
              Tag with language metadata (cpp / python)
      ↓
[5. Serve]    MCP server retrieves relevant workflows at query time
              Results ranked by trust level, then similarity

按信任级别划分的数据源

信任C++源代码Python源代码
最高plugins/ --官方SDK示例插件python/examples/ --IDAPython官方示例
module/, ldr/, dbg/ --处理器模块、加载器、调试器--
中等include/ --标头声明--

构建统计数据(SDK 8.4)

度量C++Python组合
源文件35689个示例445
提取的工作流9211121033
捕获API调用-505-
数据流边--143--
API单据分录1443(来自表头)8060(来自存根)8491(已合并)

Python提取覆盖率

89个IDAPython示例脚本中有63个(71%)至少生成一个工作流。其余26个细分为:

类别计数注释
根本没有IDA API调用10钩子骨架、配置文件、纯样板文件
单个API调用(低于min-2阈值)8琐碎的一句话,没有有意义的工作流程
2个调用分布在单独的类方法中6每个方法只有1个调用;没有一个函数达到阈值
非标准导入模式2例如。, from Choose import Choose --不是A ida_* 模块

项目结构

src/ida_api_mcp/
├── server.py                       # MCP server (FastMCP, stdio transport)
├── cli.py                          # CLI: build-index, inspect, list-versions, serve
├── config.py                       # Configuration dataclass
├── version_manager.py              # Multi-version index management
├── collector/
│   ├── sdk_source.py               # Enumerate C++ files, build API names from headers
│   ├── python_source.py            # Enumerate Python examples, collect stub docs
│   └── doc_source.py               # Collect API docs from C++ headers
├── parser/
│   ├── cpp_parser.py               # tree-sitter C++ parsing
│   ├── python_parser.py            # ast-based Python parsing (imports, functions, metadata)
│   ├── html_parser.py              # Doxygen comment extraction from C++ headers
│   └── stub_parser.py              # SWIG stub parsing (ida_*.py → HeaderApiDoc)
├── extractor/
│   ├── models.py                   # Core data models (Workflow, ApiCall, DataFlowEdge, etc.)
│   ├── call_chain.py               # C++ workflow extraction (tree-sitter AST)
│   └── python_call_chain.py        # Python workflow extraction (ast module)
└── indexer/
    ├── store.py                    # ChromaDB ingestion (workflows + API docs)
    └── search.py                   # Semantic search interface

发展

# Run tests
.venv/bin/pytest -v

# Lint
.venv/bin/ruff check src/ tests/

许可证

麻省理工学院

目录标签

目录标签

代码分析PythonClaude逆向工程IDAPro脚本本地部署API调用序列软件开发

支持客户端

Claude

接入字段

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

未说明

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

none

工具数量(toolCount,工具数)

8

资源数量(resourceCount,资源数)

0

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

0

权限和风险

未说明none部署方式未说明

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

安装前确认

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

仍需确认:installCommand

来源信息

继续浏览同类 MCP