Agent Browser

io.github.codeChapPublished by GitHub account codeChapv0.1.0Updated Oct 26, 2026

MCP server for browser automation via Vercel's agent-browser CLI

Overview

AI-generated overview

Local MCP server that wraps Vercel's agent-browser CLI so an assistant can drive a real Chromium browser: navigate, click, fill forms, snapshot and screenshot.

What you can do
  • Navigate pages and wait for load, URL, text or selectors
  • Inspect pages via accessibility-tree snapshots and regex text extraction
  • Interact with elements by reference: click, type and fill forms
  • Capture screenshots and PDFs, and manage downloads
  • Handle cookies, sessions and persistent login state, plus eval and CDP access
  • Diagnose the CLI, config and daemon setup with a doctor tool
When to use it
Useful when an assistant needs to operate a real browser rather than fetch documents: filling in forms, clicking through a logged-in site, checking what a page renders, or capturing screenshots. Pair it with a search tool to find URLs first, since it does no searching itself.
Requirements
Runs as a local stdio process on desktop; the agent-browser CLI must be installed (cargo install agent-browser, then agent-browser install) and Chromium is driven through Playwright. The MCP client points at the built binary. Optional TOML config at ~/.config/mcp-server-agent-browser/config.toml, overridable with MCP_AGENT_BROWSER_CONFIG; related settings include AGENT_BROWSER_PATH, AGENT_BROWSER_HEADED and AGENT_BROWSER_ENCRYPTION_KEY.
Before you install
The browser acts on real sites: clicks, form fills and logins change remote state, and a persistent profile or saved session state can carry credentials. Restore files under ~/.agent-browser are credentials and are stored in plaintext unless AGENT_BROWSER_ENCRYPTION_KEY is set. A killed process may leave a Chromium daemon running. File writes (screenshots, PDFs, downloads) are restricted to relative paths, /tmp or download_dir. Beta status: cookie restore across a real Chromium restart is only…

Installation

In SourceWeft

  1. Open Agent Browser in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

mcp-server-agent-browser

Status: Beta — CLI wrapper is covered by unit tests and a fake-browser stdio smoke test. Cookie restore across a real Chromium restart is still a manual check.

Let LLMs drive a real browser. This MCP server wraps agent-browser (Vercel Labs) so any MCP client can navigate, fill forms, click, snapshot the accessibility tree, and screenshot.

It is not Grok's web_search / open_page. Those fetch documents. This one runs Chromium. Use search to find a URL, then browser_navigate.

Prerequisites

bash
cargo install agent-browseragent-browser install

Call browser_doctor if anything is missing.

Build

bash
cargo build --release

Binary: target/release/mcp-server-agent-browser

bash
cargo test./tests/test-stdio.sh

Real Chromium login-restore is not in CI. After a headed login, restart the MCP process and confirm the next browser_navigate is still logged in.

Configuration

MCP client (stdio):

json
{  "mcpServers": {    "agent-browser": {      "command": "/path/to/mcp-server-agent-browser"    }  }}

Optional TOML at ~/.config/mcp-server-agent-browser/config.toml (see config.example.toml). Missing file uses defaults. Override the path with MCP_AGENT_BROWSER_CONFIG.

SettingDefaultMeaning
headedfalseShow a window. Launch-time only; browser_close first if a headless daemon is already up. Also AGENT_BROWSER_HEADED=1.
persisttrue--session-name <namespace>-<session_id> (default session key default). There's no --namespace CLI flag — namespace is folded into that name instead.
keep_daemonfalseIf false, MCP exit runs close so restore state is saved and Chrome does not leak.
namespacemcp-serverPrefix of the --session-name restore key, isolating this MCP's restore files from a human using the CLI directly.
command_timeout_secs120Wrapper timeout. Playwright's own 25s action timeout is left alone (CLI IPC is ~30s).
idle_timeout1hSets AGENT_BROWSER_IDLE_TIMEOUT_MS (env only — there's no --idle-timeout CLI flag). Use "0" with keep_daemon = true.
download_dir~/Downloads--download-path. ~ is expanded.
profileunsetOptional persistent Chrome user-data dir. Not your daily Chrome profile.
encryption_key_fileunsetSets AGENT_BROWSER_ENCRYPTION_KEY. Restore files are credentials; plaintext unless this is set.
AGENT_BROWSER_PATHagent-browserCLI binary.

allowed_domains is optional. Localhost is allowed unless you set a list that excludes it.

What it can do

Same interaction set as before (navigate, click, type, snapshot, screenshot, cookies, eval, CDP, sessions), plus:

  • browser_doctor — CLI, config, persist, headed/DISPLAY, daemon guess. Does not launch Chrome.
  • browser_get_text pattern — regex over page text with two lines of context.
  • browser_wait — load / url / text as well as a selector.

Typical loop:

  1. browser_navigate
  2. browser_snapshot (-i for interactive)
  3. browser_click / browser_fill with @refs
  4. browser_screenshot if you need pixels

Persistence

With persist = true (default), each session saves cookies and localStorage on close and on the CLI's autosave interval. State lives under ~/.agent-browser/, namespaced to mcp-server. Isolated session_ids do not share a restore key.

Headed login once, browser_close or exit the MCP, start again. The next navigate should restore that session.

A killed MCP process may leave the daemon running. browser_doctor reports that. Idle shutdown still saves if persist is on.

Limitations

  • Chromium via agent-browser (Playwright). No search.
  • Headed is ignored until the existing daemon is closed.
  • Snap Chromium on Ubuntu can fail to advertise its DevTools port; prefer agent-browser install's browser or executable_path.
  • Writes (screenshot, pdf, download) must be relative, under /tmp, or under download_dir.
  • Element screenshots take a CSS selector or @ref, plus a trailing :has-text("..."). The selector is checked first, so a miss is an error, not a silent full-viewport shot. Not combinable with full_page.
  • 25s Playwright action timeout is an upstream CLI limit, not this wrapper.

License

MIT

Source: README.md at commit 7d1010f

Tools

0
SourceWeft has not started this package in its sandbox yet, so its tools are not known.

Version history

1
  1. v0.1.0LatestSep 16, 2026

Score

40% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts

    Declare a license in the repository or the registry entry.