Console logs, network calls, screenshots and Lighthouse audits from your own Chrome tab.
- Started in our test
- ★ 7.3K GitHub stars
- 1.7K downloads a week
- Last commit 16 Oct 2026
At a glance
BrowserTools works with the Chrome session you already have open, through a DevTools extension, instead of starting a fresh automated browser. That means you stay signed in to the app you are debugging, and the agent sees the same console errors, failed requests and selected element that you do. It can also run Lighthouse audits for performance, accessibility, SEO and best practices.
Version 2 is a rewrite that fixed serious security problems in 1.x (open local ports and a network scan), so make sure you are on 2.0 or newer. Clicking, typing and navigation are off unless you start it with --allow-input.
- Made by
- AgentDesk AI
- Licence
- MIT
- Latest version
- 2.0.4 (27 Oct 2026)
- npm package
- @agentdeskai/browser-tools-mcp
- GitHub stars
- 7.3K
- Downloads
- 1.7K a week
- Last commit
- 16 Oct 2026
- Tools
- 16
- Runs on
- Your computer
Our check: We ran this exact config on 27 Oct 2026: it started and answered with 16 tools.
What's in the pod: its tools
We found 16 tools when we started it on 27 Oct 2026. 13 only read. The rest can change things, so keep your app's "ask before each tool call" setting on for them.
How we tested it: Started @agentdeskai/browser-tools-mcp 2.0.4 with no browser extension connected. These are its default tools; navigation and soft clicks and typing appear only with --allow-input.
Changes things3 tools · Can create, edit, send or delete.
| Tool | What it is for |
|---|---|
refreshBrowser | Reloads the inspected tab. |
takeScreenshot | Captures the inspected tab and hands the picture straight to the model, plus a saved file path. |
wipeLogs | Clears what has been captured so the next reproduction starts clean. |
Only reads13 tools · Looks things up and changes nothing.
| Tool | What it is for |
|---|---|
getBrowserStorage | Reads localStorage, sessionStorage and cookies. Values stay hidden unless you allow them. |
getConnectionStatus | Checks that the Chrome extension is connected and how much it has captured. |
getConsoleErrors | Reads only errors and uncaught exceptions, which is the usual first stop when a page breaks. |
getConsoleLogs | Reads console output from a tab, with keyword filters and paging to keep replies short. |
getNetworkErrors | Reads only requests that failed or came back 4xx or 5xx. |
getNetworkLogs | Reads fetch and XHR requests with status codes, timing and bodies. Credential headers are hidden. |
getPageInfo | Says which page the inspected tab is on. |
getSelectedElement | Returns the element you picked in the DevTools Elements panel, with its attributes and markup. |
listBrowserTabs | Lists the tabs that have DevTools open and marks the one the other tools read by default. |
runAccessibilityAudit | Runs a Lighthouse accessibility audit on the page. |
runBestPracticesAudit | Runs Lighthouse's best-practices checks. |
runPerformanceAudit | Runs a Lighthouse performance audit, including Core Web Vitals. |
runSEOAudit | Runs a Lighthouse SEO audit. |
Grouped and described by us. The README on GitHub lists the inputs each tool takes.
How clearly it describes its tools to your assistant
- Tools with a description
- 16 of 16
- Say if they change things
- 16 of 16
- Context it takes, at least
- ~1,000 tokens
Every tool says whether it only reads or can change things, so a client can ask before the risky ones.
From the tool list it sent us. The token figure counts names, descriptions and input names; the full schemas your client loads add more.
Set it up
- Download or clone the BrowserTools repository, open chrome://extensions, turn on Developer mode, choose Load unpacked and pick its chrome-extension folder.
- Add the config below to your client.
- Open DevTools (F12) on the page you want the agent to see: capture starts once DevTools is open.
Pick your app for the exact snippet and where it goes.
Where it goes: claude_desktop_config.json (Settings → Developer → Edit Config)
{
"mcpServers": {
"browser-tools": {
"command": "npx",
"args": [
"-y",
"@agentdeskai/browser-tools-mcp@latest"
]
}
}
}Where it goes: Your terminal, in the project folder
claude mcp add-json browser-tools '{"command":"npx","args":["-y","@agentdeskai/browser-tools-mcp@latest"]}'Where it goes: ~/.cursor/mcp.json, or .cursor/mcp.json in a project
{
"mcpServers": {
"browser-tools": {
"command": "npx",
"args": [
"-y",
"@agentdeskai/browser-tools-mcp@latest"
]
}
}
}Where it goes: .vscode/mcp.json in your project
{
"servers": {
"browser-tools": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@agentdeskai/browser-tools-mcp@latest"
]
}
}
}Where it goes: ~/.codeium/windsurf/mcp_config.json
{
"mcpServers": {
"browser-tools": {
"command": "npx",
"args": [
"-y",
"@agentdeskai/browser-tools-mcp@latest"
]
}
}
}Where it goes: Not supported
ChatGPT only connects to remote servers by URL. This one runs on your computer, so use Claude, Cursor or VS Code.
If nothing comes through, run npx @agentdeskai/browser-tools-mcp --doctor, which names the missing piece.
New to this? See the setup guides for Claude Code, Cursor, Claude Desktop and ChatGPT.
Settings
Names are exactly as the project spells them. Required ones are marked.
| Setting | What it does |
|---|---|
--portCommand line flag | The local port the built-in connector listens on. The default is 3025.--port 3025 |
--allow-inputCommand line flag | Adds the tools that open URLs, click and type (navigateTab, softClick, softType and friends). Without it the server can only look, which is how we listed it.--allow-input |
--extension-idCommand line flag | Accepts one specific copy of the extension and refuses any other.--extension-id abcdefghijklmnop |
--screenshot-dirCommand line flag | Where screenshots are saved on disk. |
--only / --excludeCommand line flag | Trims the tool list down to the ones you name, or hides the ones you name.--only getConsoleErrors,getNetworkErrors |
--doctorCommand line flag | Checks Node, the extension and Chrome, says which piece is missing, then exits. |
--verboseCommand line flag | Prints every captured log and request as it arrives, which is handy on a fresh install. |
CHROME_PATHEnvironment variable | Points the Lighthouse audits at a specific Chrome or Chromium binary. |
What it can touch
It can read
- Console output, network requests and storage from Chrome tabs with DevTools open
- Screenshots of the page you are on, signed in as you
It can change
- Reloads the tab
- With --allow-input, opens URLs and sends clicks and typing to the page
Safer setup: Leave --allow-input off so it can only observe, pin the extension with --extension-id, and keep cookie values hidden, which is the default.
Before you start
- Node.js 22.19 or newer
- Chrome (or another Chromium browser) with the BrowserTools extension loaded unpacked
If it does not work
- Every tool says the extension is not connected
- Load the chrome-extension folder from the repository through chrome://extensions with Developer mode on, then open DevTools on the page. Capture only starts once DevTools is open.
- The server will not start
- Version 2 needs Node 22.19 or newer. If you use nvm or asdf, make sure your editor starts with the same Node you see in a terminal.
- You are still on 1.x, with a separate browser-tools-server
- Upgrade. 1.x is unsupported and listened on your whole network. In 2.x the MCP server runs the connector itself, so there is nothing else to start.
- Not sure which part is broken
- Run npx @agentdeskai/browser-tools-mcp --doctor. It names the missing piece.
- Audits cannot reach an API on another local port
- Audits only reach the page's own origin by default. Allow the extra origin with --audit-allow-origin.
Peas in a pod: similar servers
How BrowserTools MCP lines up against other browser and web data servers on the shelf.
| Server | Tools | Runs on | Licence | Stars |
|---|---|---|---|---|
| BrowserTools MCP | 16 | Your computer | MIT | 7.3K |
| ExecuteAutomation Playwright MCP | 33 | Your computer | MIT | 5.7K |
| Wigolo | 10 | Your computer | AGPL-3.0-only | 5.5K |
| Perplexity MCP | 4 | Your computer or hosted | MIT | 2.6K |
| Tavily MCP | 5 | Your computer or hosted | MIT | 2.5K |
Questions
How is it different from Playwright MCP?
Playwright MCP drives a separate browser. BrowserTools reads the Chrome you already have open, so it sees your signed-in session and the bug exactly as you see it.
Does it work in Firefox?
Not officially. The extension has not been tried in Firefox, and the Lighthouse audits need Chrome's DevTools protocol.
Is my data sent anywhere?
No. In version 2 the connector only listens on 127.0.0.1 and every request needs a token for that run.
Is it free?
Yes, MIT licensed.
Something wrong on this page? Tell us.
