Agent/MCP Audit Sprint

Sample audit report

browserbase/mcp-server-browserbase

This independent public-code sample is based on commit 1e196b3d3c4dc70944e0d19038dd9eb3608b207a. It is not a commissioned review or private vulnerability disclosure, and no Browserbase sessions, customer data, credentials, hosted MCP endpoints, or live websites were used.

TargetBrowserbase MCP Server
Validationpnpm install + build + tests passed
Scanner Score72/100 heuristic score

Scope

Out of scope: Browserbase production infrastructure, hosted MCP service behavior, live Browserbase account authorization, external website interaction, customer data, and unpublished branches.

Executive Summary

The repo has a clean, focused MCP surface: six tools match the hosted Browserbase MCP server, inputs use Zod schemas, tests assert tool names and schema behavior, and the self-hosted server supports both stdio and Streamable HTTP.

The highest-value review work is around launch and operator boundaries. Browser automation MCP servers sit at a sensitive boundary: an agent can navigate authenticated sessions, act on web pages, observe actionable elements, and extract page data.

Boundary Map

AreaEvidenceRisk Notes
Transportsrc/transport.ts, README.md, src/config.tsSTDIO and HTTP/SHTTP are supported. HTTP binds to the configured host; docs describe localhost default and 0.0.0.0.
MCP tool surfacesrc/index.ts, src/tools/index.tsSix tools are registered: start, end, navigate, act, observe, and extract.
Browser sessionssrc/sessionManager.ts, src/tools/session.tsSession creation uses Browserbase and Stagehand; context IDs and persistence are configurable.
Browser actionssrc/tools/navigate.ts, src/tools/act.ts, src/tools/observe.ts, src/tools/extract.tsTools navigate URLs, perform page actions, observe elements, and extract page data.
Credentialssrc/config.ts, src/sessionManager.ts, README.mdBrowserbase, project, Gemini/Google, and custom model keys are loaded from env/CLI/config.
Tests and CIsrc/config.test.ts, src/tools/__tests__/tools.test.ts, tests/smoke.test.ts, .github/workflows/ci.ymlUnit and smoke tests exist and passed locally. CI also runs secret-backed evals.

Findings

MediumHTTP transport needs an operator-facing exposure matrix

Evidence: README.md documents SHTTP and --host; src/config.ts exposes server.host; src/transport.ts starts an HTTP server and creates Streamable HTTP sessions.

Recommended fix: add a transport exposure matrix covering hosted MCP, stdio self-hosted, local HTTP, Docker, reverse proxy deployment, host binding, external auth expectations, and credential sharing assumptions.

MediumBrowser action tools need explicit launch-mode policy

Evidence: navigate opens URLs, act performs natural-language page actions, observe returns actionable elements, and extract returns page data.

Recommended fix: document risk modes for anonymous browsing, authenticated browsing, persistent context, and verified identity; add examples for deployments that want observe/extract without unrestricted act.

LowOperational logs should be treated as sensitive artifacts

Evidence: Context.run logs tool names and serialized args; SessionManager logs session lifecycle events, Browserbase session IDs, and live debugger URLs.

Recommended fix: add log-sensitivity guidance, redact URL query strings and session IDs in structured logs, and test provider error formatting.

LowSecret-backed evals should be separated from public CI expectations

Evidence: CI runs install, lint, format, build, tests, then pnpm evals with Browserbase/model provider secrets.

Recommended fix: split public CI from secret-backed evals or skip evals when required secrets are absent, then publish the minimum local validation command set.

Positive Signals

Priority Fix Plan

  1. Add a transport exposure matrix and startup summary for self-hosted HTTP/SHTTP.
  2. Add a session risk-mode section for authenticated browsing, persistent context, and verified identity.
  3. Add log sensitivity and redaction guidance for tool args, URLs, session IDs, and debugger URLs.
  4. Split public CI from secret-backed evals or document the secret-backed job behavior.
  5. Add example wrappers or config guidance for deployments that want observe/extract without unrestricted act.

Example Validation Commands

corepack pnpm install --frozen-lockfile
corepack pnpm build
BROWSERBASE_API_KEY=test-key BROWSERBASE_PROJECT_ID=test-project corepack pnpm test
node tools/agent-mcp-audit.mjs /path/to/mcp-server-browserbase --sarif > agent-mcp-audit.sarif

What the Paid Sprint Adds

The paid sprint would go deeper than this public sample: focused tests against the repo's actual CI shape, a deployment-mode threat table, log-redaction checks, recommended wrapper policy for browser actions, issue-ready remediation text, and a concise launch handoff for owners.