使用说明
Chrome开发工具MCP
一个模型上下文协议(MCP)服务器,通过MCP提供Chrome DevTools协议集成。这允许您通过连接到Chrome的开发工具来调试web应用程序。
可作为Claude桌面扩展(.dxt)使用 易于一键安装!
这有什么作用
此MCP服务器充当Claude和Chrome调试功能之间的桥梁。在Claude Desktop中安装后,您可以:
- 将Claude连接到在Chrome中运行的任何web应用程序
- 调试网络请求、控制台错误和性能问题
- 检查JavaScript对象并在浏览器上下文中执行代码
- 通过与Claude的自然对话实时监控您的应用程序
备注:这是一个在Claude Desktop中运行的MCP服务器,您不需要运行任何单独的服务器或进程。
特性
- 网络监控:使用过滤选项捕获和分析HTTP请求/响应
- 控制台集成:读取浏览器控制台日志、分析错误并执行JavaScript
- 性能指标:定时数据、资源加载和内存利用率
- 页面检查:DOM信息、页面度量和多帧支持
- 存储访问:读取Cookie、本地存储和会话存储
- 实时监控:实时控制台输出跟踪
- 物体检查:检查JavaScript对象和变量
安装
选项1:克劳德桌面扩展(最简单)
下载预构建的扩展:
- 下载最新
.dxt文件来自 发布 - 打开克劳德桌面
- 转到扩展并安装下载的
.dxt文件 - 如果需要,在扩展程序设置中配置Chrome路径
该扩展包含所有依赖项,可以立即使用!
选项2:MCP CLI(高级)
快速安装(最常见):
git clone https://github.com/benjaminr/chrome-devtools-mcp.git
cd chrome-devtools-mcp
mcp install server.py -n "Chrome DevTools MCP" --with-editable .
备注:The
mcp命令是 Python MCP SDK.安装pip install mcp如果尚未可用。
所有安装选项:
# Clone the repository
git clone https://github.com/benjaminr/chrome-devtools-mcp.git
cd chrome-devtools-mcp
# The --with-editable flag uses pyproject.toml to install dependencies
# Basic installation with local dependencies
mcp install server.py --with-editable .
# Install with custom name
mcp install server.py -n "Chrome DevTools MCP" --with-editable .
# Install with environment variables
mcp install server.py -n "Chrome DevTools MCP" --with-editable . -v CHROME_DEBUG_PORT=9222
# Install with additional packages if needed
mcp install server.py -n "Chrome DevTools MCP" --with-editable . --with websockets --with aiohttp
# Install with environment file (copy .env.example to .env first)
cp .env.example .env
# Edit .env with your settings
mcp install server.py -n "Chrome DevTools MCP" --with-editable . -f .env
选项3:Claude代码集成
对于Claude Code CLI用户:
- 克隆此存储库
git clone https://github.com/benjaminr/chrome-devtools-mcp.git
cd chrome-devtools-mcp
- 使用UV安装依赖项(创建venv)
uv sync # Creates .venv and installs dependencies
- 使用带有绝对路径的Claude CLI添加MCP服务器
重要:Claude Code需要Python解释器和服务器脚本的绝对路径才能正常工作。
建议使用绝对路径进行设置:
# Get the absolute paths
SERVER_PATH="$(pwd)/server.py"
PYTHON_PATH="$(pwd)/.venv/bin/python"
# Add the server with absolute paths
claude mcp add chrome-devtools "$PYTHON_PATH" "$SERVER_PATH" -e CHROME_DEBUG_PORT=9222
替代方案:使用系统Python(如果依赖项是全局安装的):
# Only if you've installed dependencies globally
claude mcp add chrome-devtools python "$(pwd)/server.py" -e CHROME_DEBUG_PORT=9222
使用自定义范围:
# Add to user scope (available across all projects)
claude mcp add chrome-devtools "$(pwd)/.venv/bin/python" "$(pwd)/server.py" -s user -e CHROME_DEBUG_PORT=9222
# Add to project scope (only for this project)
claude mcp add chrome-devtools "$(pwd)/.venv/bin/python" "$(pwd)/server.py" -s project -e CHROME_DEBUG_PORT=9222
- 验证安装
# List configured MCP servers
claude mcp list
# Get details about the server (check that paths are absolute)
claude mcp get chrome-devtools
# The output should show absolute paths like:
# Command: /Users/you/chrome-devtools-mcp/.venv/bin/python
# Args: ["/Users/you/chrome-devtools-mcp/server.py"]
常见路径问题和解决方案:
- 问题:“python:找不到命令”或“找不到server.py”
- 解决方案:使用如上所示的绝对路径
- 问题:服务器启动时出现“ModuleNotFoundError”
- 解决方案:使用安装了依赖项的venv Python解释器
- 问题:服务器未启动或显示为已断开连接
- 解决方案:手动测试命令:
/path/to/.venv/bin/python /path/to/server.py
- 解决方案:手动测试命令:
选项4:手动克劳德桌面设置
- 克隆此存储库
git clone https://github.com/benjaminr/chrome-devtools-mcp.git
cd chrome-devtools-mcp
- 安装依赖项
紫外线(推荐):
uv sync
使用pip:
pip install -r requirements.txt
- 添加到Claude桌面配置
编辑您的Claude Desktop配置文件:
- macOS:
~/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"
}
}
}
}
- 重新启动克劳德桌面
验证安装
安装后(任一方法),验证服务器是否可用:
- 打开克劳德桌面
- 在对话中寻找MCP工具
- 尝试一个简单的命令:
get_connection_status()
替代MCP客户端
对于其他MCP客户端,直接运行服务器:
python server.py
快速开始
一旦安装在Claude Desktop中,您就可以开始调试任何web应用程序:
调试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位置的参数
此命令将:
- 启用调试启动Chrome
- 导航到您的应用程序
- 将MCP服务器连接到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对象
可用的MCP工具
Chrome管理
start_chrome(port?, url?, headless?, chrome_path?, auto_connect?)-通过远程调试和可选的自动连接启动Chromestart_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)-在所有框架/iframes中执行JavaScriptget_performance_metrics()-获取详细的性能指标和资源时间安排
存储和数据
get_storage_usage_and_quota(origin)-获取存储使用情况和配额信息clear_storage_for_origin(origin, storage_types?)-按类型和来源清除存储get_all_cookies()-获取所有浏览器Cookieclear_all_cookies()-清除所有浏览器Cookieset_cookie(name, value, domain, path?, expires?, http_only?, secure?, same_site?)-设置cookieget_cookies(domain?)-通过可选域过滤获取浏览器Cookieget_storage_key_for_frame(frame_id)-获取特定帧的存储密钥track_cache_storage(origin, enable?)-启用/禁用缓存存储跟踪track_indexeddb(origin, enable?)-启用/禁用IndexedDB跟踪override_storage_quota(origin, quota_size_mb?)-覆盖存储配额
用例
调试Web应用程序中的API调用
当您的web应用程序进行API调用失败或返回意外数据时:
易于设置: 使用一步式命令启动Chrome并导航到您的应用程序:
工作流程示例:
You: "I need to debug my React app at localhost:3000"
Claude: I'll start Chrome with debugging enabled and navigate to your app.
start_chrome_and_connect("localhost:3000")
Perfect! Chrome is now running with debugging enabled and connected to your app. Let me check for any failed network requests:
get_network_requests(filter_status=500)
I can see there are 3 failed requests to your API. Let me get the details of the first one:
get_network_response("request-123")
手动设置(如果您愿意):
- 启动Chrome:使用
start_chrome() - 导航到您的应用程序:使用
navigate_to_url("localhost:3000") - 连接:使用
connect_to_browser() - 监控网络流量:使用
get_network_requests()查看所有API调用
检查JavaScript控制台错误
当您的web应用程序出现JavaScript错误或意外行为时:
- 导航到您的应用程序 在已连接的Chrome实例中
- 检查控制台错误:使用
get_console_error_summary()查看所有错误 - 监控实时错误:使用
monitor_console_live(10)在交互过程中观察新错误 - 检查变量:使用
inspect_console_object("myVariable")检查应用程序状态
工作流程示例:
You: "My React component isn't updating properly"
Claude: Let me check the JavaScript console for any errors.
get_console_error_summary()
I can see there are 2 JavaScript errors. Let me also monitor the console while you interact with the component:
monitor_console_live(15)
Now try clicking the component that isn't working. I'll watch for any new errors or warnings.
性能调试
当您的web应用程序加载缓慢或使用太多内存时:
- 加载您的应用程序 在已连接的浏览器中
- 检查页面指标:使用
get_page_info()查看加载时间和资源计数 - 分析性能:使用
get_performance_metrics()查看详细的计时数据 - 监控内存使用情况:检查性能指标中的内存信息
工作流程示例:
You: "My application takes too long to load"
Claude: Let me analyse the performance of your application.
get_page_info()
I can see your page has 47 scripts and took 3.2 seconds to load. Let me get more detailed performance data:
get_performance_metrics()
The main bottleneck is the initial JavaScript bundle which is 2.1MB. The DOM processing also takes 800ms.
调试身份验证问题
当登录或会话管理不起作用时:
- 导航到您的登录页面
- 检查Cookie:使用
get_cookies()查看身份验证Cookie - 登录时监控网络:使用
monitor_console_live()和get_network_requests()在登录过程中 - 检查存储的数据:使用JavaScript执行检查localStorage/sessionStorage
工作流程示例:
You: "Users can't stay logged in"
Claude: Let me check the authentication setup.
get_cookies()
I can see the auth cookie is present. Let me check what happens during login by monitoring the network:
get_network_requests(filter_domain="your-api.com")
I notice the login request returns a 200 but no Set-Cookie header. Let me also check localStorage:
execute_javascript("Object.keys(localStorage)")
DOM元素检查
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元素
CSS样式分析
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") |
| 查看Cookie | get_cookies() |
| 运行JavaScript | execute_javascript("document.title") |
配置
环境变量
CHROME_DEBUG_PORT-Chrome远程调试端口(默认:9222)
MCP兼容性
- MCP协议版本: 2024-11-05
- 最低Python版本: 3.10+
- 支持的MCP客户端:Claude Desktop,任何兼容MCP的客户端
- 程序包管理器:uv(推荐)或pip
使用工作流程
先决条件(您的开发环境)
- 让您的web应用程序运行(例如。,
npm run dev,python -m http.server等等) - 注意您的应用程序可访问的URL
调试会话
-
连接到您的应用程序 通过克劳德桌面:
start_chrome_and_connect("localhost:3000")替换为应用程序的URL
-
调试您的应用程序 使用MCP工具:
- 监控网络请求
- 检查控制台错误
- 检查JavaScript对象
- 分析性能
-
对代码进行更改 在你的编辑器中
-
刷新或交互 与您的应用程序
-
继续调试 实时数据
手动连接(替代)
如果您更喜欢分步控制:
start_chrome()-启动Chrome并进行调试navigate_to_url("your-app-url")-导航到您的应用程序connect_to_browser()-连接MCP服务器- 根据需要使用调试工具
安全说明
- 仅在开发环境中使用
- 从不连接到生产Chrome实例
- 服务器仅设计用于本地主机调试
- 没有数据是永久存储的,所有数据都是基于会话的
故障排除
服务器在Claude Desktop中显示为“已禁用”
如果服务器出现在Claude中,但显示为“禁用”,请尝试以下步骤:
-
检查克劳德桌面日志:
- macOS:
~/Library/Logs/Claude/mcp*.log - 视窗:
%APPDATA%/Claude/logs/mcp*.log
- macOS:
-
常见修复:
# Reinstall with verbose output mcp remove "Chrome DevTools MCP" mcp install server.py -n "Chrome DevTools MCP" --with-editable . -v CHROME_DEBUG_PORT=9222 # Check installation status mcp list # Test the server manually python3 server.py -
检查相关性:
# Ensure all dependencies are available pip install mcp websockets aiohttp # Test imports python3 -c "from server import mcp; print('OK')" -
重新启动克劳德桌面 完全(退出并重新打开)
安装问题
- 未找到MCP CLI:从安装MCP CLI Python MCP SDK 随着
pip install mcp - 服务器未出现在Claude中:
- 对于MCP CLI:运行
mcp list验证服务器是否已安装 - 手动设置:检查Claude Desktop配置文件路径和JSON语法
- 对于MCP CLI:运行
- 导入错误:
- 对于MCP CLI:使用
--with-editable .安装本地依赖项 - 对于手动设置:运行
pip install -r requirements.txt
- 对于MCP CLI:使用
- 权限错误:在配置中使用绝对路径
- 环境变量不起作用:验证
.env文件格式或-v标志语法 - 模块未找到:确保您正在使用
--with-editable .本地软件包安装标志
调试步骤
步骤1:检查MCP CLI状态
# List all installed servers
mcp list
# Check specific server status
mcp status "Chrome DevTools MCP"
步骤2:手动测试服务器
# Test if server starts without errors
python3 server.py
# Test imports
python3 -c "from server import mcp; print(f'Server: {mcp.name}')"
步骤3:检查配置
对于Claude Desktop:
# View current configuration (macOS)
cat "~/Library/Application Support/Claude/claude_desktop_config.json"
# View current configuration (Windows)
type "%APPDATA%/Claude/claude_desktop_config.json"
克劳德代码:
# List configured MCP servers
claude mcp list
# Get details about a specific server
claude mcp get chrome-devtools
# IMPORTANT: Verify paths are absolute, not relative
# Good example output:
# Command: /Users/you/chrome-devtools-mcp/.venv/bin/python
# Args: ["/Users/you/chrome-devtools-mcp/server.py"]
# Bad example output:
# Command: python
# Args: ["server.py"]
# Test the exact command Claude Code will use
/path/to/.venv/bin/python /path/to/server.py
# Check if server is working
claude mcp serve --help
步骤3.5:修复路径问题(特定于Claude代码)
# If paths are relative, remove and re-add with absolute paths
claude mcp remove chrome-devtools
# Re-add with absolute paths
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
步骤4:必要时重新安装
对于MCP CLI:
# Clean reinstall
mcp remove "Chrome DevTools MCP"
mcp install server.py -n "Chrome DevTools MCP" --with-editable .
# Restart Claude Desktop completely
克劳德代码:
# Remove and re-add the server
claude mcp remove chrome-devtools
claude mcp add chrome-devtools python server.py -e CHROME_DEBUG_PORT=9222
# Or update with different scope
claude mcp add chrome-devtools python server.py -s user -e CHROME_DEBUG_PORT=9222
常见错误消息
| 错误 | 解决方案 |
|---|---|
| “找不到模块” | 使用 --with-editable . 旗帜 |
| “找不到服务器对象” | 服务器应导出 mcp 对象(已固定) |
| “导入错误” | 检查 pip install mcp websockets aiohttp |
| “权限被拒绝” | 在配置中使用绝对路径 |
| “服务器已禁用” | 检查克劳德桌面日志,重新启动克劳德 |
| “python:找不到命令”(Claude代码) | 使用venv python的绝对路径: /path/to/.venv/bin/python |
| “server.py:没有这样的文件”(Claude代码) | 使用服务器的绝对路径: /path/to/server.py |
| “ModuleNotFoundError”(克劳德代码) | 使用安装了依赖项的venv Python |
手动配置回退
对于Claude Desktop: 如果MCP CLI不工作,请手动将其添加到Claude Desktop配置中:
{
"mcpServers": {
"chrome-devtools": {
"command": "python3",
"args": ["/absolute/path/to/chrome-devtools-mcp/server.py"],
"env": {
"CHROME_DEBUG_PORT": "9222"
}
}
}
}
克劳德代码:
如果 claude mcp add 命令不起作用,您可以使用带有绝对路径的JSON格式:
# Get absolute paths first
SERVER_PATH="$(pwd)/server.py"
PYTHON_PATH="$(pwd)/.venv/bin/python"
# Add server using JSON configuration with absolute paths
claude mcp add-json chrome-devtools "{
\"command\": \"$PYTHON_PATH\",
\"args\": [\"$SERVER_PATH\"],
\"env\": {
\"CHROME_DEBUG_PORT\": \"9222\"
}
}"
# Or if you have it working in Claude Desktop, import from there
claude mcp add-from-claude-desktop
正确的Claude代码配置示例(带绝对路径):
{
"command": "/Users/you/chrome-devtools-mcp/.venv/bin/python",
"args": ["/Users/you/chrome-devtools-mcp/server.py"],
"env": {
"CHROME_DEBUG_PORT": "9222"
}
}
连接问题
- Chrome无法启动:当您使用时,MCP服务器将自动启动Chrome
start_chrome() - 无法连接:试试
get_connection_status()检查连接 - 工具不工作:确保您已致电
connect_to_browser()或使用start_chrome_and_connect()
常见误解
- 这不是web服务器:MCP服务器在Claude Desktop内部运行,而不是作为单独的web服务运行
- 无需单独安装:在Claude Desktop中配置后,服务器将自动启动
- 您的应用程序单独运行:此工具连接到您现有的web应用程序,但不会运行它
开发与测试
本节面向希望测试或修改MCP服务器本身的开发人员。
开发设置
紫外线(推荐):
git clone https://github.com/benjaminr/chrome-devtools-mcp.git
cd chrome-devtools-mcp
uv sync
使用pip:
git clone https://github.com/benjaminr/chrome-devtools-mcp.git
cd chrome-devtools-mcp
pip install -e ".[dev]"
代码质量工具
# Format code
uv run ruff format .
# Lint code
uv run ruff check .
# Type checking
uv run mypy src/
构建扩展
安装DXT打包工具:
npm install -g @anthropic-ai/dxt
构建扩展:
# Quick build
make package
# Or manually
npx @anthropic-ai/dxt pack
使用Makefile进行开发:
make help # Show all commands
make install # Install dependencies
make dev # Setup development environment + pre-commit
make check # Run all checks (lint + type + test)
make pre-commit # Run pre-commit hooks manually
make package # Build .dxt extension
make release # Full release build
预提交钩子
此项目使用预提交挂钩来确保代码质量:
- 颈毛:装订和格式化
- 米皮:类型检查
- pytest:测试验证
- MCP验证:服务器注册检查
预提交钩子自动运行 git commit 并且可以手动运行 make pre-commit.
许可证
MIT许可证