IDA-MCP
github
wiki deepwiki
IDA-MCP (FastMCP + 多实例网关)
每个 IDA 实例都会暴露自己的 FastMCP Streamable HTTP 端点 /mcp
独立网关守护进程负责维护内存中的实例注册表并转发工具调用
同一个网关进程默认在 127.0.0.1:11338 上同时提供 /internal 内部 API 和 /mcp 客户端 MCP 入口
stdio 代理是独立子进程入口,但复用同一套 proxy 工具定义
MCP Resources 由各个 IDA 实例直接暴露,不走 gateway/proxy
架构
项目采用模块化架构:
核心基础设施
rpc.py - @tool / @resource / @unsafe 装饰器与注册机制
sync.py - @idaread / @idawrite IDA 线程同步装饰器
utils.py - 地址解析、分页、模式过滤等工具函数
compat.py - IDA 8.x/9.x 兼容层
API 模块(IDA 后端)
api_core.py - IDB 元数据、函数/字符串/全局变量列表
api_analysis.py - 反编译、反汇编、交叉引用
api_memory.py - 内存读取操作
api_modeling.py - 数据库塑形(函数、code/data/string 创建)
api_types.py - 类型操作(原型、本地类型)
api_modify.py - 注释、重命名
api_stack.py - 栈帧操作
api_debug.py - 调试器控制(标记为不安全)
api_python.py - Python 代码执行(标记为不安全)
api_resources.py - MCP 资源(ida:// URI 模式)
核心特性
装饰器链模式:@tool + @idaread/@idawrite 实现简洁的 API 定义
批量操作:大多数工具支持列表参数进行批量处理
MCP 资源:REST 风格的 ida:// URI 模式,提供面向单实例直连的只读数据访问
多实例支持:默认监听在 11338 的独立网关管理多个 IDA 实例
默认偏向 HTTP:仓库内默认配置为 enable_http=true、enable_stdio=false、enable_unsafe=true
IDA 8.x/9.x 兼容:兼容层处理 API 差异
字符串缓存:字符串列表缓存避免每次调用重建,插件启动时后台预热
自定义超时:所有工具支持自定义超时参数,AI 可按需传入
并发安全:per-port 锁序列化并发调用 + Session 粘滞中间件
当前工具
核心工具 (api_core.py)
check_connection – 网关/注册表健康检查(ok/count)
list_instances – 列出共享网关中已注册的 IDA 实例
get_metadata – IDB 元数据(hash/arch/bits/endian)
list_functions – 分页函数列表,支持可选模式过滤
list_globals – 全局符号(非函数)
list_strings – 提取的字符串(带缓存加速)
list_local_types – 本地类型定义
get_entry_points – 程序入口点
convert_number – 数字格式转换
list_imports – 列出导入函数及模块名
list_exports – 列出导出函数/符号
list_segments – 列出内存段及权限
get_cursor – 获取当前光标位置和上下文
分析工具 (api_analysis.py)
decompile – 批量反编译函数(Hex-Rays)
disasm – 批量反汇编函数
linear_disasm – 从任意地址线性反汇编
get_callers – 按函数和调用点聚合的调用者摘要
get_callees – 按函数和调用点聚合的被调函数摘要
get_function_signature – 获取当前最可靠的函数签名字符串
xrefs_to – 批量获取到地址的交叉引用
xrefs_from – 批量获取从地址的交叉引用
xrefs_to_field – 启发式结构体字段引用
find_bytes – 搜索带通配符的字节模式
get_basic_blocks – 获取基本块及控制流
内存工具 (api_memory.py)
get_bytes – 读取原始字节
read_scalar – 按显式宽度读取整数
get_string – 读取空终止字符串
建模工具 (api_modeling.py)
create_function – 在地址处创建函数
delete_function – 删除已有函数
make_code – 把地址处字节转换为代码
undefine_items – 取消定义一段字节范围
make_data – 创建带类型的数据项
make_string – 创建字符串字面量
类型工具 (api_types.py)
declare_struct – 创建/更新本地结构体
declare_enum – 创建/更新本地枚举
declare_typedef – 创建/更新本地 typedef
set_function_prototype – 设置函数签名
set_local_variable_type – 设置局部变量类型(Hex-Rays)
set_global_variable_type – 设置全局变量类型
list_structs – 列出所有结构体/联合体
get_struct_info – 获取结构体定义及字段
修改工具 (api_modify.py)
set_comment – 批量设置注释
rename_function – 重命名函数
rename_local_variable – 重命名局部变量(Hex-Rays)
rename_global_variable – 重命名全局符号
patch_bytes – 在地址处修补字节
栈帧工具 (api_stack.py)
stack_frame – 获取栈帧变量
declare_stack – 创建栈变量
delete_stack – 删除栈变量
Python 工具 (api_python.py) - 不安全
py_eval – 在 IDA 上下文中执行任意 Python 代码,返回 result/stdout/stderr
调试工具 (api_debug.py) - 不安全
dbg_regs – 获取所有寄存器
dbg_callstack – 获取调用栈
dbg_list_bps – 列出断点
dbg_star
...(已截断)
---
来源: 看雪论坛
原文链接: https://bbs.kanxue.com/thread-290413.htm
[原创] IDA-MCP (FastMCP 多实例网关)
284 浏览
3 回复
项目作者吗?
原来是你,怎么好多BUG,我改了好多
您好,我怀疑手机被监控,出现多种异常症状,求专业工程师指点排查