开发者速查手册:Claude Code调用浏览器的3种MCP集成模式(本地/远程/沙箱)

为什么我一开始死磕“本地模式”却连浏览器都打不开? 上周三下午三点十七分,我盯着 VS Code 里第 17 次报错的终端窗口,手边咖啡凉透,心里只剩一个念头:这破 puppeteer-core 怎么连 localhost 都连不上? Error: net::ERR_CONNECTION_REFUSED at http://localhost:9222/json at navigate (/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Frame.js:138:25) 我翻遍 Puppeteer 文档、Chrome 启动参数、Docker 网络配置,甚至重装了 Chromium……直到凌晨一点,偶然在 Claude Code 的 MCP 插件设置页底部发现一行小字: ⚠️ MCP Server 默认禁用本地进程 spawn(出于安全策略),需手动启用 mcp.allowLocalProcess=true ——原来不是 Chrome 没起来,是 MCP 根本没让它起!puppeteer-core 在等一个永远不会出现的调试端口。 那一刻我顿悟:MCP 的三种模式,根本不是“技术选型”,而是权限与上下文的分层契约。 “谁在调”?是 IDE 插件、CI 脚本,还是用户点击的按钮? “在哪调”?是开发机、K8s Pod,还是客户浏览器里的 Web Worker? “以谁的身份调”?是 root、普通用户、还是被 seccomp 锁死的 sandbox 用户? 这才是真正的设计原点。 下面这张对比表,是我贴在工位显示器边框上的速查便签(手写体,带咖啡渍): 场景 推荐模式 关键约束 我的便签原文 调试前端组件(如 Storybook 快照) ✅ 本地模式 仅限本机,无网络访问权 本地=快但受限 批量爬取公开电商页面(含 JS 渲染) ✅ 远程模式 需自维 Grid/Selenium,证书自己管 远程=自由但要管证书 渲染用户上传的 HTML 报表模板 ✅ 沙箱模式 DOM 可操作,但 fetch/open/print 全受白名单控制 沙箱=安全但没 DOM 操作权 ...

March 25, 2026 · 智通