BrowserTools MCP

Streams console, network, screenshots and Lighthouse audits from your own Chrome tabs to an MCP client

By AgentDeskAI TypeScript Local · stdio Browser automationDeveloper toolsTesting

65 popularity score ★ 7.3k ↓ 5.0k/wk

Connect your client

Local (npm)

Add in one click

Opens the app, which asks before it adds the server.

Or add it by command or config

Claude CodeTerminal
claude mcp add browsertools -- npx -y @agentdeskai/browser-tools-mcp@latest
Claude Desktopclaude_desktop_config.json
{
  "mcpServers": {
    "browsertools": {
      "command": "npx",
      "args": [
        "-y",
        "@agentdeskai/browser-tools-mcp@latest"
      ]
    }
  }
}
Cursor~/.cursor/mcp.json
{
  "mcpServers": {
    "browsertools": {
      "command": "npx",
      "args": [
        "-y",
        "@agentdeskai/browser-tools-mcp@latest"
      ]
    }
  }
}
VS Code.vscode/mcp.json
{
  "servers": {
    "browsertools": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "@agentdeskai/browser-tools-mcp@latest"
      ]
    }
  }
}
Codex~/.codex/config.toml
[mcp_servers.browsertools]
command = "npx"
args = ["-y", "@agentdeskai/browser-tools-mcp@latest"]
Gemini CLITerminal
gemini mcp add --scope user browsertools npx -- -y @agentdeskai/browser-tools-mcp@latest

Settings 9

BROWSER_TOOLS_PORT Optional: Port of the local connector the extension talks to. Default 3025.
BROWSER_TOOLS_SCREENSHOT_DIR Optional: Folder where screenshots and the last audit reports are written.
BROWSER_TOOLS_TOOLS Optional: Comma-separated tools to expose, hiding the rest (same as --only).
BROWSER_TOOLS_EXCLUDE_TOOLS Optional: Comma-separated tools to hide (same as --exclude).
BROWSER_TOOLS_EXTENSION_ID Optional: Accept pairing only from this extension id.
BROWSER_TOOLS_REDACT Optional: Set to false to stop scrubbing credentials from captured data. Default true.
BROWSER_TOOLS_TOKEN secret Optional: Token for attaching to a connector that is already running.
BROWSER_TOOLS_AUDIT_ALLOW_ORIGINS Optional: Local or private origins audits may reach without an open tab. For audits.
BROWSER_TOOLS_VERBOSE Optional: Set to true to print each captured entry as it arrives.

What it does

BrowserTools MCP gives a coding assistant in Cursor, Claude Code, Windsurf, Cline, Zed or Gemini CLI a view of the Chrome session you already have open and logged in to. It reads console output, network requests, the element picked in the Elements panel, page info and browser storage. It can also take screenshots, reload the tab and run Lighthouse audits for accessibility, performance, SEO and best practices. The idea is to debug the app in front of you instead of starting a fresh automated browser.

There are two pieces. The npm package @agentdeskai/browser-tools-mcp runs the MCP server and starts its own local connector, so nothing else needs launching. The Chrome extension is loaded unpacked from the chrome-extension folder of the repository. Capture for a tab starts once DevTools is open on it. Long histories, HAR files and full audit reports are served as MCP resources that the client can fetch when it wants them.

Version 2.0 rewrote the project. The maintainers say 1.x is unsupported and has critical vulnerabilities, including remote code execution, that will not be patched there. The README on the main branch also lists tab tools such as listTabs, readTab and softClick, but the v2.0.4 package registers 16 tools and none of those (src/mcp/server.ts at the v2.0.4 tag).

What it needs

RuntimeNode.js 22.19+
Runs onmacOS, Windows, Linux
Also
  • Chrome with the BrowserTools extension loaded unpacked
  • Chrome DevTools open on the tab to capture
  • A Chromium-based browser on the machine for Lighthouse audits

Download or clone the repository, open chrome://extensions, switch on Developer mode and use Load unpacked on the chrome-extension folder. Then open DevTools (F12) on the page you want read. Running the package with --doctor reports which part is missing. Audits find a Chromium-based browser on their own; set CHROME_PATH to pick another.

Limits

  • Early release listTabs, readTab, navigateBrowser, navigateTab, softClick and softType appear in the main-branch README but are not in the released 2.0.4 package
  • Not covered Network requests that finished before DevTools was opened are not captured, so reload the page to record a full load
  • Size cap Screenshots are kept under 3 MB by default by re-encoding as JPEG and downscaling; an image that still does not fit is returned as a file path
  • Platform Firefox has never been tested and screenshots will not work there; Arc is best effort
  • Limit Default console capture attaches the debugger, which shows Chrome's debugging banner unless the panel is switched to Wrap page console
  • Limit Audits start a separate headless browser and can take up to a minute each
  • Not covered Audits refuse localhost and private-network pages unless they are open in a connected tab or allowed with --audit-allow-origin
  • Limit Version 1.x is unsupported and has unpatched critical vulnerabilities, so upgrade to 2.x

Who it suits

Good for a developer who wants an assistant to look at the console, failing requests or storage of a web app they are already signed in to, with Lighthouse scores on the side. It runs locally and mostly reads, and the only changes it makes are reloading a tab, saving screenshots and clearing captured logs. In the released version it cannot click, type or navigate. For scripted end-to-end tests in a clean browser, the README points to Playwright MCP or Chrome DevTools MCP. Those start their own automated browser, while this one reads the profile you are signed in to.

Tools 16

13 only read, 2 change things, 1 can delete or overwrite. A ? marks an optional parameter.

getConsoleLogs
Recent console entries, newest first, with keyword filters and pagingkeywords?: arraytabId?: anyallTabs?: booleanlimit?: integeroffset?: integer
getConsoleErrors
Only errors and uncaught exceptions from the consolekeywords?: arraytabId?: anyallTabs?: booleanlimit?: integeroffset?: integer
getNetworkLogs
Captured XHR and fetch requests with status, timing and bodiesurlKeywords?: arraybodyKeywords?: arraytabId?: anyallTabs?: booleanlimit?: integeroffset?: integer
getNetworkErrors
Failed requests and those answered with 4xx or 5xxurlKeywords?: arraytabId?: anyallTabs?: booleanlimit?: integeroffset?: integer
getSelectedElement
Details of the node picked in the Elements paneltabId?: any
getPageInfo
URL of the page the tab is on and whether the extension is connected
getConnectionStatus
Extension connection, tab count, screenshot folder and capture counts
listBrowserTabs
Tabs that have DevTools open, with the tabId other tools accept
takeScreenshot changes
Captures the visible area, returns the image and saves it to diskname?: stringtabId?: any
refreshBrowser changes
Reloads the tab being inspectedtabId?: any
getBrowserStorage
Keys of localStorage, sessionStorage and cookies, with values only on requestkinds?: arrayincludeValues?: booleantabId?: any
wipeLogs deletes
Deletes the captured console and network historytabId?: any
runAccessibilityAudit
Lighthouse check of contrast, labels and screen-reader supporturl?: stringtabId?: any
runPerformanceAudit
Lighthouse performance score including Core Web Vitalsurl?: stringtabId?: any
runSEOAudit
Lighthouse check of metadata, indexability and crawlabilityurl?: stringtabId?: any
runBestPracticesAudit
Lighthouse check of security headers, deprecated APIs and similar hygieneurl?: stringtabId?: any

Resources 5

browser-tools://console/{tabId|all}
Full console history for a tab or all tabs
browser-tools://network/{tabId|all}
Every captured request with bodies
browser-tools://har/{tabId|all}
Captured traffic as a HAR 1.2 file
browser-tools://screenshot/{name}
A screenshot saved earlier
browser-tools://audit/{reportId}
Full Lighthouse report behind an audit summary

Prompts 3

debuggerMode
Step-by-step debugging workflow using the capture tools
auditMode
Workflow for running and acting on the audits
nextjsSeoAudit
SEO review aimed at Next.js apps

Similar servers