---
title: "BrowserTools MCP: Console, Network and Lighthouse for AI"
url: "https://mcpshelf.co/servers/browser-tools"
description: "BrowserTools MCP shows a coding agent the console, network calls, screenshots and Lighthouse audits from your own Chrome tab. Setup for version 2."
updated: "2026-10-27"
site: "MCP Shelf"
---

# BrowserTools MCP

> Console logs, network calls, screenshots and Lighthouse audits from your own Chrome tab.

## 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 |
| GitHub | https://github.com/AgentDeskAI/browser-tools-mcp |
| Licence | MIT |
| npm package | [@agentdeskai/browser-tools-mcp](https://www.npmjs.com/package/@agentdeskai/browser-tools-mcp) 2.0.4 (27 Oct 2026) |
| GitHub stars | 7.3K |
| Downloads | 1.7K a week |
| Last commit | 16 Oct 2026 |
| Tools | 16 |
| Runs on | Your computer |
| Install check | Started in our test |
| Category | [Browser and web data](https://mcpshelf.co/categories/browser-and-web) |

**Our check:** We ran this exact config on 27 Oct 2026: it started and answered with 16 tools.

## Tools

We listed 16 tools on 27 Oct 2026. 13 only read; the rest can change things or run commands.

| Tool | Kind | What it is for |
| --- | --- | --- |
| `listBrowserTabs` | reads | Lists the tabs that have DevTools open and marks the one the other tools read by default. |
| `getConsoleLogs` | reads | Reads console output from a tab, with keyword filters and paging to keep replies short. |
| `getConsoleErrors` | reads | Reads only errors and uncaught exceptions, which is the usual first stop when a page breaks. |
| `getNetworkLogs` | reads | Reads fetch and XHR requests with status codes, timing and bodies. Credential headers are hidden. |
| `getNetworkErrors` | reads | Reads only requests that failed or came back 4xx or 5xx. |
| `getSelectedElement` | reads | Returns the element you picked in the DevTools Elements panel, with its attributes and markup. |
| `getPageInfo` | reads | Says which page the inspected tab is on. |
| `getConnectionStatus` | reads | Checks that the Chrome extension is connected and how much it has captured. |
| `takeScreenshot` | changes | Captures the inspected tab and hands the picture straight to the model, plus a saved file path. |
| `refreshBrowser` | changes | Reloads the inspected tab. |
| `getBrowserStorage` | reads | Reads localStorage, sessionStorage and cookies. Values stay hidden unless you allow them. |
| `wipeLogs` | changes | Clears what has been captured so the next reproduction starts clean. |
| `runAccessibilityAudit` | reads | Runs a Lighthouse accessibility audit on the page. |
| `runPerformanceAudit` | reads | Runs a Lighthouse performance audit, including Core Web Vitals. |
| `runSEOAudit` | reads | Runs a Lighthouse SEO audit. |
| `runBestPracticesAudit` | reads | Runs Lighthouse's best-practices checks. |

### How clearly it describes its tools

16 of 16 tools have a description and 16 of 16 say whether they change things. The tool list takes at least ~1,000 tokens of context. Every tool says whether it only reads or can change things, so a client can ask before the risky ones.

## Set it up

1. Download or clone the BrowserTools repository, open chrome://extensions, turn on Developer mode, choose Load unpacked and pick its chrome-extension folder.
2. Add the config below to your client.
3. Open DevTools (F12) on the page you want the agent to see: capture starts once DevTools is open.

### Claude Desktop

Where: claude_desktop_config.json (Settings → Developer → Edit Config)

```json
{
  "mcpServers": {
    "browser-tools": {
      "command": "npx",
      "args": [
        "-y",
        "@agentdeskai/browser-tools-mcp@latest"
      ]
    }
  }
}
```

### Claude Code

Where: Your terminal, in the project folder

```bash
claude mcp add-json browser-tools '{"command":"npx","args":["-y","@agentdeskai/browser-tools-mcp@latest"]}'
```

### Cursor

Where: ~/.cursor/mcp.json, or .cursor/mcp.json in a project

```json
{
  "mcpServers": {
    "browser-tools": {
      "command": "npx",
      "args": [
        "-y",
        "@agentdeskai/browser-tools-mcp@latest"
      ]
    }
  }
}
```

### VS Code

Where: .vscode/mcp.json in your project

```json
{
  "servers": {
    "browser-tools": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "@agentdeskai/browser-tools-mcp@latest"
      ]
    }
  }
}
```

### Windsurf

Where: ~/.codeium/windsurf/mcp_config.json

```json
{
  "mcpServers": {
    "browser-tools": {
      "command": "npx",
      "args": [
        "-y",
        "@agentdeskai/browser-tools-mcp@latest"
      ]
    }
  }
}
```

### ChatGPT

Where: 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.

## Settings

| Setting | Kind | Required | What it does |
| --- | --- | --- | --- |
| `--port` | flag | no | The local port the built-in connector listens on. The default is 3025. Example: `--port 3025` |
| `--allow-input` | flag | no | 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. Example: `--allow-input` |
| `--extension-id` | flag | no | Accepts one specific copy of the extension and refuses any other. Example: `--extension-id abcdefghijklmnop` |
| `--screenshot-dir` | flag | no | Where screenshots are saved on disk. |
| `--only / --exclude` | flag | no | Trims the tool list down to the ones you name, or hides the ones you name. Example: `--only getConsoleErrors,getNetworkErrors` |
| `--doctor` | flag | no | Checks Node, the extension and Chrome, says which piece is missing, then exits. |
| `--verbose` | flag | no | Prints every captured log and request as it arrives, which is handy on a fresh install. |
| `CHROME_PATH` | env | no | 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

## Good for

- Asking an agent why a page throws errors, with the real console in front of it
- Debugging failed API calls in an app you are signed in to
- Quick Lighthouse checks on the page you are looking at

## 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.

## Similar servers

| Server | Tools | Runs on | Stars |
| --- | --- | --- | --- |
| [ExecuteAutomation Playwright MCP](https://mcpshelf.co/servers/executeautomation-playwright) | 33 | Your computer | 5.7K |
| [Wigolo](https://mcpshelf.co/servers/wigolo) | 10 | Your computer | 5.5K |
| [Perplexity MCP](https://mcpshelf.co/servers/perplexity) | 4 | Your computer or hosted | 2.6K |
| [Tavily MCP](https://mcpshelf.co/servers/tavily) | 5 | Your computer or hosted | 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.

Full docs on GitHub: https://github.com/AgentDeskAI/browser-tools-mcp

---

From [MCP Shelf](https://mcpshelf.co/): A short shelf of MCP servers that are worth installing. Index for agents: https://mcpshelf.co/llms.txt

