Chrome调试协议集成工具

一个通过MCP协议集成Chrome开发者工具的服务,允许用户调试网页应用,监控网络请求、控制台错误和性能问题。

  • by benjaminr
  • Python
  • 本地部署
  • 311 星标
  • 更新于
在 GitHub 查看 benjaminr/chrome-devtools-mcp

使用说明

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:克劳德桌面扩展(最简单)

下载预构建的扩展:

  1. 下载最新 .dxt 文件来自 发布
  2. 打开克劳德桌面
  3. 转到扩展并安装下载的 .dxt 文件
  4. 如果需要,在扩展程序设置中配置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用户:

  1. 克隆此存储库
git clone https://github.com/benjaminr/chrome-devtools-mcp.git
cd chrome-devtools-mcp
  1. 使用UV安装依赖项(创建venv)
uv sync  # Creates .venv and installs dependencies
  1. 使用带有绝对路径的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
  1. 验证安装
# 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:手动克劳德桌面设置

  1. 克隆此存储库
git clone https://github.com/benjaminr/chrome-devtools-mcp.git
cd chrome-devtools-mcp
  1. 安装依赖项

紫外线(推荐):

uv sync

使用pip:

pip install -r requirements.txt
  1. 添加到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"
      }
    }
  }
}
  1. 重新启动克劳德桌面

验证安装

安装后(任一方法),验证服务器是否可用:

  1. 打开克劳德桌面
  2. 在对话中寻找MCP工具
  3. 尝试一个简单的命令: 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?) -通过远程调试和可选的自动连接启动Chrome
  • start_chrome_and_connect(url, port?, headless?, chrome_path?) -只需一步即可启动Chrome、连接和导航
  • connect_to_browser(port?) -连接到现有Chrome实例
  • navigate_to_url(url) -导航到特定URL
  • disconnect_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) -在浏览器上下文中执行JavaScript
  • clear_console() -清除浏览器控制台
  • inspect_console_object(expression) -深入检查任何JavaScript对象
  • monitor_console_live(duration_seconds) -实时监控控制台输出

页面分析

  • get_page_info() -获取全面的页面指标和性能数据
  • evaluate_in_all_frames(code) -在所有框架/iframes中执行JavaScript
  • get_performance_metrics() -获取详细的性能指标和资源时间安排

存储和数据

  • get_storage_usage_and_quota(origin) -获取存储使用情况和配额信息
  • clear_storage_for_origin(origin, storage_types?) -按类型和来源清除存储
  • get_all_cookies() -获取所有浏览器Cookie
  • clear_all_cookies() -清除所有浏览器Cookie
  • set_cookie(name, value, domain, path?, expires?, http_only?, secure?, same_site?) -设置cookie
  • get_cookies(domain?) -通过可选域过滤获取浏览器Cookie
  • get_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")

手动设置(如果您愿意):

  1. 启动Chrome:使用 start_chrome()
  2. 导航到您的应用程序:使用 navigate_to_url("localhost:3000")
  3. 连接:使用 connect_to_browser()
  4. 监控网络流量:使用 get_network_requests() 查看所有API调用

检查JavaScript控制台错误

当您的web应用程序出现JavaScript错误或意外行为时:

  1. 导航到您的应用程序 在已连接的Chrome实例中
  2. 检查控制台错误:使用 get_console_error_summary() 查看所有错误
  3. 监控实时错误:使用 monitor_console_live(10) 在交互过程中观察新错误
  4. 检查变量:使用 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应用程序加载缓慢或使用太多内存时:

  1. 加载您的应用程序 在已连接的浏览器中
  2. 检查页面指标:使用 get_page_info() 查看加载时间和资源计数
  3. 分析性能:使用 get_performance_metrics() 查看详细的计时数据
  4. 监控内存使用情况:检查性能指标中的内存信息

工作流程示例:

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.

调试身份验证问题

当登录或会话管理不起作用时:

  1. 导航到您的登录页面
  2. 检查Cookie:使用 get_cookies() 查看身份验证Cookie
  3. 登录时监控网络:使用 monitor_console_live() 和 get_network_requests() 在登录过程中
  4. 检查存储的数据:使用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) -获取元素的外部HTML
  • get_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

调试会话

  1. 连接到您的应用程序 通过克劳德桌面:

    start_chrome_and_connect("localhost:3000")
    

    替换为应用程序的URL

  2. 调试您的应用程序 使用MCP工具:

    • 监控网络请求
    • 检查控制台错误
    • 检查JavaScript对象
    • 分析性能
  3. 对代码进行更改 在你的编辑器中

  4. 刷新或交互 与您的应用程序

  5. 继续调试 实时数据

手动连接(替代)

如果您更喜欢分步控制:

  1. start_chrome() -启动Chrome并进行调试
  2. navigate_to_url("your-app-url") -导航到您的应用程序
  3. connect_to_browser() -连接MCP服务器
  4. 根据需要使用调试工具

安全说明

  • 仅在开发环境中使用
  • 从不连接到生产Chrome实例
  • 服务器仅设计用于本地主机调试
  • 没有数据是永久存储的,所有数据都是基于会话的

故障排除

服务器在Claude Desktop中显示为“已禁用”

如果服务器出现在Claude中,但显示为“禁用”,请尝试以下步骤:

  1. 检查克劳德桌面日志:

    • macOS: ~/Library/Logs/Claude/mcp*.log
    • 视窗: %APPDATA%/Claude/logs/mcp*.log
  2. 常见修复:

    # 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
    
  3. 检查相关性:

    # Ensure all dependencies are available
    pip install mcp websockets aiohttp
    
    # Test imports
    python3 -c "from server import mcp; print('OK')"
    
  4. 重新启动克劳德桌面 完全(退出并重新打开)

安装问题

  • 未找到MCP CLI:从安装MCP CLI Python MCP SDK 随着 pip install mcp
  • 服务器未出现在Claude中:
    • 对于MCP CLI:运行 mcp list 验证服务器是否已安装
    • 手动设置:检查Claude Desktop配置文件路径和JSON语法
  • 导入错误:
    • 对于MCP CLI:使用 --with-editable . 安装本地依赖项
    • 对于手动设置:运行 pip install -r requirements.txt
  • 权限错误:在配置中使用绝对路径
  • 环境变量不起作用:验证 .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许可证