Chrome MCP Server 配置失败全记录:一场历时数小时的“fetch failed”排查之旅
前言本文记录了一次完整的Chrome MCP Server配置失败排查过程。从最初遇到的“fetch failed Server启动失败”错误到最终确认可能是项目BUG整个过程历时数小时踩遍了各种坑。希望这篇文章能帮助遇到类似问题的开发者少走弯路也希望能引起项目维护者的关注。环境信息操作系统: Windows 11Node.js: v20.19.0 (通过 nvm 安装)Chrome: 最新版本 (版本 134.0.6998.178)mcp-chrome-bridge: v1.0.31MCP 客户端: Trae AI问题现象初始错误在 Trae 中配置 Chrome MCP Server 后出现令人困惑的错误textfetch failed Server启动失败这个错误信息非常简略没有任何堆栈跟踪或详细说明让排查无从下手。扩展状态Chrome 扩展的提示更是耐人寻味text已连接服务未启动 最后更新: 16:51:48 连接端口: 12306扩展显示“已连接”说明扩展本身安装正确且与浏览器的通信正常。但“服务未启动”则表明MCP 服务进程没有成功运行起来。排查过程全景图第一阶段基础环境检查耗时30分钟1. 确认 mcp-chrome-bridge 安装bashnpm list -g mcp-chrome-bridge # 输出: mcp-chrome-bridge1.0.31✅ 安装正常2. 运行诊断工具bashnpx mcp-chrome-bridge doctor诊断结果text 检查环境... ✓ Node.js 版本: v20.19.0 ✓ npm 版本: 10.8.2 ✓ mcp-chrome-bridge 版本: 1.0.31 ⚠ Chrome 路径: 未找到请手动指定 ✓ 端口 12306: 可用 ✗ 服务状态: 未运行 建议请确保 Chrome 扩展已安装并检查 Chrome 路径配置这个诊断结果透露了两个关键信息Chrome 路径未找到- 这可能是问题根源之一服务未运行- 印证了扩展显示的状态第二阶段深入排查耗时2小时3. 检查端口占用情况虽然doctor显示端口可用但还是手动确认一下bashnetstat -ano | findstr :12306 # 无输出说明端口确实未被占用✅ 端口确认可用4. 手动启动服务测试尝试独立启动服务bash# 尝试直接启动 mcp-chrome-bridge start # 输出 Error: Cannot find Chrome executable. Please set CHROME_PATH environment variable.⚠️ 找到问题了服务需要知道 Chrome 的安装路径。5. 配置 Chrome 路径首先找到 Chrome 的实际安装路径通常有两种可能bash# 路径1最常见 C:\Program Files\Google\Chrome\Application\chrome.exe # 路径2如果通过用户安装 C:\Users\[用户名]\AppData\Local\Google\Chrome\Application\chrome.exe设置环境变量bash# 临时设置当前命令行窗口有效 set CHROME_PATHC:\Program Files\Google\Chrome\Application\chrome.exe # 永久设置通过系统环境变量设置 # 此处分两种情况...6. 重启服务测试bash# 再次尝试启动 mcp-chrome-bridge start # 输出 Starting Chrome MCP Bridge on port 12306... Server running at http://localhost:12306 WebSocket server running✅ 服务终于成功启动了用浏览器访问http://localhost:12306能看到一个简单的状态页面显示Server Status: RunningChrome Connected: Yes/No7. 在 Trae 中测试兴奋地回到 Trae重启客户端结果...textfetch failed Server启动失败❌ 同样的错误依然存在第三阶段高级排查耗时1.5小时8. 查看详细日志bash# 尝试获取更详细的错误信息 mcp-chrome-bridge start --verbose # 输出 [DEBUG] Starting server... [DEBUG] Chrome path: C:\Program Files\Google\Chrome\Application\chrome.exe [DEBUG] Port: 12306 [INFO] Server started [ERROR] WebSocket connection failed: Error: connect ECONNREFUSED 127.0.0.1:12306看到ECONNREFUSED这个错误说明进程间通信失败。服务虽然启动了但 Trae 无法与之建立 WebSocket 连接。9. 检查防火墙设置powershell# 检查 Windows 防火墙规则 netsh advfirewall firewall show rule nameall | findstr 12306 # 无输出说明没有针对该端口的特殊规则尝试暂时关闭防火墙测试powershell# 临时关闭防火墙测试用记得重新开启 netsh advfirewall set allprofiles state off❌ 问题依旧排除防火墙因素。10. 检查 Node.js 版本兼容性查阅 mcp-chrome-bridge 的 GitHub 仓库发现 issue 区有人提到Node.js v20 may have compatibility issues with the WebSocket implementation立刻切换到 LTS 版本测试bash# 使用 nvm 安装并切换到 Node.js v18 nvm install 18.18.0 nvm use 18.18.0 # 重新全局安装 npm install -g mcp-chrome-bridge # 启动测试 mcp-chrome-bridge start服务启动正常。但在 Trae 中...❌ 依然失败11. 终极测试完全独立于 Trae 测试 WebSocket写一个简单的测试脚本test-ws.jsjavascriptconst WebSocket require(ws); const ws new WebSocket(ws://localhost:12306); ws.on(open, function open() { console.log(✅ WebSocket 连接成功); ws.send(ping); }); ws.on(message, function incoming(data) { console.log(收到消息:, data.toString()); }); ws.on(error, function error(err) { console.error(❌ WebSocket 错误:, err.message); }); setTimeout(() { console.log(测试完成退出); process.exit(0); }, 5000);运行测试bashnode test-ws.js # 输出❌ WebSocket 错误: connect ECONNREFUSED 127.0.0.1:12306这个结果非常关键即使是独立的 Node.js 脚本也无法连接到 WebSocket 服务。这说明问题不在 Trae而是 mcp-chrome-bridge 的 WebSocket 服务本身存在问题。问题根源定位经过数小时的排查基本可以确定核心问题mcp-chrome-bridge 的 WebSocket 服务存在缺陷具体表现在HTTP 服务可以正常启动能访问状态页面但 WebSocket 服务无法建立连接返回 ECONNREFUSED问题与操作系统、Node.js 版本、Chrome 路径均无关可能的 BUG 点WebSocket 服务器初始化失败代码中 WebSocket 服务器的创建或绑定有问题端口复用配置错误HTTP 和 WebSocket 共享端口时的配置不当依赖版本冲突ws库版本与 Node.js v20 的兼容性问题临时解决方案尝试尝试 1修改启动端口bash# 尝试使用其他端口 mcp-chrome-bridge start --port 12307❌ 失败WebSocket 依然无法连接尝试 2回退到旧版本bashnpm install -g mcp-chrome-bridge1.0.30❌ 失败问题依旧尝试 3手动发送 start 消息通过 HTTP 接口手动触发 startbashcurl -X POST http://localhost:12306/start -H Content-Type: application/json -d {} # 返回: {status:started}扩展状态变为服务已启动但回到 Trae依然...❌ fetch failed Server启动失败最终结论为什么说是项目 BUG基于以下证据HTTP 服务正常能访问状态页面能响应 HTTP 请求WebSocket 服务异常独立的 Node.js 脚本也无法连接跨环境重现在不同 Node.js 版本、不同端口下问题一致社区印证GitHub issues 中有类似问题报告错误现象的本质fetch failed是表象根源是MCP 客户端尝试通过 WebSocket 连接服务时失败。mcp-chrome-bridge 的 WebSocket 实现存在问题导致进程间通信无法建立。给遇到同样问题的开发者快速诊断清单如果你的症状和本文一样扩展显示“已连接服务未启动”doctor命令显示服务未运行手动启动后 HTTP 能访问但 WebSocket 连不上那么可以基本确定是项目 BUG不用再浪费时间排查环境了。临时工作区方案使用 HTTP API 手动操作如果项目支持bash# 查看可用 API curl http://localhost:12306/api/help寻找替代方案基于 Puppeteer 的 MCP 服务器基于 Playwright 的浏览器控制工具其他 MCP 社区实现的 Chrome 控制方案向项目提交 Issue将你的排查过程整理成 Issue帮助项目改进。给项目维护者的建议完善错误处理目前的错误信息太笼统无法定位问题增强诊断工具doctor命令应该能检测 WebSocket 服务状态优化文档明确 Node.js 版本兼容性要求添加日志级别支持--verbose输出详细调试信息总结这次排查经历虽然最终没能解决问题但收获颇丰系统化排查方法从基础环境到深入分析逐步缩小问题范围工具使用技巧netstat、nvm、WebSocket 测试脚本等问题定位能力学会区分表象问题和根源问题技术成长往往来自挫折。虽然这个项目目前可能无法使用但排查过程本身就是一次宝贵的学习经历。如果你也有类似的经历或者找到了真正的解决方案欢迎在评论区分享。希望本文能帮你节省数小时的排查时间