Files

7.6 KiB
Raw Permalink Blame History

MCP 配置与验证 (MCP-SETUP)

本工作台靠 3 个 MCP 提供工具能力。本文说明:它们是什么、装到哪、怎么验证、出问题怎么办。

📦 各 MCP 依赖的工具从哪里下载 → 见 Tool/docs/DOWNLOADS.md


一、MCP 与 Skill 的关系

Skill(提示词层)       →  告诉 agent「该做什么、走哪条路」
MCP(工具层)           →  给 agent「实际干活的手」

举例:apkseep Skill 说「用 jadx 反编译这个 APK」→ agent 调 seep_apk_decompile → seep MCP 内部驱动 jadx 完成反编译。

Skill 是说明书,MCP 是工具。 两者都装好才能干活。


二、3 个已注册 MCP

MCP 工具数 用途 依赖 安装方式
seep ⭐ 22 二进制逆向 + APK 逆向 + Frida 生成 + 知识库 radare2 / jadx / apktool 本包自带 + 脚本下载工具
ida ~243 IDA 全套分析链 你自备的 IDA Pro 脚本装 MCP + 你装 IDA
playwright — 浏览器自动化 npx 自动(npx 按需拉取)

seep MCP 的 22 个工具

分组 工具
状态环境 (2) seep_status · seep_ida_status
二进制 r2 (8) seep_r2_info · _cmd · _strings · _functions · _disasm · _decompile · _diff · _asm
Android (5) seep_apk_info · _decompile · _unpack · _smali_search · _gen_hook
知识库 (4) seep_kb_search · _read · _checklist · _payloads
流程编排 (3) seep_task_init · seep_auto_triage · seep_gen_security_report

三、安装过程(install-pi.ps1 自动完成)

1. 备份现有 ~/.pi/agent/ 配置
2. 复制 Skill  →  ~/.pi/agent/skills/
3. 复制提示词  →  ~/.pi/agent/SYSTEM.md · AGENTS.md
4. 复制扩展    →  ~/.pi/agent/extensions/
5. 生成 mcp.json:
     · <SEEP_ROOT>  → 本包实际路径
     · <IDA_ROOT>   → 自动探测(D:\Tool\IDA Pro / C:\Program Files\IDA Pro / C:\IDA Pro)
     · <IDA_PYTHON> → 探测到的 IDA Python
     · playwright token → 需你自填(不用浏览器自动化可留空)
6. 写 settings.json(12 个 pi packages)
7. 执行 pi update --extensions

生成的 ~/.pi/agent/mcp.json 结构:

{
  "mcpServers": {
    "seep": {
      "command": "python",
      "args": ["<本包路径>\\Tool\\mcp\\seep_mcp_server.py"],
      "env": { "PYTHONIOENCODING": "utf-8" },
      "transport": "stdio"
    },
    "ida": {
      "command": "<IDA Python 路径>",
      "args": ["<IDA 安装目录>\\Lib\\site-packages\\ida_pro_mcp\\server.py"],
      "transport": "stdio",
      "lifecycle": "eager",
      "requestTimeoutMs": 180000
    },
    "playwright": {
      "command": "npx",
      "args": ["-y", "@playwright/mcp@latest", "--extension"],
      "env": { "PLAYWRIGHT_MCP_EXTENSION_TOKEN": "<你的token>" },
      "transport": "stdio"
    }
  }
}

四、⚠️ 关键约束:Tool/mcp/Tool/ 不可搬动

seep_mcp_server.py 内部硬编码了运行时目录:

BASE_DIR = os.path.dirname(os.path.abspath(__file__))   # = Tool/mcp/
TOOL_DIR = os.path.join(BASE_DIR, "Tool")               # = Tool/mcp/Tool/
SAFE_DIR = os.path.join(TOOL_DIR, "safe")               # = Tool/mcp/Tool/safe/
KB_DIR   = os.path.join(TOOL_DIR, "reverselab", "kb")   # = Tool/mcp/Tool/reverselab/kb

因此:

依赖 必须位于
radare2 Tool/mcp/Tool/safe/radare2/bin/
jadx Tool/mcp/Tool/safe/jadx/bin/
apktool Tool/mcp/Tool/safe/apktool/
Hook 模板 Tool/mcp/Tool/safe/hook-mcp/templates/
知识库 Tool/mcp/Tool/reverselab/kb/

搬走任何一个,对应的 MCP 工具就会失效。


五、验证 MCP 是否就绪

方法 1:跑自检脚本(推荐)

cd Desktop\Seep\setup
powershell -ExecutionPolicy Bypass -File .\verify.ps1

方法 2:在 pi 里问

你:seep_status 能跑吗?
pi:[返回 radare2 / jadx / apktool / 知识库 的就绪状态]

方法 3:手工检查

# 1. 配置无占位符残留
Select-String -Path "$env:USERPROFILE\.pi\agent\mcp.json" -Pattern "<[A-Z_]+>"

# 2. seep MCP 语法可解析
python -c "import ast; ast.parse(open(r'C:\...\Seep\Tool\mcp\seep_mcp_server.py',encoding='utf-8').read())"

# 3. 知识库在位
(Get-ChildItem "C:\...\Seep\Tool\mcp\Tool\reverselab\kb" -Recurse -Filter *.md).Count   # 期望 ≥289

六、工具 → MCP 依赖对照(排障用)

MCP 工具 依赖的目录 / 工具 缺失时的现象
seep_kb_*(4 个) Tool/mcp/Tool/reverselab/kb/ 检索返回空 / 报路径不存在
seep_r2_*(8 个) Tool/mcp/Tool/safe/radare2/bin/ "radare2 not found"
seep_apk_decompile Tool/mcp/Tool/safe/jadx/bin/ "jadx not found"
seep_apk_unpack Tool/mcp/Tool/safe/apktool/ "apktool not found"
seep_apk_gen_hook Tool/mcp/Tool/safe/hook-mcp/templates/ 模板缺失
mcp_ida_*(~243 个) 自备 IDA Pro + Tool/mcp/Tool/safe/ida-pro-mcp/ "IDA not available"
playwright 工具 npx + token 浏览器不可用

排障口诀:工具报错 → 看它读哪个目录 → 检查该目录是否存在且非空。


七、IDA Pro 不可用时的降级路线

原则:不阻塞、不报错,直接用 seep_r2_* 继续推进。

需求 seep MCP 替代
架构 / 壳 / 熵 / 字符串 seep_r2_info · seep_r2_strings
反汇编 + 交叉引用 seep_r2_disasm · seep_r2_functions
类 C 伪代码 seep_r2_decompile
二进制差分 seep_r2_diff
汇编 ↔ 机器码 seep_r2_asm

报告中应标注:"未使用 IDA 反编译器,伪代码质量受限"。

详见 MANUAL/IDA-PRO.md(含 3 种方案对比)。


八、可选注册的 MCP(默认关闭)

reverselab 自带 3 个 MCP,源码在 Tool/mcp/Tool/reverselab/tools/skills/mcp/, 默认不注册。需要时手工加入 mcp.json:

MCP 位置 用途
ReverseLabToolsMCP .../mcp/ReverseLabToolsMCP/ reverselab 主 MCP(150+ 工具)
JSHookLocal .../mcp/JSHookLocal/ JS Hook 本地服务
GhidraMCP .../mcp/GhidraMCP/ Ghidra 桥接

注册示例:

"reverselab": {
  "command": "python",
  "args": ["<本包路径>\\Tool\\mcp\\Tool\\reverselab\\tools\\skills\\mcp\\ReverseLabToolsMCP\\reverse_lab_tools_mcp.py"],
  "cwd": "<本包路径>\\Tool\\mcp\\Tool\\reverselab",
  "transport": "stdio"
}

⚠️ 需先装其 Python 依赖(见该目录 requirements.txt)。


九、常见问题

问题 处理
pi 启动后 MCP 没加载 重启 pi(MCP 在启动时注册)
seep 工具全部不可用 检查 mcp.json 的 seep.args[0] 路径是否存在
seep_kb_* 报错 检查 Tool/mcp/Tool/reverselab/kb/ 是否 ≥289 篇
seep_r2_* 报错 重跑 setup\install-tools.ps1
ida 工具报错 确认 IDA 已装 + mcp.json 里 ida 路径正确
MCP 配置文件被我改坏了 重跑 setup\install-pi.ps1(会自动备份旧配置)
想看 MCP 报错日志 pi 启动时的 stderr;或手工 python Tool\mcp\seep_mcp_server.py 看输出

十、手工验证 seep MCP(不通过 pi)

cd Desktop\Seep\Tool\mcp
python seep_mcp_server.py
# 正常应挂起等待 stdio 输入(无报错即 OK)
# Ctrl+C 退出

若报 ModuleNotFoundError: mcp → 重跑 setup\install-python.ps1。