
/mcp)127.0.0.1:11337 作为协调器,维护内存注册表并支持工具转发ida_mcp_proxy.py 统一访问/聚合实例工具(MCP客户端可以通过命令/参数启动)工具理念是尽量减少操作。大多数IDE不支持过多的工具。过多的工具可能导致工具调用失败和准确性降低。
server.py)check_connection – 快速检查插件和协调器的健康状况(ok/计数)list_instances – 返回已注册实例的原始列表list_functions(offset, count) – 分页列出函数(名称、起始地址、结束地址)get_function_by_name(name) – 根据精确名称匹配获取单个函数的起始/结束地址get_function_by_address(address) – 通过地址获取函数信息(起始或内部)convert_number(text, size) – 数字转换(十进制/十六进制/二进制 ↔ 多种表示形式,指定位宽)list_globals_filter(offset, count, filter?) – 分页 + 模糊(子串)过滤全局符号列表(排除函数)list_globals(offset, count) – 分页列出所有全局符号(排除函数)list_strings_filter(offset, count, filter?) – 分页 + 模糊过滤字符串列表list_strings(offset, count) – 分页列出所有字符串list_local_types() – 列出所有本地类型(序号 + 截断声明)decompile_function(address) – 反编译函数(需要Hex-Rays)disassemble_function(start_address) – 输出函数反汇编(指令/注释)get_xrefs_to(address) – 获取引用到特定地址的交叉引用get_xrefs_to_field(struct_name, field_name) – 通过启发式方法获取引用结构字段的指令位置set_comment(address, comment) – 设置/清除地址注释(同步到伪代码)rename_local_variable(function_address, old_name, new_name) – 重命名函数局部变量(Hex-Rays)rename_global_variable(old_name, new_name) – 重命名全局变量set_global_variable_type(variable_name, new_type) – 设置全局变量类型rename_function(function_address, new_name) – 重命名函数set_function_prototype(function_address, prototype) – 设置函数原型set_local_variable_type(function_address, variable_name, new_type) – 设置局部变量类型(Hex-Rays)declare_c_type(c_declaration) – 解析并声明/更新本地类型(结构体/联合体/枚举/typedef)get_entry_points() – 获取所有入口点(序号 + 地址 + 名称)get_metadata() - 获取指定或当前实例的基本元数据(哈希/架构/位等)linear_disassemble(start_address, size) - 从指定地址线性反汇编大小指令read_memory_bytes(memory_address, size) – 从指定地址读取内存字节(1-4096字节)dbg_get_registers() – 获取所有寄存器的当前值dbg_get_call_stack() – 获取当前调用栈dbg_list_breakpoints() – 列出所有断点dbg_start_process() – 开始调试(如果尚未开始)dbg_exit_process() – 结束调试进程dbg_continue_process() – 继续执行(恢复)dbg_run_to(address) – 运行到指定地址dbg_set_breakpoint(address) – 设置断点dbg_delete_breakpoint(address) – 删除断点(幂等)dbg_enable_breakpoint(address, enable) – 启用/禁用断点(如果不存在且启用则创建)dbg_step_into() – 单步进入指令dbg_step_over() – 单步跳过指令(调用)IDA-MCP/
ida_mcp.py # 插件入口:启动/停止SSE服务 + 注册协调器
ida_mcp/
server.py # FastMCP服务器定义
registry.py # 协调器实现 / 多实例注册及/调用转发
__init__.py # 包初始化,导出create_mcp_server并解释子模块结构
proxy/
ida_mcp_proxy.py # 进程代理(附加MCP服务器,通过协调器转发/调用)
mcp.json # MCP客户端配置(包括代理 / SSE)
README.md
requirements.txt # fastmcp依赖项(如需外部环境)
ida_mcp.py + ida_mcp 文件夹复制到IDA的 plugins/ 目录下。http://127.0.0.1:<port>/mcp/替换 mcp.json 中的 command 和 args,然后将其复制到claude客户端的mcp工具配置文件或其他MCP客户端配置文件中。
claude / cherry studio / cursor 客户端示例:
{
"mcpServers": {
"ida-mcp-proxy": {
"command": "Python路径(IDA的Python)",
"args": ["ida_mcp_proxy.py路径"],
"env": {},
"description": "进程MCP代理,转发到正在运行的IDA SSE服务器。"
}
}
}
对于claude,直接将上述配置添加到安装目录下的 claude_desktop_config.json 文件中。
cherry studio支持快速创建mcp工具,直接从json导入,然后粘贴上述配置示例。
对于cursor,只需通过模型工具导入。
vscode mcp配置示例:
⚠️注意: 使用vscode copilot可能会导致您的账户被封禁。
{
"servers": {
"ida-mcp-proxy": {
"command": "Python路径(IDA的Python)",
"args": ["ida_mcp_proxy.py路径"]
}
}
}
永久添加: 设置copilot为Agent模式,点击配置工具 -> 配置工具集 -> 输入工具集名称 -> 输入工具集文件名 -> 确定 -> 然后直接粘贴上述配置示例。
临时添加:
在项目目录中创建.vscode文件夹,在其中创建mcp.json文件,并粘贴上述配置文件。
copilot还会扫描claude客户端配置文件和cursor配置文件。
需要使用IDA的Python环境进行安装:
python -m pip install -r requirements.txt
添加UI界面,支持内部模型调用,添加多代理A2A自动化逆向工程功能,待langchain正式更新至1.0.0版本后。