Loading...
Loading...
Use Chrome DevTools MCP to control Chrome, debug web apps, analyze performance, and automate browser tasks via MCP tools
npx skill4agent add aradotso/devtools-skills chrome-devtools-mcp-automationSkill by ara.so — Devtools Skills collection.
chrome-devtools-mcp{
"mcpServers": {
"chrome-devtools": {
"command": "npx",
"args": ["-y", "chrome-devtools-mcp@latest"]
}
}
}{
"mcpServers": {
"chrome-devtools": {
"command": "npx",
"args": ["-y", "chrome-devtools-mcp@latest", "--slim", "--headless"]
}
}
}{
"mcpServers": {
"chrome-devtools": {
"command": "npx",
"args": ["-y", "chrome-devtools-mcp@latest", "--no-usage-statistics"],
"env": {
"CHROME_DEVTOOLS_MCP_NO_UPDATE_CHECKS": "1"
}
}
}
}# Install globally
npm install -g chrome-devtools-mcp
# Run CLI
chrome-devtools-mcp --helpbrowser_navigate// Navigate to a page
await use_mcp_tool("chrome-devtools", "browser_navigate", {
url: "https://example.com"
});browser_click// Click by selector
await use_mcp_tool("chrome-devtools", "browser_click", {
selector: "button.submit"
});
// Click with custom wait
await use_mcp_tool("chrome-devtools", "browser_click", {
selector: "#login-btn",
waitUntil: "networkidle2"
});browser_type// Type into a field
await use_mcp_tool("chrome-devtools", "browser_type", {
selector: "input[name='email']",
text: "user@example.com"
});
// Type with delay between keystrokes
await use_mcp_tool("chrome-devtools", "browser_type", {
selector: "#search",
text: "search query",
delay: 100
});browser_screenshot// Full page screenshot
await use_mcp_tool("chrome-devtools", "browser_screenshot", {
fullPage: true
});
// Element screenshot
await use_mcp_tool("chrome-devtools", "browser_screenshot", {
selector: ".main-content",
fullPage: false
});browser_evaluate// Get page data
await use_mcp_tool("chrome-devtools", "browser_evaluate", {
script: "document.title"
});
// Interact with page
await use_mcp_tool("chrome-devtools", "browser_evaluate", {
script: `
const items = Array.from(document.querySelectorAll('.item'));
return items.map(el => ({
text: el.textContent,
href: el.querySelector('a')?.href
}));
`
});performance_record// Record a page load
await use_mcp_tool("chrome-devtools", "performance_record", {
url: "https://example.com",
duration: 10000, // 10 seconds
throttling: "4g" // Simulate 4G network
});performance_analyze// Get performance insights
await use_mcp_tool("chrome-devtools", "performance_analyze", {
traceUrl: "trace-data-url",
includeFieldData: true // Include CrUX data
});browser_console// Fetch console logs
await use_mcp_tool("chrome-devtools", "browser_console", {});browser_network// Get network activity
await use_mcp_tool("chrome-devtools", "browser_network", {});
// Filter by resource type
await use_mcp_tool("chrome-devtools", "browser_network", {
resourceType: "xhr"
});browser_cookies// Get all cookies
await use_mcp_tool("chrome-devtools", "browser_cookies", {
action: "get"
});
// Set a cookie
await use_mcp_tool("chrome-devtools", "browser_cookies", {
action: "set",
name: "session_id",
value: "abc123",
domain: "example.com"
});
// Delete cookies
await use_mcp_tool("chrome-devtools", "browser_cookies", {
action: "delete",
name: "session_id"
});// Navigate to login page
await use_mcp_tool("chrome-devtools", "browser_navigate", {
url: "https://app.example.com/login"
});
// Fill in credentials
await use_mcp_tool("chrome-devtools", "browser_type", {
selector: "input[name='email']",
text: "test@example.com"
});
await use_mcp_tool("chrome-devtools", "browser_type", {
selector: "input[name='password']",
text: process.env.TEST_PASSWORD
});
// Submit form
await use_mcp_tool("chrome-devtools", "browser_click", {
selector: "button[type='submit']",
waitUntil: "networkidle0"
});
// Verify success
const result = await use_mcp_tool("chrome-devtools", "browser_evaluate", {
script: "document.querySelector('.success-message')?.textContent"
});// Navigate to page
await use_mcp_tool("chrome-devtools", "browser_navigate", {
url: "https://news.example.com"
});
// Extract data
const articles = await use_mcp_tool("chrome-devtools", "browser_evaluate", {
script: `
Array.from(document.querySelectorAll('article')).map(article => ({
title: article.querySelector('h2')?.textContent?.trim(),
link: article.querySelector('a')?.href,
date: article.querySelector('time')?.getAttribute('datetime'),
summary: article.querySelector('p')?.textContent?.trim()
}))
`
});// Record trace with throttling
const trace = await use_mcp_tool("chrome-devtools", "performance_record", {
url: "https://example.com",
duration: 15000,
throttling: "3g",
deviceEmulation: "mobile"
});
// Analyze metrics
const analysis = await use_mcp_tool("chrome-devtools", "performance_analyze", {
traceUrl: trace.url,
includeFieldData: true
});
// Check Core Web Vitals
console.log(`LCP: ${analysis.lcp}ms`);
console.log(`FID: ${analysis.fid}ms`);
console.log(`CLS: ${analysis.cls}`);// Navigate and monitor network
await use_mcp_tool("chrome-devtools", "browser_navigate", {
url: "https://api.example.com/dashboard"
});
// Get network requests
const requests = await use_mcp_tool("chrome-devtools", "browser_network", {});
// Filter failed requests
const failed = requests.filter(r => r.status >= 400);
// Find slow requests
const slow = requests.filter(r => r.time > 1000);// Baseline screenshot
await use_mcp_tool("chrome-devtools", "browser_navigate", {
url: "https://example.com"
});
const baseline = await use_mcp_tool("chrome-devtools", "browser_screenshot", {
fullPage: true
});
// Make changes via evaluate
await use_mcp_tool("chrome-devtools", "browser_evaluate", {
script: "document.body.classList.add('dark-mode')"
});
// Comparison screenshot
const comparison = await use_mcp_tool("chrome-devtools", "browser_screenshot", {
fullPage: true
});// Navigate to page
await use_mcp_tool("chrome-devtools", "browser_navigate", {
url: "https://app.example.com"
});
// Check console for errors
const console = await use_mcp_tool("chrome-devtools", "browser_console", {});
// Filter errors with source maps
const errors = console.filter(msg =>
msg.type === 'error' && msg.stackTrace
);
// Log error details
errors.forEach(error => {
console.log(`Error: ${error.text}`);
console.log(`Source: ${error.stackTrace?.[0]?.url}`);
console.log(`Line: ${error.stackTrace?.[0]?.lineNumber}`);
});# Run in headless mode
npx chrome-devtools-mcp@latest --headless
# Slim mode (basic tools only)
npx chrome-devtools-mcp@latest --slim
# Disable performance CrUX data
npx chrome-devtools-mcp@latest --no-performance-crux
# Disable usage statistics
npx chrome-devtools-mcp@latest --no-usage-statistics
# Connect to existing browser
npx chrome-devtools-mcp@latest --browser-url=http://127.0.0.1:9222
# Custom Chrome path
npx chrome-devtools-mcp@latest --chrome-path=/path/to/chrome# Disable usage statistics
export CHROME_DEVTOOLS_MCP_NO_USAGE_STATISTICS=1
# Disable update checks
export CHROME_DEVTOOLS_MCP_NO_UPDATE_CHECKS=1
# CI mode (disables stats collection)
export CI=true{
"mcpServers": {
"chrome-devtools": {
"command": "npx",
"args": ["-y", "chrome-devtools-mcp@latest", "--headless"],
"env": {
"CHROME_DEVTOOLS_MCP_NO_UPDATE_CHECKS": "1"
}
}
}
}{
"mcpServers": {
"chrome-devtools": {
"command": "npx",
"args": [
"-y",
"chrome-devtools-mcp@latest",
"--browser-url=http://127.0.0.1:9222"
]
}
}
}{
"mcpServers": {
"chrome-devtools": {
"command": "cmd",
"args": [
"/c",
"npx",
"-y",
"chrome-devtools-mcp@latest"
],
"env": {
"SystemRoot": "C:\\Windows",
"PROGRAMFILES": "C:\\Program Files"
}
}
}
}chrome --versiongoogle-chrome --versionnode --version{
"args": ["-y", "chrome-devtools-mcp@latest", "--chrome-path=/usr/bin/google-chrome"]
}{
"startup_timeout_ms": 20000
}pkill chromebrowser_clickbrowser_typeawait use_mcp_tool("chrome-devtools", "browser_evaluate", {
script: `
await new Promise(resolve => {
const check = setInterval(() => {
if (document.querySelector('#my-element')) {
clearInterval(check);
resolve();
}
}, 100);
});
`
});performance_recordduration: 30000throttling--headless--slimperformance_record--no-performance-crux--headlesswaitUntil: "networkidle0"throttling: "4g"