Skip to content

5.7c Chrome DevTools MCP 实战

💡 一句话总结:让 AI 直接连接你的 Chrome 浏览器,调试网页、分析性能、操作 DOM。


学完你能做什么

  • 配置 Chrome DevTools MCP 服务器
  • 让 AI 连接到你正在使用的浏览器会话
  • 在 DevTools 中选中元素/请求,让 AI 分析
  • 无需重复登录,直接调试已登录页面

你现在的困境

  • 想让 AI 帮忙调试网页,但需要反复截图或复制代码
  • 登录后的页面问题,AI 无法访问(需要重新登录)
  • 在 DevTools 发现问题,要手动复制信息给 AI 解释
  • 明明 Chrome 已经开着,MCP 还是报 chrome-beta 找不到

什么是 Chrome DevTools MCP

Chrome DevTools MCP 是 Google 官方的浏览器 MCP。结果就三件事:

  1. 直接接管你当前的 Chrome
  2. 复用你已经登录的状态
  3. 把 DevTools 能看到的信息交给 AI

和传统浏览器自动化有什么不同

对比项Chrome DevTools MCPPuppeteer / Playwright / Selenium
登录状态直接复用当前浏览器通常要自己维护 cookie / token
浏览器实例连已打开的 Chrome常常新开一个实例
元素定位uid(a11y tree)CSS / XPath
调试视角更像“看页面语义”更像“查 DOM 节点”

什么是 uid

这里的 uid 是页面快照里的临时标识,来自可访问性树,不是 CSS 选择器。

它的好处是不依赖页面 class 名。缺点也很直接:页面一刷新,uid 可能就变了,不能硬编码。

┌─────────────────────────────────────────────────────────────┐
│                    Chrome DevTools MCP                       │
├─────────────────────────────────────────────────────────────┤
│                                                              │
│   你的浏览器 ◄──────────► MCP 服务器 ◄──────────► OpenCode   │
│   (已登录状态)              (本地)              (AI Agent)   │
│                                                              │
│   ✓ 无需重新登录                                            │
│   ✓ 访问当前会话                                            │
│   ✓ DevTools 功能                                           │
│                                                              │
└─────────────────────────────────────────────────────────────┘

典型使用场景

场景传统方式使用 MCP
调试登录后页面截图 + 复制代码AI 直接访问浏览器
分析网络请求手动复制请求信息AI 读取 Network 面板
检查 DOM 结构复制 HTML 代码AI 直接操作元素面板
性能分析导出报告给 AIAI 直接读取性能数据

前置条件

先记住这一句就够了

浏览器用 Chrome 146+,配置里不要写 beta。你平时用稳定版 Chrome,就配稳定版。

步骤 1:确保 Chrome 版本 ≥ 146

macOS / Windows / Linux

访问 Chrome 下载页面 下载安装最新版本。

确保版本号 ≥ 146:在 Chrome 地址栏输入 chrome://version 查看。

步骤 2:启用远程调试

  1. 打开 Chrome
  2. 在地址栏输入:
    chrome://inspect/#remote-debugging
  3. 点击 启用 远程调试

页面大概长这样:

Chrome 远程调试开关页面

你应该看到

┌─────────────────────────────────────────────────────────────┐
│  Remote debugging                                           │
│                                                             │
│  [✓] Discover network targets                              │
│                                                             │
│  Remote debugging is enabled                               │
│                                                             │
│  When MCP servers request a debugging session, Chrome      │
│  will show a permission dialog.                            │
└─────────────────────────────────────────────────────────────┘

配置 MCP 服务器

直接配全局文件 ~/.config/opencode/opencode.json

方法一:手动编辑配置文件

编辑 ~/.config/opencode/opencode.json 或项目目录下的 .opencode/opencode.json

jsonc
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "chrome-devtools": {
      "type": "local",
      "command": ["npx", "-y", "chrome-devtools-mcp@latest", "--autoConnect", "--channel=stable"],
      "enabled": true
    }
  }
}

参数说明

参数说明
--autoConnect自动连接到当前活动的 Chrome 实例
--channel=stable明确使用稳定版 Chrome,省掉版本混淆

如果你更喜欢交互式配置,也可以用:

bash
opencode mcp add

验证连接

检查 MCP 状态

bash
opencode mcp list

你应该看到

✓ chrome-devtools connected
    npx -y chrome-devtools-mcp@latest --autoConnect

在 OpenCode 中测试

重启 OpenCode 后,输入:

列出当前打开的浏览器标签页

不用刻意写 use chrome-devtools。正常和 OpenCode 说人话就行,它该用 MCP 时会自己调用。

首次连接时,Chrome 会弹出权限对话框:

┌─────────────────────────────────────────────────────────────┐
│  Chrome                                                     │
│                                                             │
│  "chrome-devtools-mcp" wants to start a remote debugging   │
│  session with Chrome.                                       │
│                                                             │
│  [Allow]  [Block]                                          │
└─────────────────────────────────────────────────────────────┘

点击 Allow 允许连接。

连接成功后,Chrome 顶部会显示:

┌─────────────────────────────────────────────────────────────┐
│  Chrome is being controlled by automated test software.     │
└─────────────────────────────────────────────────────────────┘

如果改完配置还不生效

先退出 OpenCode,再重新打开。很多时候是旧的 MCP 进程还没退掉。


这个 MCP 到底能干嘛

别把它只当成“给 AI 一个浏览器”。它真正强的地方,分成三类。

直接操作页面

  • 打开网页、切标签页、前进后退、刷新
  • 截图、读取页面快照、点击、输入、按键
  • 上传文件、处理弹窗、拖拽元素

这是最直观的自动化:本来你手点,现在 AI 帮你点。

直接读调试信息

  • 看控制台报错
  • 看网络请求和响应
  • 看页面结构和可访问性树
  • 跑 Lighthouse 审计
  • 跑性能追踪、分析 LCP / INP / CLS
  • 做内存快照

这类能力最适合调试前端问题。以前你要截图、复制报错、导 HAR。现在 AI 直接看现场。

直接复用你当前浏览器的登录状态

  • 不用额外传 cookie
  • 不用重新登录
  • 不用单独维护 token / session
  • 浏览器里能看到的页面,AI 基本都能接着操作

这才是它最强的地方。很多网页任务,难点不是“点按钮”,而是“先登录进去,再拿到真实页面状态”。

以前做这类事,你常常要:

  • 自己抓 cookie
  • 处理登录过期
  • 处理双重验证或风控
  • 想办法把页面信息转给 AI

现在的思路反过来了:你先正常登录,AI 直接接你的浏览器继续做。

和传统浏览器自动化比,真正强在哪

  • 传统自动化常常要新开浏览器、重新维护登录态
  • Chrome DevTools MCP 直接接你的现有会话
  • 传统工具更偏脚本和选择器
  • 这个 MCP 更适合让 AI 一边看页面,一边做判断,再继续操作

一句话说,传统自动化更像“你写脚本指挥浏览器”,Chrome DevTools MCP 更像“AI 直接接手你已经打开的浏览器”。

最实用的场景

  • 调试登录后页面:后台、控制台、会员页、已登录工作台
  • 排查网页问题:看 Network、Console、Elements、Performance
  • 内容运营:发帖、整理时间线、收集信息、做 Markdown 摘要
  • 表单和后台操作:重复填报、批量录入、上传附件
  • 网页巡检:截图、性能审计、回归检查
  • 把网页当工作流节点:先问网页里的 AI,再继续自动操作

再往上走一步:它能组成完整工作流

最强的不是单个动作,而是串起来:

  1. 打开页面
  2. 读取页面状态
  3. 判断下一步
  4. 点击或输入
  5. 再读结果
  6. 继续操作或产出报告

所以它不只是“浏览器自动化”,更像是一个带视觉上下文的网页工作流引擎。

这次实际跑通的案例

案例实际结果用到的能力
连接当前 Chrome成功列出 28 个标签页list_pages
读取当前页面成功拿到页面快照take_snapshot
在 X 发帖成功发出一条测试帖导航、点击、输入
整理 X 时间线抓取 14 条内容并写成 x_timeline.md导航、等待、快照、写文件
问 Grok 并关注账号让 Grok 推荐 AI 从业者,再去关注多步页面操作

先记这 4 个结论

现象真正该做的事
chrome-beta 找不到配置别写 beta,直接用稳定版 Chrome
用户说“Chrome 已经开了”先确认开的是不是同一个版本的 Chrome
改完配置还是老错误优先怀疑旧 MCP 进程没退出,先重启 OpenCode
list_pages 成功了再补一个 take_snapshot 或截图,确认真的连通

实战示例

示例 1:查看浏览器标签页

列出当前所有打开的标签页

AI 会调用 chrome-devtools_list_pages 工具,返回类似:

json
[
  { "pageId": 1, "title": "OpenCode Tutorial", "url": "https://learnopencode.com" },
  { "pageId": 2, "title": "GitHub", "url": "https://github.com" }
]

示例 2:截图当前页面

对当前页面截图

AI 会调用 chrome-devtools_take_screenshot,返回页面截图。

示例 3:直接发一条 X 帖子

这次真实跑通过一条:

text
在 x 的首页,帮我发个帖子,说:这条消息是 OpenCode 连 MCP 发出的

结果:成功发出帖子。

这个例子最能说明一件事:它不是只能“看网页”,而是真的能操作你当前登录的浏览器。

做自动化操作时,记得主动限速

AI 默认不会天然按“人类速度”操作。像发帖、点赞、关注、批量点击、批量填表这类动作,如果连续太快,容易触发平台风控。

推荐你直接在提示词里写清楚:

text
帮我操作慢一点,模拟真人节奏。每一步之间停 2-3 秒,不要连续快速点击。

如果是更敏感的平台,可以再保守一点:

text
这次操作尽量像真人,页面变化后先等待,再继续下一步;每次点击后停 3-5 秒。

示例 4:分析网络请求

在 Chrome DevTools 的 Network 面板中选中一个请求,然后问 AI:

我选中了一个失败的 API 请求,帮我分析一下为什么会失败

AI 可以读取你选中的请求信息,分析问题原因。

你可以这样问得更具体一点

text
我在 Network 面板里选中了一个 401 请求,帮我看是 Cookie、Authorization 头,还是 CORS 出了问题。

示例 5:检查页面元素

在 Elements 面板中选中一个元素:

这招很适合排查:按钮为什么点不到、样式为什么被覆盖、间距为什么不对。

我选中了一个按钮元素,帮我看看它的 CSS 样式有什么问题

示例 6:执行 JavaScript

在当前页面执行 console.log('Hello from OpenCode')

示例 7:调试登录后页面

帮我检查当前页面的登录状态是否正常

AI 可以直接访问你已登录的会话,无需重新登录。

这也是它最实用的地方之一。很多问题只会在“登录后、带真实数据、带真实权限”的页面里出现,这时候截图和口述都不如直接把浏览器交给 AI 看。

示例 8:把时间线整理成 Markdown

这次还实际做过一件很适合内容工作流的事:

text
把我 X 上正在关注的时间线,整理成一个 md

结果:抓取时间线内容,整理成了 x_timeline.md

如果你平时做信息收集、行业跟踪、内容摘录,这个用法很实在。

示例 9:让 AI 借助网页里的 AI 再做事

这次还做过一套组合动作:

  1. 打开 X 里的 Grok
  2. 问它推荐几个值得关注的 AI 行业账号
  3. 再去把这些账号关注掉

这说明 Chrome DevTools MCP 不只是“自动化点击”,还可以把网页本身当作工作流的一部分。


常用工具示例

Chrome DevTools MCP 的工具很多,下面先记这批高频的就够用了:

工具功能
list_pages列出所有打开的标签页
select_page选择一个标签页
navigate_page导航到 URL / 前进 / 后退 / 刷新
take_snapshot获取页面快照(可访问性树)
take_screenshot截取页面或元素截图
click点击元素
fill填写表单
type_text输入文本
press_key按键操作
hover悬停在元素上
evaluate_script执行 JavaScript
list_network_requests列出网络请求
get_network_request获取请求详情
list_console_messages列出控制台消息
lighthouse_audit运行 Lighthouse 审计
performance_start_trace开始性能追踪
performance_stop_trace停止性能追踪

如果你准备把它用到更完整的工作流里,下面这批也值得认识:

工具什么时候用
new_page需要新开标签页做搜索、登录、跳转测试
close_page标签页太多,想收口当前流程
wait_for等页面加载、等按钮出现、等结果出来
drag拖拽上传区、排序组件、滑块类交互
fill_form一次填多个表单项,比一个个 fill 更省事
handle_dialog处理 alertconfirmprompt 这类弹窗
upload_file网页上传图片、PDF、附件
emulate模拟移动端、弱网、地理位置、明暗模式
get_console_message某条控制台报错要看完整内容时
performance_analyze_insight已经跑完性能 trace,继续深挖某个性能洞察
take_memory_snapshot怀疑页面有内存泄漏,想抓堆快照

你可以把它们理解成 3 类:

  • 流程控制new_pageclose_pagewait_for
  • 复杂交互dragfill_formhandle_dialogupload_file
  • 深度诊断emulateget_console_messageperformance_analyze_insighttake_memory_snapshot
为什么工具名都带 chrome-devtools_ 前缀?

OpenCode 会把 MCP 工具注册成“服务器名 + 下划线 + 工具名”的形式。

所以你在配置里把服务器命名为 chrome-devtools,最终看到的工具就是 chrome-devtools_list_pageschrome-devtools_take_snapshot 这种格式。这样做是为了避免不同 MCP 服务器的工具重名。


其他启动方式

除了 --autoConnect,Chrome DevTools MCP 还支持其他连接方式:

方式 1:独立用户配置

使用 MCP 专用的 Chrome 配置(干净环境):

jsonc
{
  "mcp": {
    "chrome-devtools": {
      "type": "local",
      "command": ["npx", "-y", "chrome-devtools-mcp@latest"]
    }
  }
}

这种方式会启动一个新的 Chrome 实例,使用临时配置文件。

方式 2:连接到远程调试端口

先关闭当前 Chrome,再用一个单独的 profile 启动远程调试。这样更安全,也更符合 Chrome 现在的要求:

bash
# macOS
/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --remote-debugging-port=9222 --user-data-dir=/tmp/chrome-profile

# Linux
google-chrome --remote-debugging-port=9222 --user-data-dir=/tmp/chrome-profile

# Windows
"C:\Program Files\Google\Chrome\Application\chrome.exe" --remote-debugging-port=9222 --user-data-dir=%TEMP%\chrome-profile

然后配置 MCP 连接:

jsonc
{
  "mcp": {
    "chrome-devtools": {
      "type": "local",
      "command": ["npx", "-y", "chrome-devtools-mcp@latest", "--browser-url=http://127.0.0.1:9222"]
    }
  }
}

踩坑提醒

现象原因解决
找不到 DevToolsActivePort for chrome-beta工具误连到了 beta 配置目录显式加 --channel=stable
改完配置还是继续找 betaOpenCode 里的旧 MCP 进程还没退出重启 OpenCode 后再试
连接超时远程调试未启用访问 chrome://inspect/#remote-debugging 启用
权限对话框不出现Chrome 版本不支持升级到 Chrome 144+,建议最新稳定版
连接后立即断开同时有其他调试客户端关闭其他 DevTools 连接
npx 下载慢网络问题使用代理或预先安装 npm i -g chrome-devtools-mcp
网页操作太快被风控AI 连续点击、输入太快在提示词里明确要求“每步停 2-5 秒,模拟真人操作”

安全注意事项

授权提示

每次 MCP 请求连接时,Chrome 都会弹出授权对话框。只有你点击"允许"后,AI 才能访问浏览器。

调试会话期间,Chrome 顶部会显示"Chrome 正受到自动测试软件的控制"横幅。

  1. 只允许可信的 MCP - 不要随便允许未知来源的连接请求
  2. 调试完成后断开 - 可以关闭 OpenCode 或重启浏览器
  3. 敏感操作需谨慎 - AI 可以访问你已登录的所有网站

本课小结

你学会了:

  1. Chrome DevTools MCP - 让 AI 直接连接浏览器会话
  2. 前置条件 - Chrome 144+ + 启用远程调试
  3. 配置方法 - 先用 --autoConnect,遇到误连 beta 再补 --channel=stable
  4. 排错思路 - 看到 chrome-beta 报错,先检查 channel 和 DevToolsActivePort
  5. 首次连接 - Chrome 会弹出授权对话框
  6. 实战场景 - 调试登录后页面、分析网络请求、检查元素
  7. 可用工具 - 截图、导航、执行脚本、性能分析等

相关资源


下一课预告

下一课我们将学习 IDE 集成,让 OpenCode 与 VS Code、JetBrains 等编辑器无缝协作。


附录:源码参考

点击展开查看源码位置

更新时间:2026-03-15

功能文件路径行号
MCP 连接入口src/mcp/index.ts328-531
Local MCP 启动命令与环境变量src/mcp/index.ts445-487
MCP 状态定义(connected / disabled / failed / needs_auth / needs_client_registration)src/mcp/index.ts66-109
MCP 工具命名规则(服务器名前缀)src/mcp/index.ts603-643
opencode mcp list 命令src/cli/cmd/mcp.ts67-136
opencode mcp add 命令src/cli/cmd/mcp.ts418-579
MCP 配置 Schema(local / remote / oauth / timeout)src/config/config.ts516-576

关键常量

  • DEFAULT_TIMEOUT = 30000:MCP 连接默认超时时间(30秒)

关键函数

  • create():按 local / remote 两种类型创建 MCP 客户端
  • status():汇总当前 MCP 服务器状态
  • tools():把 MCP 工具注册成 服务器名_工具名 的形式