14 KiB
14 KiB
MCP v1.1.1 工具索引 + v0.9.0 迁移历史
说明:当前可调用工具以 SKILL.md 核心层和 MCP 工具自身 docstring 为准;本文后半部分保留 v0.8.x → v0.9.0 的历史迁移映射。
版本:v3.4.1(MCP v1.1.1)
当前 MCP 版本:camoufox-reverse MCP v1.1.1(35 个工具)。v1.1.0 固定
mcp>=1.29,<2并仅归一化安全的顶层可选参数 schema;v1.1.1 修复链式调用的重叠 AST 改写,并在插桩状态中暴露实际执行模式。
一、v0.9.0 历史工具分类表
本节用于理解旧文档和迁移来源,包含后续已移除的 Session/Assertion 工具,不应作为当前工具清单。当前清单见 SKILL.md「核心武器」。
Browser — 浏览器与页面控制
| 工具名 | 一行描述 |
|---|---|
launch_browser |
启动 Camoufox 反检测浏览器(C++ 引擎级指纹伪装) |
close_browser |
关闭浏览器释放资源 |
navigate |
导航到 URL,支持 pre_inject_hooks / wait_until / collect_response_chain |
reload |
刷新当前页面 |
go_back |
浏览器后退 |
Page — 页面交互与信息
| 工具名 | 一行描述 |
|---|---|
click |
点击页面元素 |
type_text |
输入文本(带真实按键延迟) |
wait_for |
等待元素出现或网络请求匹配 |
get_page_info |
获取当前页面 URL、标题、视口尺寸 |
take_screenshot |
截取页面截图 |
take_snapshot |
获取页面无障碍树(token 高效) |
evaluate_js |
在页面上下文执行任意 JS(最核心工具) |
evaluate_js_handle |
执行 JS 并检查复杂对象属性 |
get_page_html |
获取页面 HTML 或指定元素的 outerHTML |
Network — 网络分析
| 工具名(v0.9.0) | 一行描述 |
|---|---|
network_capture(action='start'|'stop') |
启停网络流量捕获,支持 capture_body=True |
list_network_requests |
列出捕获的请求(支持 URL/method/type/status 过滤) |
get_network_request |
获取请求完整详情(含响应体) |
get_request_initiator |
获取发起请求的 JS 调用栈(黄金路径) |
intercept_request |
拦截请求(log/block/modify/mock) |
stop_intercept |
停止拦截 |
search_response_body |
在所有已捕获响应体中全文搜索 |
get_response_body_page |
分页读取大响应体 |
search_json_path |
按 JSON 路径提取响应数据 |
Scripts — 源码分析
| 工具名(v0.9.0) | 一行描述 |
|---|---|
scripts(action='list') |
列出页面加载的所有 JS 脚本 |
scripts(action='get', url=...) |
获取完整 JS 源码 |
scripts(action='save', url=..., save_path=...) |
保存 JS 文件到本地 |
search_code |
在所有已加载 JS 中搜索关键词(全局) |
search_code(keyword, script_url=url) |
在指定脚本中搜索(大文件精确定位) |
Hook — 调试与 Hook
| 工具名(v0.9.0) | 一行描述 |
|---|---|
add_init_script |
注入页面加载前执行的脚本(支持 persistent) |
set_breakpoint_via_hook |
通过 JS Hook 设置伪断点 |
get_breakpoint_data |
获取伪断点捕获的数据 |
get_console_logs |
获取页面控制台输出 |
hook_function(path, mode='trace', ...) |
追踪函数调用(不暂停执行) |
get_trace_data |
获取追踪数据 |
hook_function(path, hook_code=..., position=...) |
注入自定义 Hook(before/after/replace) |
hook_function(path, mode='intercept', non_overridable=True) |
冻结原型方法防覆盖 |
inject_hook_preset |
一键预设 Hook(xhr/fetch/crypto/websocket/debugger_bypass/cookie/runtime_probe) |
get_runtime_probe_log |
拉取 runtime_probe 日志 |
remove_hooks |
移除所有 Hook |
bypass_debugger_trap |
一键绕过反调试陷阱 |
JSVMP — 虚拟机专项分析
| 工具名(v0.9.0) | 一行描述 |
|---|---|
hook_jsvmp_interpreter |
多路径通用探针(proxy/transparent 模式) |
hook_jsvmp_interpreter(mode='proxy', trackProps=True) |
Proxy 级别属性访问追踪 |
get_jsvmp_log |
获取 JSVMP 探针日志 |
dump_jsvmp_strings |
提取 JSVMP 脚本中的字符串 |
compare_env |
采集浏览器环境指纹基准 |
instrumentation(action='install', url_pattern=..., mode=..., tag=...) |
源码级插桩(HTTP 层改写 VMP) |
instrumentation(action='log', tag_filter=..., type_filter=...) |
获取源码插桩日志(hot_keys/hot_methods/hot_functions) |
instrumentation(action='status') |
查看当前激活的源码插桩状态 |
instrumentation(action='stop', url_pattern=...) |
停止源码级插桩 |
instrumentation(action='reload') |
重载页面让 hooks 先于 VMP 生效 |
analyze_cookie_sources |
Cookie 归因分析(HTTP vs JS 来源) |
Session — 域级 Session 档案
| 工具名(v0.9.0) | 一行描述 |
|---|---|
start_reverse_session |
启动新的分析 run |
stop_reverse_session |
结束当前 run |
get_session_snapshot |
获取活跃 session 快照 |
list_sessions |
列出所有域 session 档案 |
attach_domain_readonly |
只读附加已有域档案 |
export_session |
导出域档案为 zip |
import_session |
导入域档案 zip |
Assertion — 断言系统
| 工具名(v0.9.0) | 一行描述 |
|---|---|
add_assertion |
注册域级断言 |
verify_assertion(assertion_id=...) |
验证单条断言 |
verify_assertion(assertion_id='*') |
批量验证所有断言 |
list_assertions |
列出域上的所有断言 |
remove_assertion |
软删除断言 |
Environment — 存储与指纹
| 工具名(v0.9.0) | 一行描述 |
|---|---|
cookies(action='get', ...) |
获取 Cookie |
cookies(action='set', ...) |
设置 Cookie |
delete_cookies |
删除 Cookie |
get_storage |
获取 localStorage/sessionStorage |
set_storage |
设置 storage |
export_state |
导出浏览器状态(Cookie + Storage) |
import_state |
导入浏览器状态 |
get_fingerprint_info |
检查当前浏览器指纹 |
check_detection |
在反检测站点测试是否被识别 |
get_session_info |
查看当前会话状态全貌 |
二、v0.8.x → v0.9.0 完整迁移表
MCP v0.9.0 将 ~80 个工具合并为 ~50 个,核心变化是将同类操作合并为带
action参数的统一接口。
19 个工具合并为 7 个统一接口
| v0.8.x 旧名 | v0.9.0 新名 | 说明 |
|---|---|---|
start_network_capture(capture_body=X) |
network_capture(action='start', capture_body=X) |
网络捕获启停合并 |
stop_network_capture() |
network_capture(action='stop') |
|
search_code_in_script(url, keyword) |
search_code(keyword, script_url=url) |
合并到 search_code,script_url 可选参数 |
trace_function(path, ...) |
hook_function(path, mode='trace', ...) |
追踪合并到 hook_function |
instrument_jsvmp_source(url_pattern, ...) |
instrumentation(action='install', url_pattern=url_pattern, ...) |
源码插桩统一接口 |
get_instrumentation_log(tag=X) |
instrumentation(action='log', tag_filter=X) |
|
get_instrumentation_status() |
instrumentation(action='status') |
|
stop_instrumentation() |
instrumentation(action='stop') |
|
reload_with_hooks() |
instrumentation(action='reload') |
|
get_cookies(...) |
cookies(action='get', ...) |
Cookie 管理统一接口 |
set_cookies(...) |
cookies(action='set', ...) |
|
list_scripts(...) |
scripts(action='list', ...) |
脚本管理统一接口 |
get_script_source(url) |
scripts(action='get', url=url) |
|
save_script(url, path) |
scripts(action='save', url=url, save_path=path) |
|
reverify_all_assertions_on_domain() |
verify_assertion(assertion_id='*') |
批量验证合并到 verify_assertion |
find_dispatch_loops(url) |
search_code(keyword='switch', script_url=url, context_chars=500) |
合并到 search_code 的高级用法 |
trace_property_access(...) |
hook_jsvmp_interpreter(mode='proxy', trackProps=True) |
合并到 hook_jsvmp_interpreter |
freeze_prototype(class, method) |
hook_function('class.prototype.method', mode='intercept', ...) |
合并到 hook_function |
get_page_content() |
evaluate_js("document.documentElement.outerHTML") |
用 evaluate_js 替代 |
已删除工具及替代方案(12 个)
| 已删除工具 | 替代方案 |
|---|---|
get_property_access_log |
get_jsvmp_log(type_filter='prop_read') |
get_page_content |
evaluate_js("document.documentElement.outerHTML") |
find_dispatch_loops |
search_code(keyword='switch', script_url='<url>', context_chars=500) |
trace_property_access |
hook_jsvmp_interpreter(mode='proxy', trackProps=True) |
freeze_prototype |
hook_function('X.prototype.Y', mode='intercept', non_overridable=True) |
check_csp_policy |
evaluate_js("document.querySelector('meta[http-equiv=Content-Security-Policy]')?.content") |
get_response_chain |
navigate() 返回值中的 redirect_chain 字段 |
get_dual_sign_data |
组合 list_network_requests + get_network_request 手动提取 |
diff_hot_keys |
本地 JSON diff 或 evaluate_js 实现 |
create_session |
start_reverse_session |
load_session |
attach_domain_readonly + verify_assertion(assertion_id='*') |
update_session |
stop_reverse_session + add_assertion |
三、6 个月 Shim 兼容期
MCP v0.9.0 提供 6 个月的 shim 兼容期(至 2027-01-01)。
Shim 行为
- 旧工具名仍可调用,MCP 内部自动映射到新接口
- 每次调用旧名会在 console 输出 deprecation warning
- Shim 期结束后旧名将返回
ToolNotFound错误
建议迁移时间线
| 阶段 | 时间 | 行动 |
|---|---|---|
| 立即 | 现在 | 新代码/新文档全部使用 v0.9.0 名称 |
| 1 个月内 | 2026-08 | 更新所有 cases/*.md 中的工具名 |
| 3 个月内 | 2026-10 | 更新所有 references/*.md 中的工具名 |
| 6 个月内 | 2027-01 | 确认无旧名残留,shim 期结束 |
四、MCP v0.9.0 关键变化总结
工具数量
- v0.8.x:~80 个独立工具
- v0.9.0:~50 个工具(19 个合并为 7 个统一接口 + 12 个删除)
设计原则
- 同类操作合并:start/stop/get/list 合并为带
action参数的统一接口 - 功能重叠消除:
trace_function和hook_function合并(trace 是 hook 的一种 mode) - 语义一致性:
freeze_prototype本质是 hook 的 intercept 模式 - 减少记忆负担:7 个统一接口覆盖原来 19 个工具的功能
不变的核心工具
以下工具在 v0.9.0 中保持不变:
launch_browser / close_browser / navigate / reload / go_back
click / type_text / wait_for / get_page_info
take_screenshot / take_snapshot
evaluate_js / evaluate_js_handle
get_page_html / add_init_script
set_breakpoint_via_hook / get_breakpoint_data
get_console_logs / get_trace_data
hook_function (扩展了 mode 参数)
inject_hook_preset / remove_hooks / bypass_debugger_trap
hook_jsvmp_interpreter / get_jsvmp_log / dump_jsvmp_strings
compare_env / analyze_cookie_sources
get_runtime_probe_log
list_network_requests / get_network_request / get_request_initiator
intercept_request / stop_intercept
search_response_body / get_response_body_page / search_json_path
delete_cookies / get_storage / set_storage
export_state / import_state
get_fingerprint_info / check_detection / get_session_info
start_reverse_session / stop_reverse_session / get_session_snapshot
list_sessions / attach_domain_readonly
export_session / import_session
add_assertion / verify_assertion / list_assertions / remove_assertion
五、Session/Assertion 工具移除(v3.2.0 新增)
以下工具在当前 MCP 版本中不存在,skill v3.2.0 已移除所有引用:
| 移除的工具 | 替代 |
|---|---|
start_reverse_session / stop_reverse_session |
无替代。经验沉淀到 cases/ 文件 |
get_session_snapshot |
无替代。手动查看 list_network_requests / instrumentation(action='log') |
list_sessions / attach_domain_readonly |
无替代。读 cases/README.md 查已有案例 |
export_session / import_session |
无替代。case 文件本身是可 commit 的经验 |
add_assertion / verify_assertion / list_assertions / remove_assertion |
在 case 文件的"可验证事实清单"段列事实,AI 手动核对 |
verify_against_session(signer_code, sample_filter=...) |
verify_signer_offline(signer_code, samples=[...]) — 样本由用户提供 |
verify_signer_offline 迁移示例:
# 步骤 1 — 手动提取样本
reqs = await list_network_requests(url_filter="api/search")
samples = []
for req in reqs["requests"][:10]:
full = await get_network_request(req["id"])
url = full["url"]
xbogus = _parse_url_param(url, "X-Bogus")
if xbogus:
samples.append({
"id": f"req_{req['id']}",
"input": {"url": _strip_param(url, "X-Bogus")},
"expected": {"X-Bogus": xbogus},
})
# 步骤 2 — 验证
r = await verify_signer_offline(
signer_code="(s) => ({'X-Bogus': mySign(s.input.url)})",
samples=samples,
compare_params=["X-Bogus"],
)
SKILL.md 核心层有工具分类索引的精简版 各工具的详细用法:查看工具自身的 docstring