🌐 Chrome DevTools MCP
Google's official Chrome DevTools MCP server — gives AI agents full control of a live Chrome browser via Puppeteer and the Chrome DevTools Protocol.
Features
- Input automation — click, drag, fill forms, hover, press keys, upload files, handle dialogs
- Navigation — open/close/switch pages, wait for elements/network idle
- Screenshots & snapshots — capture page state visually and as DOM
- Performance traces — record and analyze Chrome performance traces with insights
- Network inspection — list/inspect network requests and responses
- Console debugging — read console messages with source-mapped stack traces
- Device emulation — emulate mobile devices, resize viewport
- Form automation — fill multiple form fields at once
Requirements
- Node.js v20.19+ (already available in OpenClaw)
- Chrome/Chromium browser
Quick Start
Install & verify
npx -y chrome-devtools-mcp@latest --help
Start the MCP server
# Standard (launches Chrome automatically)
npx -y chrome-devtools-mcp@latest
Headless mode (for servers)
npx -y chrome-devtools-mcp@latest --headless
Connect to existing Chrome (must be started with --remote-debugging-port=9222)
npx -y chrome-devtools-mcp@latest --browser-url=http://127.0.0.1:9222
Disable telemetry
npx -y chrome-devtools-mcp@latest --no-usage-statistics --no-performance-crux
OpenClaw MCP Integration
Add to your
openclaw.json
under MCP servers:
{
"mcp": {
"servers": {
"chrome-devtools": {
"command": "npx",
"args": ["-y", "chrome-devtools-mcp@latest", "--headless", "--no-usage-statistics"]
}
}
}
}
Or use the setup script:
python3 {baseDir}/scripts/setup_chrome_mcp.py setup
python3 {baseDir}/scripts/setup_chrome_mcp.py status
python3 {baseDir}/scripts/setup_chrome_mcp.py test
Tool Reference
Input Automation (8 tools)
| Tool | Description | Key Params |
|---|
click
| Click an element | uid (required), dblClick
|
drag
| Drag element onto another | from_uid , to_uid
|
fill
| Type text into input/textarea/select | uid , value
|
fill_form
| Fill multiple form elements at once | elements[]
|
handle_dialog
| Accept/dismiss browser dialogs | action (accept/dismiss) |
hover
| Hover over element | uid
|
press_key
| Press keyboard key | key
|
upload_file
| Upload file to input | uid , paths[]
|
Navigation (6 tools)
| Tool | Description | Key Params |
|---|
navigate_page
| Go to URL | url
|
new_page
| Open new tab | url
|
close_page
| Close current tab | — |
list_pages
| List all open tabs | — |
select_page
| Switch to tab | index
|
wait_for
| Wait for element/network | event , uid , timeout
|
Debugging (5 tools)
| Tool | Description |
|---|
take_screenshot
| Capture page as image |
take_snapshot
| Get DOM/accessibility snapshot |
evaluate_script
| Run JavaScript in page |
list_console_messages
| Get console log entries |
get_console_message
| Get specific console message |
Performance (3 tools)
| Tool | Description |
|---|
performance_start_trace
| Begin performance recording |
performance_stop_trace
| Stop and get trace data |
performance_analyze_insight
| AI analysis of trace |
Network (2 tools)
| Tool | Description |
|---|
list_network_requests
| List all network requests |
get_network_request
| Get request/response details |
Emulation (2 tools)
| Tool | Description |
|---|
emulate
| Emulate device (mobile, tablet) |
resize_page
| Change viewport size |
Common Workflows
Test a webpage
navigate_page
→ URL
take_snapshot
→ get element UIDs
click
/fill
→ interact with elements
take_screenshot
→ capture result
Performance audit
navigate_page
→ URL
performance_start_trace
- Interact with page
performance_stop_trace
performance_analyze_insight
Form testing
navigate_page
→ form URL
take_snapshot
→ identify form fields
fill_form
→ fill all fields at once
click
→ submit button
take_screenshot
→ verify result
Privacy Notes
- Google collects usage statistics by default — disable with
--no-usage-statistics
- Performance tools may send trace URLs to Google CrUX API — disable with
--no-performance-crux
- Avoid sharing sensitive data in browser sessions