html
在 cherryStudio MCP 控制台中,用户常观察到三类强关联异常信号:ERR_CONNECTION_REFUSED(网络层拒绝)、Failed to fetch manifest(应用层资源加载失败),以及 MCP 面板持续显示“未检测到活跃客户端”。这并非孤立前端报错,而是端到端调试链路断裂的综合体现。需注意:该问题 不触发 Chrome 自身崩溃日志,但会在 cherryStudio 后台服务日志中高频出现 WebSocket connection to 'ws://127.0.0.1:9222/devtools/browser/...' failed 类型条目。
cherryStudio MCP 客户端依赖 Chrome DevTools Protocol (CDP) v1.3+ 的稳定 WebSocket endpoint。关键约束如下:
- 地址绑定必须为 IPv4 loopback 显式地址:
127.0.0.1:9222(非localhost:9222或0.0.0.0:9222),因 cherryStudio 内置校验器调用net.isIP('127.0.0.1')且严格比对字符串字面量; - CDP 版本兼容性门槛为 Chrome v115+(对应 CDP v1.3),v114 及以下版本缺失
Browser.setDownloadBehavior等 MCP 必需方法; - Chrome 启动时若已存在活动调试实例,新进程将复用
/devtools/browser/...endpoint,导致 MCP 获取到陈旧或冲突的 session ID。
以下启动方式将导致 MCP 连接失败:
open -a "Google Chrome"(macOS) ❌ 否 通过 Launch Services 调度,绕过命令行参数注入
chrome --remote-debugging-port=9222 --no-first-run --disable-extensions ✅ 是 显式创建隔离进程,暴露唯一 CDP endpoint
cherryStudio 读取 mcp.client.chrome.path 配置项后,执行两级验证:
- 文件可执行性校验(
fs.accessSync(path, fs.constants.X_OK)); - 内核指纹识别:通过
spawnSync(path, ['--version'], { encoding: 'utf8' })提取输出,正则匹配/Chromium|Chrome/(d+)/,并要求parseInt(version) >= 115。
常见误配路径示例:/Applications/Brave Browser.app/Contents/MacOS/Brave Browser(虽为 Chromium 内核但 CDP 接口有定制裁剪)、/usr/bin/google-chrome-stable(Ubuntu 默认包可能为 v112)。
在 macOS Sonoma+ 系统中,即使启用 SIP(System Integrity Protection),Chrome 进程仍需显式授予「全盘访问」权限才能成功 bind 到 loopback 端口。验证方法:
lsof -i :9222 | grep LISTEN # 若无输出,说明端口监听失败 # 检查权限:System Settings → Privacy & Security → Full Disk Access → + 添加 Chrome.app
推荐在 ~/.cherrystudio/config.json 中设置:
{ "mcp": { "client": { "chrome": { "path": "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome", "args": [ "--remote-debugging-port=9222", "--headless=new", "--no-sandbox", "--disable-gpu", "--disable-extensions", "--disable-dev-shm-usage", "--remote-allow-origins=*" ] } } } }
注:Windows 用户需将路径改为 C:\Program Files\Google\Chrome\Application\chrome.exe,Linux 用户建议使用 /opt/google/chrome/chrome 并确保 chrome-sandbox 文件存在。
绕过 cherryStudio,直接验证 CDP 健康度:
- 启动 Chrome:
google-chrome –remote-debugging-port=9222 –headless=new –remote-allow-origins=*; - 获取浏览器会话:
curl http://127.0.0.1:9222/json/version→ 应返回Protocol-Version字段; - 创建新目标页:
curl -X POST http://127.0.0.1:9222/json/new -H “Content-Type: application/json” -d ‘{“url”:“about:blank”}’; - 提取返回的
webSocketDebuggerUrl,用wscat -c “ws://127.0.0.1:9222/devtools/page/…”建立连接并发送{“id”:1,“method”:“Page.navigate”,“params”:{“url”:“data:text/html,”}}。
将以下 Bash 脚本加入 cron(macOS/Linux)或 Task Scheduler(Windows):
#!/bin/bash PORT=9222 if ! lsof -i :\(PORT | grep LISTEN >/dev/null; then echo "[\)(date)] ERROR: Chrome debug port \(PORT not listening" | tee -a /var/log/cherrystudio-chrome-health.log open -a "Google Chrome" --args --remote-debugging-port=\)PORT –no-first-run fi
验证 CDP version endpoint
if ! curl -sf http://127.0.0.1:$PORT/json/version | grep -q ‘“Protocol-Version”’; then echo “[$(date)] CRITICAL: CDP endpoint unreachable” | tee -a /var/log/cherrystudio-chrome-health.log fi
cherryStudio MCP 对浏览器的兼容性并非仅取决于内核,更受 CDP 接口演进影响。下表为实测支持状态:
Browser.setDownloadBehavior ❌ 不推荐 Chromium (OpenSUSE) v116.0.5845.96+ ✅ 开源版完整支持 ✅ 可用(需手动编译含 CDP)
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/281449.html