1. 先搞清楚 playwright-extension-mcp 到底卡在哪一环opencode.json里配了playwright-extension-mcpOpenCode 启动时也没报错但浏览器扩展面板一直显示「目前没有连接任何 mcp 客户端」——这个现象我遇到过不止一次。它最迷惑人的地方在于配置文件语法是对的OpenCode 也确实读到了可链路就是不通。先把这条链路拆开看它其实有四段OpenCode 解析opencode.json识别出mcp节点下的本地服务定义OpenCode 以子进程方式拉起npx playwright/mcplatest --extensionMCP Server 启动后监听 stdio等待浏览器扩展通过 token 完成握手浏览器扩展侧用PLAYWRIGHT_MCP_EXTENSION_TOKEN反向认证握手成功后扩展面板才会显示已连接。你看到的「配置加载成功」只证明第 1 段过了。第 2 段如果卡在npx的交互式安装确认上进程根本没起来第 3、4 段如果 token 或浏览器兼容性有问题握手就停在半路。所以排查的核心不是「JSON 写没写对」而是「进程有没有真正跑起来、握手有没有真正完成」。这篇就按这个顺序给你一份可复制的配置骨架再配一套逐步验证动作帮你把问题定位到具体是哪一段断的。适合正在用 OpenCode 接浏览器自动化、又不想在配置里反复猜的人。2. 接入前的统一通道准备用 TaoToken 管好 Key 和 API在动opencode.json之前建议先把模型侧的 Key 和 API 通道收敛一下。原因很实际MCP 排障时你不想再被「模型请求 401」这种无关变量干扰。我习惯用 TaoToken 做统一入口一个 Key 覆盖对话、编码、Agent 几类调用省得在多个平台之间来回切。TaoToken 的定位是给 AI 编码工具提供统一的模型接入通道官网在 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content API 入口是 https://taotoken.net/api 。它的好处是你本地 OpenCode、Coding Agent、脚本调用可以共用同一套凭证排障时只需要盯 MCP 这一条链路不用同时怀疑模型侧配置。具体操作上先去控制台建一个 Key控制台入口https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_contentconsoleutm_campaignrewriteAPI Keys 管理https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi-keysutm_campaignrewrite拿到 Key 之后把它写进 OpenCode 的模型配置里这部分和 MCP 是两块独立配置别混在一起。如果你只是想先验证模型通道通不通可以直接用模型对话页发一条最小请求模型对话https://taotoken.net/chat?utm_sourcetaotoken_aicg_blog_endutm_contentmodel-chatutm_campaignrewrite这一步的意义是确认「模型请求」这条线是干净的。等会儿 MCP 连不上时你就能排除掉「是不是 Key 过期导致整个会话异常」这种干扰项。长期跑编码和 Agent 任务的话可以看下 Coding PlanCoding Planhttps://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding-planutm_campaignrewrite接入文档在这里配置字段有疑问时对照着看接入文档https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite注意TaoToken 是模型接入通道不负责 MCP 子进程的拉起。MCP 连不上浏览器问题一定在 OpenCode 的本地进程链路或扩展侧别把两件事混为一谈。3. 可复制的 opencode.json 配置骨架下面这份是我实测下来最稳的最小骨架。排障阶段先只保留playwright-extension一个 MCP把普通playwright那条先注释掉或删掉避免模型走错路径。{ $schema: https://opencode.ai/config.json, mcp: { playwright-extension: { type: local, command: [ npx, -y, playwright/mcplatest, --extension ], enabled: true, environment: { PLAYWRIGHT_MCP_EXTENSION_TOKEN: 你的扩展token } } } }这份骨架里有四个关键点逐个说清楚第一-y必须加。这是最容易被忽略、又最像「真凶」的一处。npx首次拉playwright/mcplatest时会弹交互式安装确认如果没加-y子进程就卡在等你按 Y 的状态。OpenCode 前端只会显示「尝试连接」不会告诉你它在等确认。加上-y强制非交互进程才能顺利起来。第二command用数组形式。OpenCode 的本地 MCP 支持数组写法每个参数独立成一项避免 Windows 下路径和空格解析出问题。别写成单个字符串。第三环境变量字段用environment。很多 MCP 客户端通用的是env但 OpenCode 本地 MCP 用的是environment。你如果从别的客户端抄配置很容易在这里踩坑。上面这份用的是 OpenCode 认的字段。第四token 要干净。从扩展 UI 复制的PLAYWRIGHT_MCP_EXTENSION_TOKEN末尾经常带换行或空格粘进去后现象就是「配置全对但连不上」。建议复制后先在编辑器里看一眼有没有多余字符。如果你确实需要同时保留普通 playwright 和扩展版正式使用时可以都留着但排障阶段强烈建议只留扩展版。原因很简单模型可能优先调用普通 playwright你看到工具可用就以为扩展链路通了实际根本没走--extension那条路。4. 逐步验证从手动启动到最小请求配置改完别急着在 OpenCode 里试先在终端手动把 MCP 拉起来这样能立刻分清是「配置问题」还是「运行问题」。4.1 手动启动 MCP ServerPowerShell$env:PLAYWRIGHT_MCP_EXTENSION_TOKEN你的token npx -y playwright/mcplatest --extensioncmdset PLAYWRIGHT_MCP_EXTENSION_TOKEN你的token npx -y playwright/mcplatest --extension如果这一步终端里出现安装提示、下载失败、Node 版本不满足、进程闪退或长时间无输出那问题就不在opencode.json而在 Node/npm 环境或包本身。先把这条命令跑通再回到 OpenCode。4.2 确认浏览器扩展端口和 token扩展侧要确认三件事扩展已加载并开启开发者模式、扩展面板里显示的 token 和配置里填的一致、浏览器是 Chrome/Chromium 而不是 Edge。仓库里有过 Edge 下扩展连不上的报告排障时先用 Chrome 做基准能省很多时间。4.3 用最小请求验证连通性MCP Server 手动跑起来后扩展面板应该从「没有连接任何 mcp 客户端」变成已连接状态。如果手动能连、OpenCode 里不能连那锅就在 OpenCode 拉起子进程的链路比如工作目录、PATH 解析、环境变量注入或 stdio 管道状态。想进一步隔离可以用 HTTP 模式做对照测试npx -y playwright/mcplatest --extension --port 8931然后让客户端通过http://localhost:8931/mcp连接。如果 HTTP 模式能连、本地 command 模式不行基本可以锁定是 OpenCode 的 stdio 子进程拉起环节有问题而不是扩展或 token 的锅。5. 本篇常见错排查对照表把上面几类现象整理成一张对照表方便你按症状定位现象最可能的原因处理动作扩展面板一直显示无客户端npx卡在交互确认给 command 加-y手动启动能连OpenCode 里不能OpenCode 子进程拉起链路异常检查工作目录、PATH、环境变量注入token 填了仍握手失败token 带换行/空格或扩展版本不匹配重新复制 token重装扩展Chrome 能连Edge 不能浏览器兼容性换 Chrome/Chromium 做基准工具可用但没走扩展普通 playwright 与扩展版并存干扰排障阶段只留扩展版进程闪退或无输出Node/npm 环境异常单独跑npx -y playwright/mcplatest --extension看报错排查顺序建议固定成先手动终端启动 → 再确认扩展端口和 token → 最后回到 OpenCode 验证。这个顺序能把「配置错」和「链路错」分开避免在 JSON 里反复猜。6. 排障之后的接入与长期使用等 MCP 链路跑通模型侧的通道建议也一并收敛好省得后面又出变量。排障和接入相关的 Key、文档入口API Keyshttps://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi-keysutm_campaignrewrite接入文档https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite想先验证模型通道是否正常用模型对话发一条最小请求即可模型对话https://taotoken.net/chat?utm_sourcetaotoken_aicg_blog_endutm_contentmodel-chatutm_campaignrewrite如果你是要长期跑编码和 Agent 任务把 MCP 和模型通道都固定下来会更省心Coding Planhttps://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding-planutm_campaignrewrite最后留一个我踩过的坑改完opencode.json后OpenCode 有时会缓存旧的 MCP 进程记得完全重启一次再验证否则你看到的还是上一次的失败状态。
阅读完成 · 觉得有帮助?