mcpField
C
cloak-browser-mcp

cloak-browser-mcp

本地服务
github.com/devinwang浏览器自动化21 周前更新

关于 cloak-browser-mcp

cloak-browser-mcp 是基于 CloakBrowser Chromium 的 Playwright 兼容 MCP 服务,面向需要隐身浏览、持久配置文件及可选网络、存储、视觉或测试工具的 MCP 客户端。

主要功能

  1. 01兼容 Playwright 的浏览与交互
  2. 02隐身检测与审计工具
  3. 03管理持久化配置文件
  4. 04代理、区域、时区和指纹设置
  5. 05可选网络、存储、视觉和测试能力

适用场景

  1. 01自动化访问启用机器人检测的网站
  2. 02检查并测试浏览器网络行为
  3. 03复用浏览器配置文件和存储状态
  4. 04生成定位器并验证页面元素

MCP 相关

它向 MCP 客户端提供浏览器自动化及 CloakBrowser 专属工具,并可通过能力标志启用额外工具组。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"devinwang-cloak-browser": {
"command": "npx",
"args": [
"-y",
"@devinwangd/cloak-browser-mcp"
],
"env": {
"CLOAKBROWSER_LICENSE_KEY": "<CLOAKBROWSER_LICENSE_KEY>"
}
}
}
}
启动命令npx -y @devinwangd/cloak-browser-mcp
需要配置的环境变量
CLOAKBROWSER_LICENSE_KEY密钥Optional CloakBrowser Pro license key. Leave unset to use the free binary.

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@devinwangd/cloak-browser-mcp0.2.0

工具

35

收录的工具列表 · 更新于 1 周前

参数类型必填说明
urlstring是要加载的绝对 URL。受 --allowed-domains / --blocked-domains 限制。
timeoutMsnumber否
waitUntilenum否load | domcontentloaded | networkidle | commit

详细介绍

cloak-browser-mcp

由 CloakHQ/CloakBrowser 提供支持的 Model Context Protocol(MCP)服务——CloakBrowser 是经过源码补丁修改的 Chromium,无需在运行时注入 JS,即可通过 Cloudflare Turnstile、reCAPTCHA v3、FingerprintJS、BrowserScan 及其他 30 多种机器人检测服务。

可直接替换 @playwright/mcp,包含 86 个工具:除 browser_annotate 外的所有 Playwright MCP 工具(请参阅尚未实现),以及 Cloak 独有的隐身/配置文件/审计层。

兼容 Claude Code、Cursor、VS Code、Codex、Gemini CLI、Windsurf 及任何 MCP 客户端。


目录


为什么选择 CloakBrowser,而不是原版 Playwright?

@playwright/mcpcloak-browser-mcp
Chromium原版源码补丁修改(58 个 C++ 补丁)
navigator.webdrivertrue(会泄露)不存在
Cloudflare Turnstile无法通过自动通过
reCAPTCHA v3 评分~0.1~0.9
拟人化鼠标/键盘操作无贝塞尔曲线、纠正拼写错误
持久化配置文件手动一流的 CLI 标志和管理工具
感知 GeoIP 的模拟无根据代理出口 IP 自动设置时区/区域设置
隐身审计/检测探测无内置 cloak_stealth_audit 和 cloak_detection_test

如果不需要隐身功能,@playwright/mcp 更快、更轻量——请使用它。如果网站启用了任何机器人检测(Cloudflare、DataDome、PerimeterX、FingerprintJS),请使用此工具。


快速开始

1. 安装一次即可

此封装包通过 npm 安装;首次使用时,CloakBrowser Chromium 二进制文件(约 200 MB)会下载到 ~/.cloakbrowser/。

需要 Node.js ^20.19.0 || >=22.12.0(CloakBrowser 本身所需的最低版本)。

二进制文件分为两个等级。不使用密钥时,将获得免费版二进制文件。在 MCP 服务的环境中设置 CLOAKBROWSER_LICENSE_KEY,即可使用 CloakBrowser Pro 许可证;CloakBrowser 库也会读取 CLOAKBROWSER_RELEASE_CHANNEL(stable 或 preview)和 CLOAKBROWSER_VERSION。各等级包含的内容请参阅 cloakbrowser.dev。cloak_binary_info 会报告当前使用的等级。

npm install -g @devinwangd/cloak-browser-mcp

也可以按需运行,无需安装:

npx @devinwangd/cloak-browser-mcp --caps all

安装后,PATH 中的二进制文件名为 cloak-browser-mcp(无作用域)——下方 MCP 客户端配置中应引用此名称。

2. 接入 MCP 客户端
Claude Code(~/.claude.json 或项目的 .mcp.json)
{
  "mcpServers": {
    "cloak-browser": {
      "command": "cloak-browser-mcp",
      "args": ["--caps", "all"]
    }
  }
}
Cursor / VS Code(.cursor/mcp.json 或 .vscode/mcp.json)
{
  "servers": {
    "cloak-browser": {
      "command": "cloak-browser-mcp",
      "args": ["--caps", "all"]
    }
  }
}
持久化配置文件 + 代理 + 拟人化输入
{
  "mcpServers": {
    "cloak-browser": {
      "command": "cloak-browser-mcp",
      "args": [
        "--caps", "all",
        "--profile-dir", "/Users/me/.cloak-browser-mcp/profiles/work",
        "--proxy", "http://user:[email protected]:8080",
        "--timezone", "Europe/London",
        "--locale", "en-GB",
        "--geoip",
        "--humanize",
        "--viewport", "1920x1080",
        "--allowed-domains", "*.example.com,*.cloudflare.com"
      ]
    }
  }
}
3. 开始使用

在 Claude Code 中:

“打开 example.com,点击搜索框,搜索 ‘hello’,并截取屏幕截图。”

Agent 将依次调用 browser_navigate → browser_snapshot → browser_click → browser_type → browser_take_screenshot。


能力(--caps)

能力工具适用场景
(始终启用)navigation、interaction、page state标准浏览
network请求检查、路由模拟、离线模拟调试 API、测试故障模式
storagecookies、localStorage、sessionStorage、存储状态导出 / 导入身份验证状态持久化、会话重放
vision像素坐标鼠标绕过无障碍树操作 canvas / SVG 应用
pdfbrowser_pdf_save将页面快照保存为 PDF
testingverify_* + generate_locator为 Playwright 测试生成代码
devtools高亮、追踪、视频、恢复调试 Agent 的决策
configget_config、close、run_code_unsafe内省 +(配合 --enable-unsafe-eval)执行任意 JS
humanizecloak_humanize_set调整拟人化输入参数

--caps all 会启用所有功能(但 run_code_unsafe 还需要 --enable-unsafe-eval)。


CloakBrowser 专属工具(始终启用)

工具用途
cloak_set_fingerprint覆盖 canvas 种子、GPU 厂商 / 渲染器、屏幕尺寸、硬件并发数、设备内存、UA 品牌、平台、存储配额
cloak_set_timezone通过 CDP 实时设置时区(无需重新启动)
cloak_set_locale覆盖 navigator.language 和 Accept-Language
cloak_set_geolocation设置坐标,或根据代理出口 IP 自动解析
cloak_set_proxy在会话中途切换代理
cloak_detection_test加载已知探测页面(CreepJS、FingerprintJS、BrowserScan、SannySoft、Cloudflare Turnstile)并导出结果
cloak_stealth_audit程序化检查:navigator.webdriver、插件数量、WebGL 厂商、语言、UA、chrome.runtime、canvas 哈希、$cdc_* CDP 信号
cloak_request_signal_inspect捕获单个 URL 每个请求的 TLS / 标头信号
cloak_persistent_profile_create / list / delete管理 ~/.cloak-browser-mcp/profiles/
cloak_binary_info / cloak_binary_update检查 / 更新 CloakBrowser Chromium 二进制文件

CLI 标志

标志值默认值说明
--caps <csv>all 或任意子集(无)启用受能力控制的工具
--profile-dir <path>绝对路径(临时)持久化用户数据目录
--headless / --headed(布尔值)headed(可见)批处理 / CI 运行时传入 --headless。
--proxy <url>带内联身份验证的 http(s)/socks5无
--timezone <tz>IANA 时区系统例如 America/New_York
--locale <bcp47>BCP-47系统例如 en-US
--user-agent <ua>字符串(cloak 默认值)
--viewport <WxH>例如 1920x10801280×720
--geoip布尔值关闭根据代理 IP 自动解析地理位置
--humanize布尔值关闭启用贝塞尔曲线鼠标 + 自动纠正拼写错误的键盘
--fingerprint-seed <int>int随机确定性 canvas / WebGL 噪声
--allowed-domains <csv>主机模式(开放)browser_navigate 的白名单
--blocked-domains <csv>主机模式(无)browser_navigate 的阻止列表
--enable-unsafe-eval布尔值关闭browser_run_code_unsafe 的必需标志
--upload-allow-dir <path>路径(无)限制文件上传来源路径
--download-dir <path>路径(cwd)下载文件的保存位置
--max-pages <n>int20并发标签页上限
--self-test布尔值关闭打印工具列表并退出

工具清单

工具按能力分组。“始终启用”部分无论 --caps 的值为何都会公开;受能力控制的部分则需要在 --caps 中添加相应条目。

始终启用
导航
工具必填可选说明
browser_navigateurlwaitUntil, timeoutMs受 --allowed-domains / --blocked-domains 限制。返回新的 [eN] 快照。
browser_navigate_back——在当前标签页中返回上一页。
browser_tabsaction(list/new/switch/close)index, id, url可通过 id(t1、…)或从 0 开始的索引管理标签页。
交互
工具必填可选说明
browser_clicktargetelement, doubleClick, button, modifierstarget 是 eN 引用或 Playwright 选择器。
browser_typetarget, textelement, submit, slowlyslowly:true 会逐字符输入;与 --humanize 搭配使用。
browser_hovertargetelement
browser_dragstartTarget, endTargetstartElement, endElement
browser_droptargetpaths, data通过 setInputFiles 提供文件路径;通过合成的 DataTransfer 提供任意 MIME 数据。
browser_select_optiontarget, valueselement
browser_press_keykey—在页面级别按键(例如 Control+A、ArrowDown)。
browser_handle_dialogacceptpromptText响应最近捕获的对话框。
browser_file_uploadpaths—如果设置了 --upload-allow-dir,则路径受其限制。
browser_fill_formfields—每个字段包含 target + value(以及可选的 kind)。
browser_scroll—target, direction, amount可限定到元素或作用于整个页面。
页面状态
工具必填可选说明
browser_snapshot——可访问性树,其中交互节点带有 [eN] 引用。
browser_findtext 或 regexfilename在快照中搜索,而不是返回全部内容。每个匹配项会显示其从根节点开始的路径及几行上下文,最多显示 20 个匹配项。除非写为 /pattern/i,否则 regex 区分大小写。
browser_emulate_media—colorScheme, reducedMotion, forcedColors, contrast, media未提供的参数保持不变;null 会清除覆盖设置并恢复为系统设置。
browser_take_screenshot—element, target, type, fullPage, quality, saveAs图片以内嵌形式返回;也可选择保存到磁盘。
browser_console_messages—level, limit缓冲的控制台消息和 pageerror。
browser_wait_for—timeMs, text, textGone, selector, state, timeoutMs
browser_resizewidth, height—
browser_evaluatefunctionelement, target函数源码必须是箭头函数或函数表达式。
CloakBrowser 专属
工具必需可选说明
cloak_set_fingerprint—seed, gpuVendor, gpuRenderer, screenWidth, screenHeight, hardwareConcurrency, deviceMemoryGB, uaBrand, uaBrandVersion, platform, storageQuotaMB某些标志仅在下次启动时生效——调用 browser_close,然后调用任意工具即可重新启动。
cloak_set_timezonetimezone—通过 CDP 实时生效。
cloak_set_localelocale—设置 navigator.language 和 Accept-Language 请求头。
cloak_set_geolocation—latitude, longitude, accuracy, fromProxyIpfromProxyIp 会通过当前代理调用 ipapi.co/json/。
cloak_set_proxyproxy—重新创建上下文。
cloak_detection_test—suite, customUrl测试套件:creepjs、fingerprintjs、browserscan、sannysoft、cloudflare-turnstile。
cloak_stealth_audit——程序化审计。
cloak_request_signal_inspecturl—返回 TLS 详情、响应状态、请求头和响应头。
cloak_persistent_profile_createname—创建 ~/.cloak-browser-mcp/profiles/<name>。
cloak_persistent_profile_list——
cloak_persistent_profile_deletename, confirm=true—
cloak_binary_info——
cloak_binary_update——
按功能权限启用

--caps network — browser_network_requests、browser_network_request、browser_route、browser_route_list、browser_unroute、browser_network_state_set。

--caps storage — browser_cookie_set/get/list/delete/clear、browser_localstorage_*、browser_sessionstorage_*、browser_storage_state、browser_set_storage_state。

--caps vision — browser_mouse_click_xy、browser_mouse_move_xy、browser_mouse_drag_xy、browser_mouse_down、browser_mouse_up、browser_mouse_wheel。

--caps pdf — browser_pdf_save。

--caps testing — browser_verify_element_visible、browser_verify_text_visible、browser_verify_list_visible、browser_verify_value、browser_generate_locator。

--caps devtools — browser_highlight、browser_hide_highlight、browser_start_tracing、browser_stop_tracing、browser_start_video、browser_stop_video、browser_video_chapter、browser_resume、browser_video_show_actions、browser_video_hide_actions、browser_start_recording、browser_stop_recording。

--caps config — browser_get_config、browser_close、browser_run_code_unsafe(还需要 --enable-unsafe-eval)。

--caps humanize — cloak_humanize_set。

尚未实现

不提供 Playwright MCP 中的 browser_annotate。它会打开 Playwright 的仪表板窗口,并等待用户在页面上绘制标注;Playwright 会将其作为内部进程运行,而本服务不会启动该进程。


交互工具的目标语法

target 参数接受:

  • 来自先前 browser_snapshot 的 eN 引用——例如 e7。最可靠。
  • CSS 选择器——例如 button.primary。
  • xpath=…——例如 xpath=//button[contains(., "Submit")]。
  • text=…——例如 text=Sign in。
  • role=…[name="…"]——例如 role=button[name="Submit"]。

每次导航或发生重大 DOM 变更后,都要再次调用 browser_snapshot 刷新引用。


示例流程

1. 截取受 Cloudflare 保护的页面
You: Open https://example-cloudflare-protected.com, wait for the page to settle, take a full-page screenshot.

Agent calls:
  browser_navigate(url="https://...")
  browser_wait_for(textGone="Checking your browser")
  browser_take_screenshot(fullPage=true)

原版 @playwright/mcp 无法通过 Turnstile 检查;cloak-browser-mcp 会自动通过,因为隐身补丁位于 JS 层之下。

2. 登录 SaaS 控制面板、持久化身份验证信息,并在稍后重新打开

阶段 1 — 使用全新配置文件首次登录:

// .mcp.json
{
  "mcpServers": {
    "cloak": {
      "command": "cloak-browser-mcp",
      "args": [
        "--caps", "all",
        "--profile-dir", "/Users/me/.cloak-browser-mcp/profiles/saas-prod",
        "--humanize"
      ]
    }
  }
}
You: Open https://saas.example.com, sign in as [email protected] / <password>, then confirm I'm on the dashboard.

阶段 2 — 稍后重新打开,所有 Cookie 仍然存在:

You: Open https://saas.example.com — you should already be signed in from yesterday's session.
3. 探测隐身效果
You: Run a stealth audit and then load the SannySoft bot detection test.

Agent:
  cloak_stealth_audit()
  cloak_detection_test(suite="sannysoft")

如果隐身功能完好,你会看到所有项目都显示为绿色。

4. 在会话期间通过代理切换地理位置/时区
You: Switch to a UK proxy, align my timezone/locale/geo to match, then load a country-specific landing page.

Agent:
  cloak_set_proxy(proxy="http://uk-proxy.example.com:8080")
  cloak_set_timezone(timezone="Europe/London")
  cloak_set_locale(locale="en-GB")
  cloak_set_geolocation(fromProxyIp=true)
  browser_navigate(url="https://example.com/uk")
5. 在测试前端时模拟 API 响应
You: While loading example.com, return a fake 500 to /api/orders so I can verify the error state.

Agent:
  browser_route(pattern="**/api/orders", status=500, body='{"error":"simulated"}', contentType="application/json")
  browser_navigate(url="https://example.com")
  browser_take_screenshot()
  browser_unroute(pattern="**/api/orders")
6. 导出存储状态,并在新会话中重放
Agent:
  browser_storage_state(filename="/tmp/saas-state.json")
  # …later, in a new ephemeral session…
  browser_set_storage_state(filename="/tmp/saas-state.json")
  browser_navigate(url="https://saas.example.com")
7. 运行 Playwright 跟踪以供人工审查
You: Trace this whole flow so I can replay it in Playwright Trace Viewer.

Agent:
  browser_start_tracing(filename="/tmp/trace.zip", screenshots=true, snapshots=true)
  # …agent runs the flow…
  browser_stop_tracing()

You: open /tmp/trace.zip in Playwright Trace Viewer (https://trace.playwright.dev)

安全模型

在任何存有生产凭据的机器上部署之前,请先阅读本文。

简要说明
资产信任边界
cloak-browser-mcp 源代码(此仓库)MIT 许可,公开,可通过阅读进行审计。
cloakbrowser npm 包信任 CloakHQ 维护者和 npm registry。
CloakBrowser Chromium 二进制文件首次使用时从 cloakbrowser.dev 下载。由上游封装程序验证 SHA-256。根据许可,该二进制文件为闭源。
你的环境变量 / Keychain / shell 历史记录MCP 服务会继承你的进程环境。除非你信任供应链,否则不要在生产凭据可见的环境中运行。
此软件包引入的威胁
1. 供应链遭到入侵

安装或运行时会引入三个软件包:@modelcontextprotocol/sdk、playwright-core 和 cloakbrowser,以及其下载的 Chromium 二进制文件。如果 CloakHQ 的 npm 发布令牌或 cloakbrowser.dev 遭到入侵,攻击者就可能推送在你的用户账户下运行的恶意二进制文件。

缓解措施:

  • 固定使用已知安全的 cloakbrowser 版本。
  • 将 CLOAKBROWSER_BINARY_PATH 设置为经过审计的二进制文件。
  • 保持 CLOAKBROWSER_SKIP_CHECKSUM 为默认值(false)。
  • 审计 ~/.cloakbrowser/ 及你使用的任何 --profile-dir。
2. Agent 驱动的浏览器导航

默认情况下,browser_navigate 接受任何 URL。LLM Agent 可能受到提示词注入攻击,被诱导导航到恶意网站。

缓解措施:

  • --allowed-domains <csv>(支持 *.example.com)。
  • --blocked-domains <csv>(优先检查)。
  • 使用专用的临时 --profile-dir,不要使用真实的浏览器配置文件。
  • 使用 --max-pages <n> 限制标签页数量。
3. 任意 JS 执行
  • browser_evaluate — 在页面沙箱中运行 JS。无法读取你的本地文件系统。始终可用。
  • browser_run_code_unsafe — 在此 Node.js 服务进程中运行 JS。可以执行 Node 能执行的任何操作。需要双重明确授权:必须同时设置 --caps config 和 --enable-unsafe-eval。

**缓解措施:**切勿在含有生产凭据环境变量的机器上同时使用 --enable-unsafe-eval。

4. 文件系统访问范围

browser_file_upload 和 browser_drop 可以附加你有读取权限的任何文件。使用 --upload-allow-dir <path> 限制访问范围。

写入方面:browser_take_screenshot --saveAs、browser_pdf_save、browser_storage_state 和 browser_start_tracing 会在 Agent 指定的路径写入文件。如果不希望发生这种情况,请省略 --caps pdf / storage / devtools。

5. 持久化配置文件泄露

--profile-dir 会累积 Cookie/localStorage/IndexedDB。如果同步到云存储,那么通过 Agent 登录过的每个网站都可能被拥有该同步令牌的任何人访问。默认路径 ~/.cloak-browser-mcp/profiles/<name> 位于常见云同步目录之外。

6. 提示词注入导致数据外泄

恶意页面可能通过提示词注入,诱导 Agent 使用被盗状态导航到其他位置,或将 DOM 中的秘密通过 POST 请求发送出去。这是 LLM 问题,不是 MCP 问题。

  • 每项任务使用独立会话 — 不相关的任务之间调用 browser_close。
  • 处理敏感流程时,优先使用临时配置文件,而非持久化配置文件。
  • 如果任务涉及任何已通过身份验证的内容,请审查 Agent 的工具调用。
7. 网络出站流量
调用目标时机
CloakBrowser 二进制文件下载cloakbrowser.dev(通过 CLOAKBROWSER_DOWNLOAD_URL 覆盖)安装后首次使用时
浏览器流量Agent 导航到的任意位置始终
cloak_set_geolocation --fromProxyIpipapi.co/json/仅在明确调用时

此封装程序不会回连,也不会收集遥测数据。

推荐的部署配置

“紧凑”(敏感机器——持有生产凭据):

--caps network,storage,pdf
--profile-dir /Users/me/.cloak-browser-mcp/profiles/scoped
--allowed-domains *.target.com
--upload-allow-dir /tmp/cloak-uploads
--max-pages 5

不使用 --enable-unsafe-eval。不启用 vision 功能(通过 xy 点击可绕过允许列表)。

“开放”(研究/个人浏览):

--caps all
--humanize
--max-pages 20

“不受信任”(你还不完全信任上游二进制文件)——在 Docker 容器中运行,或使用全新的 macOS 用户帐户运行,且不授予 Keychain 访问权限,也不挂载任何 .env 文件。

报告漏洞

如果你在 cloak-browser-mcp 中发现安全问题(而不是上游 cloakbrowser 软件包或其二进制文件中的问题),请在 https://github.com/devinwang/cloak-browser-mcp/security/advisories/new 提交私密安全公告。

对于上游 CloakBrowser 中的问题,请访问:https://github.com/CloakHQ/CloakBrowser/security/advisories/new。


更新日志

[0.2.0] - 2026-10-21
  • 将 cloakbrowser 从 0.3.x 升级到 0.6.3。 新版本新增了 Pro 许可、发布渠道和签名下载验证。服务使用的功能均未移除。没有新增 MCP 工具;工具数量仍为 80。
  • 修复:库的日志行可能会破坏 stdio 流。 cloakbrowser 会使用 console.info 报告某些事件(例如代理凭据中特殊字符的自动编码),而 Node 会将其写入 stdout;MCP 客户端在该流中只接受 JSON-RPC。现在服务运行时会将 console.log、console.info 和 console.debug 重定向到 stderr。
  • Node 要求现在为 ^20.19.0 || >=22.12.0(原先声明为 >=18)。CloakBrowser 0.3.30 已要求 Node 20 或更高版本,而 0.6.x 需要 20.19 或更高版本。CI 不再测试 Node 18。
  • 新增 6 个工具,以匹配 Playwright MCP 0.0.83(80 → 86):
    • browser_find — 在快照中搜索文本或正则表达式。
    • browser_emulate_media — 配色方案、减少动态效果、强制颜色、对比度、媒体类型。null 会清除覆盖设置。
    • browser_video_show_actions / browser_video_hide_actions(devtools)— 在录制或屏幕录制期间为页面上的操作添加注释。
    • browser_start_recording / browser_stop_recording(devtools)— 录制用户在浏览器中的操作,并以 Playwright 代码的形式返回。
  • 不提供 browser_annotate:它会启动 Playwright 的内部仪表板进程,并且需要有人在页面上绘制。
  • playwright-core 的最低版本要求提高至 ^1.61.0,这是首个支持 page.screencast.showActions() 的版本;解析后的版本从 1.60.0 升至 1.64.1。
  • 输入 schema 现在会将可为空参数声明为 { oneOf: [<type>, null] }(转换器以前会丢弃 null),这是 browser_emulate_media 所需的。
  • 在 package.json 中添加了 mcpName,并为官方 MCP Registry 添加了 server.json,其中包含可选的 CLOAKBROWSER_LICENSE_KEY 变量。
[0.1.4] - 2026-08-23
  • 修复:不带 target 的 browser_evaluate 总是失败。 函数曾以字符串表达式的形式传给 Playwright,因此返回的是函数对象而不是函数结果;该对象会被序列化为 undefined,导致 MCP 结果验证失败。现在会调用该函数;如果函数正常返回 undefined,则会报告字符串 "undefined"。
[0.1.3] - 2026-08-23
  • 修复:浏览器启动失败后无法重试。 被拒绝的启动 Promise 会被缓存并不断重新等待,因此一次临时错误就会迫使进程重启。现在启动失败时会清除该 Promise。
  • 错误信息更清晰。 占用配置文件目录的旧 CloakBrowser 进程以前会导致显示“No active page”。现在新增了 NO_BROWSER 错误(BrowserNotLaunchedError),其中包含底层启动错误和查找残留进程的命令;对于未知标签页 ID,还新增了 TAB_NOT_FOUND 错误。NoActivePageError 不再提示调用方运行当前失败的调用。
[0.1.2] - 2026-08-03
  • 行为没有变化。仅调整发布流水线:改为通过 npm 可信发布(OIDC) 发布,而不再使用 NPM_TOKEN 密钥。长期有效的令牌会悄无声息地过期,而 npm 遇到未经授权的发布请求时会返回 404 Not Found - PUT——这看起来像是软件包不存在,而不是身份验证失败。OIDC 不存在过期问题。
  • 从 actions/setup-node 中移除了 registry-url:它会写入一个包含 _authToken=${NODE_AUTH_TOKEN} 的 .npmrc,而在未提供令牌时,会将 NODE_AUTH_TOKEN 导出为字面占位符 XXXXX-XXXXX-XXXXX-XXXXX,导致 npm 使用无效令牌进行身份验证,而不是回退到 OIDC。
  • 发布任务会在发布前将 npm 固定到 11.x 系列——OIDC 需要 >= 11.5.1,而 Node 22 仍捆绑 10.x。可信发布会自动生成来源证明,因此移除了显式的 --provenance 标志;证明覆盖范围保持不变。
[0.1.1] - 2026-05-24
  • 破坏性变更(用户体验):默认模式现在为有头模式(显示浏览器),不再是无头模式。交互式 MCP 服务应让用户看到 Agent 的操作过程。批处理或 CI 场景请显式传入 --headless。Smithery 的默认设置也已相应调整。
[0.1.0] - 2026-05-24
  • 初始版本。约 62 个由 CloakHQ/CloakBrowser 提供支持的 MCP 工具,涵盖完整的 Playwright-MCP 功能对等,以及 Cloak 独有的隐身、配置文件、审计和二进制文件管理功能。
  • CLI:--caps、--profile-dir、--headless/--headed、--proxy、--timezone、--locale、--user-agent、--viewport、--geoip、--humanize、--fingerprint-seed、--allowed-domains、--blocked-domains、--enable-unsafe-eval、--upload-allow-dir、--download-dir、--max-pages、--self-test。
  • 提供 Smithery YAML,支持一键集成。
  • 采用 MIT 许可的封装代码;上游 CloakBrowser Chromium 二进制文件为专有软件,可免费使用,但禁止再分发。

许可证


致谢

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。