BrowserTools MCP
Streams console, network, screenshots and Lighthouse audits from your own Chrome tabs to an MCP client
Runs Google Lighthouse audits on a URL and returns category scores and Core Web Vitals
By Priyankar Kumar (individual) TypeScript Local · stdio TestingBrowser automationDeveloper tools
60 popularity score ★ 217 ↓ 3.0k/wk
Opens the app, which asks before it adds the server.
claude mcp add lighthouse -- npx -y lighthouse-mcp{
"mcpServers": {
"lighthouse": {
"command": "npx",
"args": [
"-y",
"lighthouse-mcp"
]
}
}
}{
"mcpServers": {
"lighthouse": {
"command": "npx",
"args": [
"-y",
"lighthouse-mcp"
]
}
}
}{
"servers": {
"lighthouse": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"lighthouse-mcp"
]
}
}
}[mcp_servers.lighthouse]
command = "npx"
args = ["-y", "lighthouse-mcp"]gemini mcp add --scope user lighthouse npx -- -y lighthouse-mcpOpens the app, which asks before it adds the server. Then replace each <NAME> in its settings with your value.
git clone https://github.com/priyankark/lighthouse-mcp.git
cd lighthouse-mcp
npm install
npm run buildclaude mcp add lighthouse -- node '<ABSOLUTE_PATH_TO_CLONE>/build/index.js'{
"mcpServers": {
"lighthouse": {
"command": "node",
"args": [
"<ABSOLUTE_PATH_TO_CLONE>/build/index.js"
]
}
}
}{
"mcpServers": {
"lighthouse": {
"command": "node",
"args": [
"<ABSOLUTE_PATH_TO_CLONE>/build/index.js"
]
}
}
}{
"servers": {
"lighthouse": {
"type": "stdio",
"command": "node",
"args": [
"<ABSOLUTE_PATH_TO_CLONE>/build/index.js"
]
}
}
}[mcp_servers.lighthouse]
command = "node"
args = ["<ABSOLUTE_PATH_TO_CLONE>/build/index.js"]gemini mcp add --scope user lighthouse node -- '<ABSOLUTE_PATH_TO_CLONE>/build/index.js'AUDIT_ALLOW_LOOPBACK |
Optional: Set to false to also block localhost and loopback addresses; loopback is allowed by default. |
|---|
Lighthouse MCP Server wraps Google's Lighthouse auditing tool so an assistant can check how a web page scores. It starts a headless Chrome on your machine, loads the page you name and returns a JSON summary. It has two tools: run_audit, which can be limited to some of the performance, accessibility, best-practices and seo categories and set to mobile or desktop emulation with or without network throttling, and get_performance_score, which runs only the performance category.
The summary is short by design. In version 0.1.17 the code returns each category's title, score and description plus six metrics: first contentful paint, largest contentful paint, total blocking time, cumulative layout shift, speed index and time to interactive. The individual audit findings and fix suggestions in a full Lighthouse report are not passed back (src/index.ts). Mobile runs use a 360x640 viewport and desktop runs 1350x940.
It suits quick checks during development, such as asking for a page's performance score after a change, or comparing mobile and desktop numbers.
| Runtime | Node.js 22+ |
|---|
Node.js 22.19 or later (the package's engines field) and an installed Chrome or Chromium that chrome-launcher can find. No account or sign-in. Runs locally over stdio.
Only two tools, and results are cut to category scores and six metrics; the per-audit findings of a Lighthouse report are not returned. Only one audit runs at a time: a second request while one is running is refused, and each audit is stopped after 120 seconds. get_performance_score always applies network throttling; use run_audit with throttling set to false to skip it. Private, link-local and cloud metadata addresses are blocked, so pages on an internal network cannot be audited; loopback is allowed unless AUDIT_ALLOW_LOOPBACK=false.
Developers who want a page's Lighthouse scores without leaving their assistant, on a machine that already has Chrome. It needs no account and changes nothing. It is less useful when you need the full list of failing audits and how to fix them, a saved HTML report, or audits of staging sites on a private network, since the server blocks those addresses; run the Lighthouse CLI or Chrome DevTools directly for those.
run_auditget_performance_score