Chrome DevTools MCP 深度实战:让 AI 编程助手真正"看懂"并操控浏览器的技术革命
当你让 AI 助手"帮我调试这个前端 Bug"时,它过去只能凭肉眼看代码猜问题。现在,有了 Chrome DevTools MCP,AI 可以像你一样打开 F12,看 Network 面板、Performance 追踪、Console 报错——本文带你深入这个改变前端调试范式的开源项目。
一、背景介绍:AI 编程助手的"盲点"
1.1 问题的本质
2025-2026 年,AI 编程助手(Claude Code、Cursor、GitHub Copilot、Gemini)已经能写大部分前端代码。但它们有一个致命盲点:无法感知运行时的浏览器状态。
当你对一个 AI 助手说"这个页面加载很慢,帮我看看",它只能:
- 读你的源代码,猜可能的问题
- 让你手动截图 Network 面板,再把截图发给它分析
- 给出泛化的优化建议,无法验证
这不是 AI 不够聪明,而是它没有一个"眼睛"和"手"去实时观察和操作浏览器。
1.2 现有方案的局限
在 Chrome DevTools MCP 出现之前,开发者尝试过几种方案:
| 方案 | 原理 | 局限 |
|---|---|---|
| 手动截图发给 AI | 人工充当"眼睛" | 低效,无法实时交互 |
| Puppeteer/Playwright 脚本 | AI 生成自动化脚本 | 需要写代码,无法即时探索 |
| Browser MCP(通用) | 通过 CDP 基础操作 | 功能浅,无法深度调试 |
| 让 AI 直接访问 URL 抓取 HTML | 无头抓取 | 看不到 JS 执行结果、网络请求 |
核心矛盾:AI 需要的是开发者用 F12 时能拿到的全部信息——Network 请求列表、Console 错误、DOM 结构、Performance 追踪——而不是一个只能打开网页的"无头浏览器"。
1.3 Chrome DevTools MCP 的诞生
2026 年初,随着 Model Context Protocol(MCP)标准的成熟,让 AI 调用外部工具有了统一协议。Chrome DevTools MCP 项目(chrome-devtools-mcp)应运而生——它由开源社区驱动,实现了将 Chrome DevTools 的完整能力通过 MCP 协议暴露给任意 AI 客户端。
核心理念:不让 AI "代替"开发者调试,而是让 AI 获得和开发者完全相同的调试能力,由 AI 自主决定下一步操作。
二、核心概念:MCP 协议与 Chrome DevTools 的桥梁
2.1 Model Context Protocol(MCP)是什么
MCP 是 Anthropic 2024 年提出的开放协议,2025-2026 年已成为 AI 工具调用的事实标准。它的核心设计:
┌─────────────┐ MCP Protocol ┌──────────────────┐
│ AI Client │ ◄──────────────────► │ MCP Server │
│ (Claude/etc)│ JSON-RPC 2.0 │ (Capabilities │
└─────────────┘ stdio/SSE/WS │ as Tools) │
└──────────────────┘
- MCP Client:Claude Code、Cursor、Gemini 等 AI 工具
- MCP Server:对外暴露一组"工具(Tools)",每个工具是一个具体能力
- 协议传输:通过 stdio(本地进程)或 SSE/WebSocket(远程)通信
- 工具发现:Client 通过
tools/list方法自动发现 Server 支持的所有工具
2.2 Chrome DevTools Protocol(CDP)回顾
Chrome DevTools MCP 的底层能力来自 CDP(Chrome DevTools Protocol):
- CDP 是 Chrome/Chromium 暴露的调试协议
- DevTools(F12 面板)本身就是通过 CDP 与浏览器通信的
- 主要 Domain:
Page、Network、Runtime、DOM、Debugger、Profiler、Performance
Chrome DevTools MCP 的本质:把 CDP 的每一个调试能力,封装成 MCP 的一个 Tool。
2.3 架构总览
AI Client (Claude Code / Cursor / Gemini)
│
│ MCP JSON-RPC (stdio)
▼
chrome-devtools-mcp (MCP Server)
│
│ CDP WebSocket
▼
Chrome/Chromium (with --remote-debugging-port)
│
│ DevTools 完整能力
▼
页面运行时(DOM/Network/Console/Performance)
关键设计决策:
- 连接已有 Chrome 实例(而非启动无头浏览器),这样 AI 可以看到你正在看的页面
- 支持两种模式:连接已有标签 vs 启动新的浏览器实例
- 所有 CDP Domain 映射为 MCP Tools,AI 可以调用 30+ 个工具
三、架构分析:chrome-devtools-mcp 的技术实现
3.1 项目结构
chrome-devtools-mcp/
├── src/
│ ├── index.ts # MCP Server 入口,注册所有 Tools
│ ├── chrome.ts # CDP 连接管理(WebSocket 封装)
│ ├── tools/ # 每个 CDP Domain 对应的 Tool 实现
│ │ ├── network.ts # Network 相关工具
│ │ ├── dom.ts # DOM 操作工具
│ │ ├── runtime.ts # JS 执行与 Console 工具
│ │ ├── performance.ts# Performance 追踪工具
│ │ ├── page.ts # 页面导航与截图工具
│ │ └── ...
│ └── types.ts # CDP 类型定义
├── package.json
└── tsconfig.json
3.2 核心:MCP Tool 的定义模式
每个 Tool 遵循 MCP 标准的 Tool 定义:
// src/tools/network.ts 简化示例
import { Tool } from "@modelcontextprotocol/sdk/types.js";
import { CDPClient } from "../chrome.js";
export const listNetworkRequestsTool: Tool = {
name: "list_network_requests",
description: "获取当前页面所有网络请求的详细列表,包括URL、方法、状态码、大小、耗时。用于分析页面加载性能和API调用。",
inputSchema: {
type: "object",
properties: {
filter: {
type: "string",
description: "可选,按URL关键词过滤请求,如 'api' 或 '.js'",
},
},
},
};
export async function handleListNetworkRequests(
cdp: CDPClient,
args: { filter?: string }
) {
// 1. 启用 Network Domain
await cdp.send("Network.enable");
// 2. 获取已记录的请求(通过 CDP event 缓存)
const requests = cdp.getNetworkLog();
// 3. 可选过滤
const filtered = args.filter
? requests.filter(r => r.request.url.includes(args.filter!))
: requests;
// 4. 格式化为 AI 友好的摘要
return filtered.map(r => ({
url: r.request.url,
method: r.request.method,
status: r.response?.status,
size: r.response?.encodedDataLength,
timing: r.timing,
}));
}
3.3 CDP 连接管理
这是整个项目最复杂的部分——稳定地维护与 Chrome 的 WebSocket 连接:
// src/chrome.ts 核心逻辑(简化)
import WebSocket from "ws";
export class CDPClient {
private ws: WebSocket;
private messageId = 1;
private pending = new Map<number, { resolve: Function; reject: Function }>();
private eventListeners = new Map<string, Function[]>();
constructor(private debuggerUrl: string) {}
async connect() {
this.ws = new WebSocket(this.debuggerUrl);
this.ws.on("message", (data) => this.handleMessage(JSON.parse(data.toString())));
await new Promise(resolve => this.ws.once("open", resolve));
// 获取浏览器版本信息(验证连接)
await this.send("Browser.getVersion");
}
send(method: string, params?: any): Promise<any> {
const id = this.messageId++;
return new Promise((resolve, reject) => {
this.pending.set(id, { resolve, reject });
this.ws.send(JSON.stringify({ id, method, params }));
// 超时保护
setTimeout(() => {
if (this.pending.has(id)) {
this.pending.delete(id);
reject(new Error(`CDP command ${method} timeout`));
}
}, 10000);
});
}
on(eventName: string, handler: Function) {
if (!this.eventListeners.has(eventName)) {
this.eventListeners.set(eventName, []);
// 告诉 CDP 我们要监听这个事件
const domain = eventName.split(".")[0];
this.send(`${domain}.enable`).catch(() => {});
}
this.eventListeners.get(eventName)!.push(handler);
}
private handleMessage(msg: any) {
if (msg.id !== undefined) {
// 这是命令响应
const pending = this.pending.get(msg.id);
if (pending) {
this.pending.delete(msg.id);
msg.error ? pending.reject(msg.error) : pending.resolve(msg.result);
}
} else if (msg.method) {
// 这是事件通知(如 Network.requestWillBeSent)
const listeners = this.eventListeners.get(msg.method) || [];
listeners.forEach(fn => fn(msg.params));
}
}
}
3.4 工具完整列表(v0.2+)
以下是 chrome-devtools-mcp 目前暴露的主要工具:
导航与页面操作:
navigate— 导航到指定 URLgo_back/go_forward— 浏览器历史导航reload— 重新加载页面(可选忽略缓存)get_page_title/get_page_url— 获取当前页面信息screenshot— 对整个页面或指定区域截图
DOM 操作:
get_dom_snapshot— 获取完整 DOM 树(结构化)query_selector— 用 CSS 选择器查找元素get_element_info— 获取元素的详细信息(尺寸、属性、文本内容)click_element— 点击指定元素type_into_element— 向输入框输入文字evaluate_js— 在页面上下文中执行任意 JavaScript
Network 分析:
list_network_requests— 列出所有网络请求get_network_request— 获取特定请求的完整信息(headers、body、timing)network_analyze— 自动分析慢请求、失败请求、大体积资源set_network_conditions— 模拟慢速网络(离线、3G、4G)
Console 与 Runtime:
get_console_messages— 获取 Console 日志(log/warn/error)clear_console— 清除 Console 记录evaluate_in_console— 在 Console 上下文中执行表达式
Performance 分析:
start_performance_trace— 开始记录 Performance 追踪stop_performance_trace— 停止并记录,返回性能事件列表get_performance_metrics— 获取关键性能指标(LCP、FCP、TTI 等)
设备仿真:
emulate_device— 模拟指定设备(iPhone、iPad、Pixel 等)set_viewport— 设置视口尺寸emulate_network_conditions— 模拟网络条件emulate_cpu_throttling— 模拟 CPU 降速
四、代码实战:从零搭建 AI 驱动的调试工作流
4.1 环境准备
Step 1:启动带远程调试的 Chrome
# macOS
/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome \
--remote-debugging-port=9222 \
--user-data-dir=/tmp/chrome-debug
# Linux
google-chrome --remote-debugging-port=9222 --user-data-dir=/tmp/chrome-debug
# Windows (PowerShell)
& "C:\Program Files\Google\Chrome\Application\chrome.exe" `
--remote-debugging-port=9222 `
--user-data-dir=C:\temp\chrome-debug
关键参数说明:
--remote-debugging-port=9222:开启 CDP 调试端口--user-data-dir=...:使用独立用户目录,不影响你的日常 Chrome
Step 2:安装 chrome-devtools-mcp
# 从 npm 安装(推荐)
npm install -g @modelcontextprotocol/chrome-devtools
# 或从源码构建
git clone https://github.com/your-repo/chrome-devtools-mcp.git
cd chrome-devtools-mcp
npm install
npm run build
Step 3:配置 AI Client(以 Claude Code 为例)
在 ~/.claude/mcp.json 中添加:
{
"mcpServers": {
"chrome-devtools": {
"command": "npx",
"args": ["@modelcontextprotocol/chrome-devtools"],
"env": {
"CHROME_DEBUGGER_URL": "http://localhost:9222"
}
}
}
}
重启 Claude Code 后,执行 /mcp 可以看到 chrome-devtools 服务器已连接,并列出所有可用工具。
4.2 实战场景一:AI 自动诊断页面加载慢
场景:用户报告"首页加载超过 5 秒",你让 Claude Code 分析。
你的输入:
这个页面 https://example.com 加载很慢,帮我诊断一下性能问题
Claude Code 的自动执行流程(你完全不需要手动操作):
Step 1: [调用 navigate] 导航到 https://example.com
Step 2: [调用 start_performance_trace] 开始性能追踪
Step 3: [调用 reload with ignoreCache=true] 硬刷新
Step 4: [调用 stop_performance_trace] 停止追踪,获取性能数据
Step 5: [调用 list_network_requests] 获取所有网络请求
Step 6: [调用 network_analyze] 自动分析异常请求
Step 7: [调用 get_performance_metrics] 获取 LCP/FCP/TBT 等指标
Step 8: [调用 get_console_messages] 检查是否有 JS 错误
Step 9: 综合所有数据,给出诊断报告
Claude Code 输出示例:
## 性能诊断报告
### 关键指标
- LCP: 4.8s ❌(目标 <2.5s)
- FCP: 2.1s ⚠️(目标 <1.8s)
- TBT: 1.2s ❌(目标 <200ms)
- 总请求数: 147 个
- 总传输大小: 8.7 MB
### 主要问题
1. **未优化的 Hero 图片**(影响 LCP)
- 请求: https://example.com/hero.jpg
- 大小: 2.4 MB,尺寸 4000x3000,实际显示 1200x900
- 建议: 转换为 WebP,尺寸调整为 1200x900,添加 <link rel="preload">
2. **同步加载的第三方脚本阻塞渲染**(影响 FCP/TBT)
- 请求: https://analytics.example.com/tracker.js
- 加载方式: 同步 <script> 在 <head> 中
- 建议: 改为 async 或移动到 </body> 前
3. **未开启 Gzip 的 API 响应**(影响传输时间)
- 请求: https://api.example.com/products
- 大小: 1.1 MB,Content-Encoding: identity
- 建议: 开启 Gzip,预期减少 70% 体积
### 优化后的预期效果
- LCP: 4.8s → ~1.8s
- 总大小: 8.7 MB → ~3.2 MB
4.3 实战场景二:AI 辅助修复 Console 错误
场景:页面上有 JS 报错,但错误信息不够清晰。
你的输入:
我的页面控制台有错误,帮我定位并修复
Claude Code 执行流程:
// Step 1: 获取 Console 错误
const consoleMessages = await cdp.send("Runtime.getExceptionDetails");
// 或更高层的 MCP 工具调用
const errors = await handleGetConsoleMessages(cdp, { level: "error" });
// Step 2: 分析错误堆栈
// 假设错误是: "TypeError: Cannot read property 'map' of undefined at app.js:42"
// Claude 会读取相关源代码文件
// Step 3: 在浏览器上下文中验证修复方案
await cdp.send("Runtime.evaluate", {
expression: `
// 建议的修复代码
const data = window.__initialData || [];
const result = Array.isArray(data) ? data.map(...) : [];
result;
`
});
// Step 4: 如果验证通过,修改本地源文件
4.4 实战场景三:用 AI 自动抓取动态页面数据
场景:需要从一个 SPA(单页应用)中提取数据,传统爬虫无法处理 JS 渲染。
传统方案(无 MCP):
# 用 Playwright 写脚本
from playwright.sync_api import sync_playwright
def scrape_spa():
with sync_playwright() as p:
browser = p.chromium.launch()
page = browser.new_page()
page.goto("https://spa-example.com/products")
page.wait_for_selector(".product-card") # 需要手动等
# ... 更多手动操作
data = page.query_selector_all(".product-card")
# ... 解析
使用 Chrome DevTools MCP + AI 的方案:
你对 Claude Code 说:
帮我从 https://spa-example.com/products 提取所有产品名称、价格和评分,
结果保存为 JSON
Claude Code 会自动:
navigate到目标 URLevaluate_js检查页面是否已渲染完成(document.querySelectorAll('.product-card').length > 0)- 如果没有,用
evaluate_js设置IntersectionObserver或滚动页面触发懒加载 query_selector_all(通过evaluate_js)获取所有产品元素evaluate_js在每个元素上提取innerText或属性- 将结果格式化为 JSON,并写入本地文件
整个过程无需你写一行脚本。
4.5 实战场景四:AI 驱动的端到端测试
结合 chrome-devtools-mcp,可以让 AI 自动编写和执行 E2E 测试:
// AI 生成的 E2E 测试(通过 MCP 工具调用)
// 这是 Claude Code 在你要求"帮我写登录功能的 E2E 测试"时自动生成并验证的
async function testLoginFlow(cdp: CDPClient) {
// 1. 导航到登录页
await navigate(cdp, { url: "https://example.com/login" });
// 2. 检查页面加载正确
const title = await getPageTitle(cdp);
assert(title === "登录 - Example");
// 3. 填入表单
await typeIntoElement(cdp, { selector: "#username", text: "testuser" });
await typeIntoElement(cdp, { selector: "#password", text: "secret123" });
// 4. 点击登录按钮,并等待导航
await Promise.all([
waitForNavigation(cdp),
clickElement(cdp, { selector: "button[type=submit]" }),
]);
// 5. 验证登录成功
const url = await getPageUrl(cdp);
assert(url === "https://example.com/dashboard");
const consoleErrors = await getConsoleMessages(cdp, { level: "error" });
assert(consoleErrors.length === 0, "登录后有 Console 错误");
console.log("✅ 登录 E2E 测试通过");
}
AI 的价值:当测试失败时,AI 可以自动分析失败原因(通过 get_console_messages 和 screenshot),并建议修复方案。
五、性能优化:让 AI 调试更快更准
5.1 AI 调用 CDP 工具的延迟优化
AI 每调用一个 MCP 工具,都有以下开销:
- AI 生成工具调用参数(~500-2000ms,取决于模型)
- MCP 协议序列化/反序列化(~10ms)
- CDP WebSocket 往返(~50-200ms)
- 页面执行操作(可变)
优化策略一:批量工具调用
// ❌ 低效:多次往返
await listNetworkRequests(cdp);
await getConsoleMessages(cdp);
await getPerformanceMetrics(cdp);
// ✅ 高效:自定义批量工具
// 在 MCP Server 中新增一个 tool:
{
name: "collect_diagnostics",
description: "一次性收集 Network、Console、Performance 数据",
handler: async (cdp) => {
const [network, console, metrics] = await Promise.all([
getNetworkRequests(cdp),
getConsoleMessages(cdp),
getPerformanceMetrics(cdp),
]);
return { network, console, metrics };
}
}
优化策略二:CDP 连接池
如果需要同时调试多个标签页:
// 维护一个 CDP 连接池
class CDPConnectionPool {
private connections = new Map<number, CDPClient>(); // tabId -> client
async getConnectionForTab(tabId: number): Promise<CDPClient> {
if (this.connections.has(tabId)) {
return this.connections.get(tabId)!;
}
// 新连接
const tab = await this.getTabInfo(tabId);
const client = new CDPClient(tab.webSocketDebuggerUrl);
await client.connect();
this.connections.set(tabId, client);
return client;
}
}
5.2 让 AI 更智能地调试:RAG + 历史诊断记录
单纯的工具调用还不够,可以让 AI 积累调试经验:
// 将历史诊断记录存入向量数据库
interface DiagnosticRecord {
symptoms: string; // "页面加载慢,LCP 4.8s"
rootCause: string; // "未优化的 Hero 图片"
solution: string; // "转换为 WebP + preload"
codeChange: string; // 具体的代码改动
}
// AI 在调试前先检索相似历史问题
async function retrieveSimilarCases(currentSymptoms: string): Promise<DiagnosticRecord[]> {
const embedding = await getEmbedding(currentSymptoms);
const results = await vectorDB.similaritySearch(embedding, { topK: 3 });
return results;
}
5.3 与 CI/CD 集成:预防而非只修复
在 CI 流水线中集成 chrome-devtools-mcp:
# .github/workflows/perf-check.yml
name: Performance Regression Check
on: [pull_request]
jobs:
perf-check:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
- name: Start Chrome with debugging
run: |
google-chrome --remote-debugging-port=9222 --headless &
- name: Run AI Performance Audit
env:
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
run: |
# 让 Claude Code(通过 MCP)自动审计 PR 中的页面
claude-code "分析 PR 中变更的页面,检查性能回归,
重点关注 LCP、未压缩的资源、阻塞渲染的脚本"
- name: Comment PR with results
uses: actions/github-script@v6
with:
script: |
// 将 AI 的诊断报告评论到 PR
const report = require('./perf-report.json');
github.rest.issues.createComment({
issue_number: context.issue.number,
body: report.markdown
});
六、进阶:chrome-devtools-mcp 的扩展开发
6.1 自定义 Tool 开发指南
如果现有的 30+ 个工具还不能满足需求,可以自行扩展:
// src/tools/custom.ts
import { Tool } from "@modelcontextprotocol/sdk/types.js";
// 1. 定义 Tool 元数据
export const myCustomTool: Tool = {
name: "check_accessibility",
description: "运行无障碍性检查(AXE Core),返回页面上的 a11y 问题列表。每个问题包含选择器、问题描述和修复建议。",
inputSchema: {
type: "object",
properties: {
includeNotices: {
type: "boolean",
description: "是否包含轻微提示(默认 false)",
},
},
},
};
// 2. 实现 Tool 逻辑
export async function handleCheckAccessibility(
cdp: CDPClient,
args: { includeNotices?: boolean }
) {
// 在页面中注入并运行 AXE Core
const result = await cdp.send("Runtime.evaluate", {
expression: `
// 动态加载 axe-core
if (!window.axe) {
var s = document.createElement('script');
s.src = 'https://cdn.jsdelivr.net/npm/axe-core@4/dist/axe.min.js';
document.head.appendChild(s);
}
// 等待加载完成后运行
new Promise((resolve) => {
const checkReady = setInterval(() => {
if (window.axe) {
clearInterval(checkReady);
window.axe.run().then(resolve);
}
}, 100);
})
`,
awaitPromise: true,
returnByValue: true,
});
const violations = result.result.value.violations;
return violations.map((v: any) => ({
impact: v.impact, // critical / serious / moderate / minor
description: v.help,
helpUrl: v.helpUrl,
elements: v.nodes.map((n: any) => n.target[0]), // CSS 选择器
fix: v.help, // 简述修复方法
}));
}
6.2 与 Puppeteer 的协同
chrome-devtools-mcp 内部其实复用了 Puppeteer 的 CDP 封装,你也可以直接使用 Puppeteer:
import puppeteer from "puppeteer";
import { startMCPProxy } from "chrome-devtools-mcp/puppeteer-integration";
const browser = await puppeteer.launch({
args: ["--remote-debugging-port=9222"],
});
// 将 Puppeteer 的 page 暴露为 MCP 工具
const mcpServer = await startMCPProxy({
page: browser.pages()[0],
tools: ["screenshot", "click", "type"], // 只暴露部分工具
});
// 现在 AI 可以通过 MCP 控制这个 Puppeteer 页面
七、安全与最佳实践
7.1 安全风险
Chrome 远程调试端口暴露的风险:
- 任何能访问
localhost:9222的进程都可以控制你的浏览器 - 在共享机器上,必须设置
--remote-debugging-address=127.0.0.1(只允许本机) - 不要将调试端口暴露到公网
MCP Server 的权限边界:
- chrome-devtools-mcp 可以执行任意 JavaScript(通过
evaluate_js) - 在授予 AI 访问权限前,确认你信任该 AI Client
- 建议初次使用时,用一个独立的 Chrome 用户目录(不影响主浏览器)
7.2 最佳实践清单
✅ 用独立 Chrome 用户目录(--user-data-dir)
✅ 只在开发环境启用远程调试
✅ 让 AI 先"读取"再"修改",避免破坏性操作
✅ 对 AI 生成的修复代码做 Code Review
✅ 将 AI 调试会话记录到日志,便于审计
✅ 限制 MCP 工具范围(不需要的工具不暴露)
八、总结与展望
8.1 本文回顾
Chrome DevTools MCP 的本质,是将浏览器调试能力标准化地开放给 AI:
- 背景:AI 编程助手缺乏运行时感知能力,只能"盲猜"Bug
- 核心:通过 MCP 协议,将 CDP 的 30+ 个调试能力映射为 AI 可调用的 Tool
- 实战:从性能诊断、错误修复、数据抓取到 E2E 测试,AI 现在可以像人一样调试
- 优化:批量调用、连接池、历史经验检索,让 AI 调试更快更准
- 扩展:自定义 Tool 和与 Puppeteer 协同,满足特定场景需求
8.2 与类似项目的对比
| 项目 | 底层 | AI 集成方式 | 适用场景 |
|---|---|---|---|
| chrome-devtools-mcp | CDP | MCP 标准协议 | 深度调试、性能分析 |
| playwright-mcp | Playwright | MCP | E2E 测试自动化 |
| browser-use | 自研浏览器控制 | Agent 框架内置 | 通用网页自动化 |
| Agent-Computer-Interface | 截图+OCR | 多模态 LLM | 通用 UI 自动化 |
chrome-devtools-mcp 的独特价值:它是唯一能让 AI 获得"开发者级"调试能力的工具——不只是"能点击页面",而是能看 Network 瀑布图、能分析 Performance 追踪、能读 Console 错误。
8.3 未来展望
- 更深度的性能分析:集成 Lighthouse 作为 MCP Tool,一键生成完整的 PWA 审计报告
- 多浏览器支持:目前主要支持 Chrome/Chromium,未来可扩展到 Firefox(通过 WebDriver BiDi 协议)
- AI 之间的协作调试:一个 AI 负责前端(chrome-devtools-mcp),另一个负责后端(通过数据库 MCP),协同排查全栈问题
- 调试知识图谱:将每次 AI 调试的过程和结果结构化存储,形成可查询的"调试知识库"
附录:快速上手检查清单
# 1. 启动 Chrome(新终端)
/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome \
--remote-debugging-port=9222 \
--user-data-dir=/tmp/chrome-mcp &
# 2. 安装 MCP Server
npm install -g @modelcontextprotocol/chrome-devtools
# 3. 配置 Claude Code(~/.claude/mcp.json)
{
"mcpServers": {
"chrome-devtools": {
"command": "npx",
"args": ["@modelcontextprotocol/chrome-devtools"]
}
}
}
# 4. 重启 Claude Code,验证连接
/mcp
# 5. 开始使用!
# 在 Claude Code 中直接说:
# "打开 https://example.com,分析为什么加载慢"
本文基于 chrome-devtools-mcp 开源项目的公开文档和实际使用经验撰写。项目持续迭代中,具体 Tool 名称以最新版本为准。
如果你觉得这篇文章对你有帮助,欢迎在 GitHub 上给 chrome-devtools-mcp 项目点一个 ⭐。