cloak-auth-bridge
MCP server that bridges authenticated sessions from a Chrome extension to CloakBrowser profiles via local WebSocket, enabling agents to sync, verify, and debug persistent login state without exposing raw credentials.
README
Cloak Auth Bridge
一个本地认证桥:Chrome MV3 扩展在配对后,按本地登记的站点配置采集 Cookies 和 localStorage,通过本机 WebSocket 交给 同一个 MCP 进程,再注入 CloakBrowser 持久 Profile。
推荐形态:MCP = 唯一常驻入口。
python -m cloak_auth_bridge mcp 同时提供:
- MCP stdio 工具(给 IDE / Agent)
- 扩展桥
ws://127.0.0.1:17321 - Cloak Profile 导入 / 校验 / 调试会话
不需要再长期单独跑 serve / scripts\start.ps1 守护进程。
扩展安装时默认具备 https://*/* 读取权限,不再要求逐站点“授权并加入白名单”。真正的站点范围由 sites/ 与 profiles.json 双重约束。MCP 工具只返回数量和验证结果,原始 Cookie/Token 不进入 LLM 上下文。
安装(和 multi-search 一样走 GitHub + uvx)
仓库:
https://github.com/inorilzy/cloak-auth-bridge
Codex / CLI(推荐)
codex mcp add cloak-auth-bridge -- uvx --from git+https://github.com/inorilzy/cloak-auth-bridge.git@v0.2.0 cloak-auth-bridge-mcp
或写入 ~/.codex/config.toml:
[mcp_servers.cloak-auth-bridge]
command = "uvx"
args = [
"--from",
"git+https://github.com/inorilzy/cloak-auth-bridge.git@v0.2.0",
"cloak-auth-bridge-mcp"
]
startup_timeout_sec = 60
tool_timeout_sec = 180
enabled = true
uvx 会从 GitHub 拉取包并启动 MCP。首次运行会在用户目录播种配置:
~/.cloak-auth-bridge/
sites/
profiles.json
extension/ # 给 Chrome 加载
profiles/ # Cloak 持久登录态
.auth/
也可用环境变量指定数据目录:
$env:CLOAK_AUTH_BRIDGE_HOME = "D:\cloak-auth-data"
从源码本地开发
git clone https://github.com/inorilzy/cloak-auth-bridge.git
cd cloak-auth-bridge
.\scripts\setup.ps1
.\.venv\Scripts\python.exe -m cloak_auth_bridge mcp
Cursor 本地开发可用仓库内 .cursor/mcp.json。
唯一推荐入口:MCP
cloak-auth-bridge-mcp / python -m cloak_auth_bridge mcp 同时提供:
- MCP stdio 工具
- 扩展桥
ws://127.0.0.1:17321 - Cloak Profile 导入 / 校验 / 调试会话
请让 IDE/Codex 加载 MCP 后重启。成功后:
- 扩展可连
ws://127.0.0.1:17321 - Agent 可直接调下方工具
- 不要再开独立
serve,否则会抢端口
连接扩展(默认免 Token)
默认 本机 loopback trust:扩展只要连 ws://127.0.0.1:17321,无需粘贴 Token。
- IDE 启用本项目 MCP(会监听 17321)
- Chrome 加载
extension/并打开弹窗 - Token 留空,点「保存并重连」
- 顶部显示「已连接」即可
可选加固:设置环境变量 CLOAK_AUTH_REQUIRE_TOKEN=1 后,再用 .\scripts\pair.ps1 复制 Token 粘贴到扩展。Token 不要发给 LLM。
日常流程
IDE 启动 MCP(仅 cloak-auth-bridge)
-> 扩展自动连上本机 WS(免 Token)
-> auth_sync_to_cloak
-> cloak_debug_open(启动 Cloak + CDP,并自动 reverse_attach)
-> 同一 MCP 内调试:navigate_page / list_network_requests /
search_in_sources / set_breakpoint_on_text / evaluate_script ...
-> cloak_debug_close
MCP 工具
认证桥
auth_list_sites— 站点列表 + 扩展是否已连接auth_sync_to_cloak— 从 Chrome 扩展采集并导入 Cloak(mode=merge|replace)auth_verify_cloak— 验证 Profile 登录态auth_clear_cloak— 清理(必须confirm=true)
Cloak 会话
cloak_debug_open— 打开 headed Cloak(默认shared-main)并暴露 CDPhttp://127.0.0.1:9333;会尝试自动reverse_attachcloak_debug_tab/cloak_debug_list/cloak_debug_status/cloak_debug_close
内置逆向工具(Python 重写 js-reverse 工具面)
会话:
reverse_attach/reverse_detach/reverse_status
页面与导航:
select_page/new_page/navigate_page/select_frame/click_element/take_screenshot
脚本分析:
list_scripts/get_script_source/save_script_source/search_in_sources
断点与执行:
set_breakpoint_on_text/break_on_xhr/remove_breakpoint/list_breakpointsget_paused_info/pause_or_resume/step
网络与 WebSocket:
list_network_requests/clear_network_requests/get_request_initiator/get_websocket_messages
状态与检查:
list_console_messages/evaluate_script/clear_site_data
这些工具附着在 cloak_debug_open 启动的同一 Cloak CDP 会话上,一个 MCP 完成同步 + 调试,不再依赖第二个 js-reverse 进程。
统一工作流:
auth_sync_to_cloak(site, profile)
cloak_debug_open(profile, urls=[...])
list_network_requests / search_in_sources / evaluate_script / ...
cloak_debug_close
同步示例:
{
"name": "auth_sync_to_cloak",
"arguments": {
"site_id": "xiaohongshu-main",
"target_profile": "shared-main",
"mode": "merge"
}
}
打开 Cloak 供 js-reverse 挂接:
{"name": "cloak_debug_open", "arguments": {"profile_id": "shared-main", "url": ["https://www.xiaohongshu.com"]}}
{"name": "cloak_debug_status", "arguments": {}}
{"name": "cloak_debug_close", "arguments": {}}
站点配置
站点范围只在本地配置文件维护,扩展弹窗不再登记站点。
sites/bilibili.json -> bilibili-main
sites/x.json -> x-main
sites/youtube.json -> youtube-main
profiles.json
bilibili-main / x-main / youtube-main (dedicated)
shared-main (多站调试共用)
新增站点:在 sites/ 增加 JSON,并在 profiles.json 映射允许的 Profile;多站联调把 site id 加进 shared-main.allowedSites。
第一次真正同步时,cloakbrowser 可能下载 Chromium 二进制。Profile 默认有头可开;注入后通过站点 verify 检查登录状态。
架构
IDE MCP client
│ stdio
▼
cloak_auth_bridge mcp ← 唯一常驻
├─ WebSocket 127.0.0.1:17321 ← Chrome 扩展
├─ AuthService sync/verify
└─ cloakbrowser → profiles/
独立 serve 仅作应急(无 MCP 客户端时):
.\.venv\Scripts\python.exe -m cloak_auth_bridge serve
有 MCP 时不要并行 serve。
scripts\start.ps1 现在只打印 MCP 用法并跑 doctor,不再默认拉起长期 serve。
调试 CLI(可选)
与 MCP 调试工具等价,便于终端手调:
.\.venv\Scripts\python.exe -m cloak_auth_bridge debug-open --profile shared-main --url https://www.youtube.com
.\.venv\Scripts\python.exe -m cloak_auth_bridge debug-tab https://x.com/home
.\.venv\Scripts\python.exe -m cloak_auth_bridge debug-list
.\.venv\Scripts\python.exe -m cloak_auth_bridge debug-close
默认 CDP:127.0.0.1:9333;状态文件:.auth/debug-session.json。
安装 Chrome 扩展
- Chrome 打开
chrome://extensions,启用“开发者模式”。 - “加载已解压的扩展程序”,选择本仓库
extension目录。 - 确保 IDE 已启动本项目的
cloak-auth-bridgeMCP(或临时serve)。 .\scripts\pair.ps1,在扩展里粘贴 Token 并保存,确认“已连接”。
扩展默认申请 https://*/*,只支持 HTTPS,只允许连接 ws://127.0.0.1。
WebSocket 协议(扩展桥)
连接后扩展先发 challenge;服务端回 hello_challenge;扩展回 hello_response;服务端 hello_ack 后可采集。
完成认证后服务端按注册表请求:
{
"id": "0192f0cb-1234",
"type": "capture_auth",
"site_id": "example-main",
"cookie_domains": ["example.com"],
"origins": ["https://www.example.com"],
"nonce": "at-least-16-random-url-safe-characters"
}
扩展校验范围后采集并返回 capture_auth_result。payload 仅允许服务端内存消费,禁止进日志 / MCP result / LLM。
自检
.\scripts\start.ps1
.\.venv\Scripts\python.exe -m cloak_auth_bridge doctor
.\.venv\Scripts\python.exe -m pytest -q
npm test
安全不变量
- Token:
.auth/pairing-token.dpapi,只经pair.ps1进剪贴板 - Cookie/localStorage:仅扩展与 MCP 进程内存,不落日志、不进工具返回
- WebSocket:只绑
127.0.0.1 - 站点范围:daemon/MCP 注册表为第二道白名单
- Free Cloak:同时 1 个 browser;多站用
shared-main+ 多 tab
开发校验
npm test
Get-ChildItem extension -Filter *.js | ForEach-Object { node --check $_.FullName }
extension/ 可直接被 Chrome 以未打包扩展加载。
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。