一个通过MCP提供Chrome DevTools Protocol集成的Model Context Protocol (MCP)服务器。这允许您通过连接到Chrome的开发者工具来调试Web应用程序。
作为Claude Desktop扩展(.dxt)提供,实现一键轻松安装!
此MCP服务器充当Claude与Chrome调试能力之间的桥梁。在Claude Desktop中安装后,您可以:
注意:这是一个在Claude Desktop内部运行的MCP服务器——您不需要运行任何单独的服务器或进程。
下载预构建的扩展:
.dxt文件.dxt文件该扩展包含了所有依赖项,并且可以立即使用!
快速安装(最常见):
git clone https://github.com/benjaminr/chrome-devtools-mcp.git
cd chrome-devtools-mcp
mcp install server.py -n "Chrome DevTools MCP" --with-editable .
注意:
mcp命令是Python MCP SDK的一部分。如果尚未安装,请使用pip install mcp进行安装。
所有安装选项:
# 克隆仓库
git clone https://github.com/benjaminr/chrome-devtools-mcp.git
cd chrome-devtools-mcp
# 使用`--with-editable`标志使用pyproject.toml安装依赖项
# 基本安装,本地依赖项
mcp install server.py --with-editable .
# 使用自定义名称安装
mcp install server.py -n "Chrome DevTools MCP" --with-editable .
# 使用环境变量安装
mcp install server.py -n "Chrome DevTools MCP" --with-editable . -v CHROME_DEBUG_PORT=9222
# 如果需要,安装额外的包
mcp install server.py -n "Chrome DevTools MCP" --with-editable . --with websockets --with aiohttp
# 使用环境文件安装(先复制.env.example到.env)
cp .env.example .env
# 编辑.env以包含您的设置
mcp install server.py -n "Chrome DevTools MCP" --with-editable . -f .env
对于Claude Code CLI用户:
git clone https://github.com/benjaminr/chrome-devtools-mcp.git
cd chrome-devtools-mcp
uv sync # 创建.venv并安装依赖项
重要提示:Claude Code需要绝对路径来正确工作,包括Python解释器和服务器脚本。
推荐使用绝对路径的设置:
# 获取绝对路径
SERVER_PATH="$(pwd)/server.py"
PYTHON_PATH="$(pwd)/.venv/bin/python"
# 使用绝对路径添加服务器
claude mcp add chrome-devtools "$PYTHON_PATH" "$SERVER_PATH" -e CHROME_DEBUG_PORT=9222
替代方案:使用系统Python(如果全局安装了依赖项):
# 只有在全局安装了依赖项的情况下
claude mcp add chrome-devtools python "$(pwd)/server.py" -e CHROME_DEBUG_PORT=
使用自定义作用域:
# 添加到用户作用域(跨所有项目可用)
claude mcp add chrome-devtools "$(pwd)/.venv/bin/python" "$(pwd)/server.py" -s user -e CHROME_DEBUG_PORT=9222
# 添加到项目作用域(仅限于该项目)
claude mcp add chrome-devtools "$(pwd)/.venv/bin/python" "$(pwd)/server.py" -s project -e CHROME_DEBUG_PORT=9222
# 列出已配置的MCP服务器
claude mcp list
# 获取有关服务器的详细信息(检查路径是否为绝对路径)
claude mcp get chrome-devtools
# 输出应显示绝对路径,例如:
# Command: /Users/you/chrome-devtools-mcp/.venv/bin/python
# Args: ["/Users/you/chrome-devtools-mcp/server.py"]
常见路径问题及解决方案:
/path/to/.venv/bin/python /path/to/server.pygit clone https://github.com/benjaminr/chrome-devtools-mcp.git
cd chrome-devtools-mcp
使用uv(推荐):
uv sync
使用pip:
pip install -r requirements.txt
编辑您的Claude Desktop配置文件:
~/Library/Application Support/Claude/claude_desktop_config.json%APPDATA%/Claude/claude_desktop_config.json{
"mcpServers": {
"chrome-devtools": {
"command": "python",
"args": ["/absolute/path/to/chrome-devtools-mcp/server.py"],
"env": {
"CHROME_DEBUG_PORT": "9222"
}
}
}
}
安装完成后(无论哪种方法),验证服务器是否可用:
get_connection_status()对于其他MCP客户端,直接运行服务器:
python server.py
安装到Claude Desktop后,您可以开始调试任何Web应用程序:
一步设置(推荐):
start_chrome_and_connect("localhost:3000")
替换localhost:3000为您应用的URL
如果Chrome未自动找到:
start_chrome_and_connect("localhost:3000", chrome_path="/path/to/chrome")
使用chrome_path参数指定自定义Chrome位置
此命令将:
手动设置(如果您更喜欢逐步操作):
start_chrome()
navigate_to_url("localhost:3000")
connect_to_browser()
一旦连接,使用以下命令:
get_network_requests() - 查看HTTP流量get_console_error_summary() - 分析JavaScript错误inspect_console_object("window") - 深入检查任何JavaScript对象start_chrome(port?, url?, headless?, chrome_path?, auto_connect?) - 启动Chrome,启用远程调试,可选自动连接start_chrome_and_connect(url, port?, headless?, chrome_path?) - 一步启动Chrome,连接并导航connect_to_browser(port?) - 连接到现有的Chrome实例navigate_to_url(url) - 导航到特定URLdisconnect_from_browser() - 断开与浏览器的连接get_connection_status() - 检查连接状态get_network_requests(filter_domain?, filter_status?, limit?) - 获取网络请求,带过滤选项get_network_response(request_id) - 获取详细的响应数据,包括正文get_console_logs(level?, limit?) - 获取浏览器控制台日志get_console_error_summary() - 获取组织好的错误和警告摘要execute_javascript(code) - 在浏览器上下文中执行JavaScriptclear_console() - 清除浏览器控制台inspect_console_object(expression) - 深入检查任何JavaScript对象monitor_console_live(duration_seconds) - 实时监控控制台输出get_page_info() - 获取全面的页面指标和性能数据evaluate_in_all_frames(code) - 在所有框架/iframe中执行JavaScriptget_performance_metrics() - 获取详细的性能指标和资源计时get_storage_usage_and_quota(origin) - 获取存储使用量和配额信息clear_storage_for_origin(origin, storage_types?) - 根据类型和源清除存储get_all_cookies() - 获取所有浏览器cookiesclear_all_cookies() - 清除所有浏览器cookiesset_cookie(name, value, domain, path?, expires?, http_only?, secure?, same_site?) - 设置cookieget_cookies(domain?) - 获取浏览器cookies,可选域名过滤get_storage_key_for_frame(frame_id) - 获取特定frame的存储键track_cache_storage(origin, enable?) - 启用/禁用缓存存储跟踪track_indexeddb(origin, enable?) - 启用/禁用IndexedDB跟踪override_storage_quota(origin, quota_size_mb?) - 覆盖存储配额当您的Web应用程序发出失败或返回意外数据的API调用时:
简易设置:使用一步命令启动Chrome并导航到您的应用:
示例流程:
您: "我需要调试位于localhost:3000的React应用"
Claude: 我将启用调试并导航到您的应用。
start_chrome_and_connect("localhost:3000")
完美!Chrome现在正在运行并连接到您的应用。让我检查是否有任何失败的网络请求:
get_network_requests(filter_status=500)
我发现有3个失败的请求到您的API。让我获取第一个请求的详细信息:
get_network_response("request-123")
手动设置(如果您更喜欢):
start_chrome()navigate_to_url("localhost:3000")connect_to_browser()get_network_requests()查看所有API调用当您的Web应用程序有JavaScript错误或意外行为时:
get_console_error_summary()查看所有错误monitor_console_live(10)在交互时监视新错误inspect_console_object("myVariable")检查应用状态示例流程:
您: "我的React组件没有正确更新"
Claude: 让我检查JavaScript控制台中的任何错误。
get_console_error_summary()
我发现有两个JavaScript错误。让我在您与组件交互时也监视控制台:
monitor_console_live(15)
现在尝试点击不工作的组件。我会观察任何新的错误或警告。
当您的Web应用程序加载缓慢或占用过多内存时:
get_page_info()查看加载时间和资源数量get_performance_metrics()查看详细的计时数据示例流程:
您: "我的应用加载时间太长"
Claude: 让我分析您的应用性能。
get_page_info()
我发现您的页面有47个脚本,加载时间为3.2秒。让我获取更多详细的性能数据:
get_performance_metrics()
主要瓶颈是初始JavaScript捆绑包,大小为2.1MB。DOM处理也需要800毫秒。
当登录或会话管理不起作用时:
get_cookies()查看身份验证cookiesmonitor_console_live()和get_network_requests()在登录过程中监控示例流程:
您: "用户无法保持登录状态"
Claude: 让我检查身份验证设置。
get_cookies()
我发现auth cookie存在。让我检查登录期间发生了什么,通过监控网络:
get_network_requests(filter_domain="your-api.com")
我发现登录请求返回200但没有Set-Cookie头。让我也检查localStorage:
execute_javascript("Object.keys(localStorage)")
get_document(depth?, pierce?) - 获取DOM文档结构query_selector(node_id, selector) - 通过CSS选择器查找单个元素query_selector_all(node_id, selector) - 通过CSS选择器查找多个元素get_element_attributes(node_id) - 获取元素的所有属性get_element_outer_html(node_id) - 获取元素的外部HTMLget_element_box_model(node_id) - 获取布局信息describe_element(node_id, depth?) - 获取详细的元素描述get_element_at_position(x, y) - 获取屏幕位置的元素search_elements(query) - 按文本/属性搜索DOM元素focus_element(node_id) - 聚焦DOM元素get_computed_styles(node_id) - 获取计算的CSS样式get_inline_styles(node_id) - 获取内联样式get_matched_styles(node_id) - 获取匹配元素的所有CSS规则get_stylesheet_text(stylesheet_id) - 获取样式表内容get_background_colors(node_id) - 获取背景颜色和字体get_platform_fonts(node_id) - 获取平台字体信息get_media_queries() - 获取所有媒体查询collect_css_class_names(stylesheet_id) - 收集CSS类名start_css_coverage_tracking() - 开始CSS覆盖率跟踪stop_css_coverage_tracking() - 停止并获取CSS覆盖率结果| 任务 | 命令 |
|---|---|
| 启动Chrome并连接到应用 | start_chrome_and_connect("localhost:3000") |
| 启动Chrome(手动设置) | start_chrome() |
| 导航到页面 | navigate_to_url("localhost:3000") |
| 连接到浏览器 | connect_to_browser() |
| 查看所有网络请求 | get_network_requests() |
| 查找失败的API调用 | get_network_requests(filter_status=404) |
| 检查JavaScript错误 | get_console_error_summary() |
| 实时监控控制台 | monitor_console_live(10) |
| 检查页面加载性能 | get_page_info() |
| 检查变量 | inspect_console_object("window.myApp") |
| 查看cookies | get_cookies() |
| 运行JavaScript | execute_javascript("document.title") |
CHROME_DEBUG_PORT - Chrome远程调试端口(默认:9222)npm run dev,python -m http.server等)通过Claude Desktop连接到您的应用:
start_chrome_and_connect("localhost:3000")
替换为您的应用URL
使用MCP工具调试您的应用:
在编辑器中更改代码
刷新或与您的应用互动
继续使用实时数据进行调试
如果您更喜欢逐步控制:
start_chrome() - 启动Chrome并启用调试navigate_to_url("your-app-url") - 导航到您的应用connect_to_browser() - 连接MCP服务器