Browser Automation

io.github.mindstone由 GitHub 帳號 mindstone 發布v0.2.6更新於 Nov 7, 2026

Browser automation MCP server: navigate, fill forms, click, screenshot, and manage tabs

已驗證STDIO僅桌面瀏覽器自動化檔案與儲存

概覽

AI 產生的概覽

本機 MCP 伺服器,讓助理操作真實可見的瀏覽器:導覽、點擊、填寫表單、截圖,並保留可重複使用的工作階段。

可以做什麼
  • 開啟頁面並在瀏覽歷史中前進後退,等待元素出現或指定時間
  • 透過無障礙快照、截圖、頁面資訊、文字內容與 PDF 儲存來觀察頁面
  • 透過點擊、填寫、逐字輸入、按鍵、捲動、下拉選取、懸停、上傳檔案以及執行頁面 JavaScript 進行互動
  • 管理分頁、關閉瀏覽器,並開啟可見視窗供使用者手動登入
  • 以具名工作階段持久保存瀏覽器狀態,跨多次執行重複使用
適用情境
適合讓助理以使用者看得見、可核准的方式操作一般網站:手動登入、點擊後台頁面、填寫表單、截圖或儲存 PDF,並在之後回到同一個登入工作階段。它刻意比完整的瀏覽器測試工具鏈更精簡。
執行需求
透過 npx(npm 套件)以 stdio 在本機執行,需要 Node.js 20+ 與 npm;agent-browser CLI 會隨相依套件一併安裝,無需另外安裝。不需要 API 金鑰或憑證。選用環境變數:AGENT_BROWSER_SESSION_NAME、AGENT_BROWSER_SHOW_WINDOW、AGENT_BROWSER_AUTOSAVE_INTERVAL_MS、MCP_WORKSPACE_PATH。僅支援桌面端主機。
安裝前請注意
browser_evaluate 會在頁面中執行任意 JavaScript 且預設開啟,應要求主機確認,切勿設為自動核准。Cookie、localStorage 與登入狀態會以工作階段名稱持久保存在磁碟上,建議使用專用工作階段而非日常瀏覽器設定檔。頁面內容與 CLI 錯誤訊息皆不可信,可能含有提示注入。browser_upload 可能觸發立即的遠端上傳,browser_pdf 會寫入本機檔案,兩者皆標示為破壞性操作。建議明確設定 MCP_WORKSPACE_PATH 以控制檔案位置。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Browser Automation,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

@mindstone/mcp-server-browser-automation

[npm version] [License: FSL-1.1-MIT]

Browser control you can watch: open pages, sign in, click around, fill forms, take screenshots, and keep a reusable browser session.

Best for practical web tasks where the user needs to see, approve, or reuse browser state instead of running a full browser-testing stack.

Status

  • Version: 0.2.6 · npm
  • Auth: None (server.json)
  • Tools: 21 (navigation, observation, interaction, sessions, files)
  • Surface: browser-automation
  • Machine-readable: STATUS.json

Why this exists

Microsoft's Playwright MCP is a strong choice for broad browser automation and testing. This connector is deliberately smaller and more visible.

Use it when an assistant needs to work through ordinary websites in a way a person can follow: open a real browser, let the user complete a login, click through admin screens, fill forms, take screenshots, and come back to the same session later. The point is trust and day-to-day usefulness, not exposing every browser-testing capability.

Example interaction

"Open https://example.com, tell me the page title, and take a screenshot."

Tools the host calls:

  1. browser_navigate — opens the URL in the configured browser session.
  2. browser_get_page_info — returns the current URL and page title.
  3. browser_screenshot — captures a PNG screenshot.

Response (trimmed):

json
{  "ok": true,  "url": "https://example.com/",  "title": "Example Domain"}

Requirements

  • Node.js 20+
  • npm
  • Nothing else to install for the CLI: the server ships agent-browser as a dependency.

One-click install

[Add to Cursor] [Add to VS Code] [Add to VS Code Insiders]

After clicking the button, your host will prompt you to fill: AGENT_BROWSER_SESSION_NAME, AGENT_BROWSER_SHOW_WINDOW.

Manual config for Claude Desktop / Claude Code / Goose / Continue.dev (Browser Automation)
json
{  "mcpServers": {    "Browser Automation": {      "command": "npx",      "args": [        "-y",        "@mindstone/mcp-server-browser-automation"      ],      "env": {        "AGENT_BROWSER_SESSION_NAME": "mcp",        "AGENT_BROWSER_SHOW_WINDOW": "true"      }    }  }}

Quick Start

npx

bash
npx -y @mindstone/mcp-server-browser-automation

Or install globally:

bash
npm install -g @mindstone/mcp-server-browser-automationmcp-server-browser-automation

This server uses the agent-browser CLI to control the browser.

Installing agent-browser

Nothing to do: installing this server installs agent-browser with it (pinned to 0.33.2), and the server always runs that copy's native binary directly. No shell and no npx are involved, so this works the same on Windows, macOS and Linux. An agent-browser on your PATH is not used.

Configuration

No API keys or credentials are required. The server communicates with the browser via the agent-browser CLI.

VariableRequiredDescription
AGENT_BROWSER_SESSION_NAMENoSession name for browser persistence (default: mcp)
AGENT_BROWSER_SHOW_WINDOWNoSet to false to run without a visible browser window. Default is visible (true).
AGENT_BROWSER_AUTOSAVE_INTERVAL_MSNoPeriodic session autosave interval in milliseconds (needs agent-browser 0.31.2 or later). Default 0 (off), because each periodic save briefly opens a tab that brings a visible browser window in front of other apps. The session is still saved when the browser closes (browser_close). Any value you set is passed through as-is; an empty or non-numeric value gets the CLI's 30-second default. The agent-browser daemon reads it when it starts, so an already-running daemon keeps its previous setting until it exits (for example after browser_close).
MCP_WORKSPACE_PATHNoWorkspace directory that browser_pdf writes into and browser_upload reads from. Defaults to the system temp directory. See Security notes.

MCP Host Configuration

json
{  "mcpServers": {    "browser-automation": {      "command": "npx",      "args": ["-y", "@mindstone/mcp-server-browser-automation"]    }  }}

Available Tools (21)

Navigation

  • browser_navigate — Navigate to a URL
  • browser_back — Navigate back in browser history
  • browser_forward — Navigate forward in browser history
  • browser_wait — Wait for an element to appear or a specified time

Observation

  • browser_snapshot — Get the page accessibility tree with interactive element references
  • browser_screenshot — Take a screenshot of the current page
  • browser_get_page_info — Get the current page URL and title
  • browser_get_text — Get the text content of the page or a single element
  • browser_pdf — Save the current page as a PDF inside the workspace directory (refuses to overwrite existing files unless overwrite: true)

Interaction

  • browser_click — Click an element using @ref or CSS selector
  • browser_fill — Clear a field and fill it with text
  • browser_type — Type text character by character (real keystrokes)
  • browser_press_key — Press a keyboard key
  • browser_scroll — Scroll the page in a direction
  • browser_select — Select an option from a dropdown
  • browser_hover — Hover over an element
  • browser_upload — Upload workspace files to a file input (regular files only, staged privately before upload)
  • browser_evaluate — Execute JavaScript in the page context (on by default; destructiveHint: true so hosts can require confirmation — see Security notes)

Session Management

  • browser_tabs — List open tabs or switch to a tab
  • browser_close — Close the browser session
  • browser_authenticate — Open a visible browser for manual login

The browser stays open between calls. When the host stops this server (it closes the server's stdin, or sends SIGTERM or SIGINT), a separate process closes the browser and its agent-browser background process, saving the session first, so the host never waits for it. If a close cannot get through within 8 seconds (a page is hanging, say), that process force-stops them, which cannot save the session. The server declares the experimental MCP capability super-mcp/keep-alive, which asks a host that stops idle servers (such as super-mcp) to keep it running until the host itself stops, so an idle pause doesn't close the browser.

Workflow

The typical workflow uses accessibility snapshots for reliable element targeting:

  1. browser_navigate → open a page
  2. browser_snapshot → see interactive elements with @ref IDs
  3. browser_click / browser_fill → interact using @ref references
  4. browser_screenshot → visual verification

Security notes

Browser automation has a large attack surface: the agent-browser CLI controls a real headless browser that loads URLs you pass it, runs page-side JavaScript, and persists cookies and session state across runs. Read this section before deploying.

browser_evaluate runs by default — host confirmation is the gate

browser_evaluate lets the model execute arbitrary JavaScript inside the page context — the security equivalent of giving the model a shell on whatever site it has just navigated to. The tool is registered unconditionally (capability-first); the safeguard is the host's tool-approval layer. The tool is marked destructiveHint: true, so MCP hosts SHOULD require explicit user confirmation before each invocation. Do not configure a host to auto-approve this tool.

URL scheme deny-list

browser_navigate and browser_authenticate accept only http: and https: URLs (plus the special about:blank). Other URL schemes are refused before the underlying agent-browser CLI is invoked:

  • file: — would let pages read local filesystem paths
  • chrome: and chrome-extension: — internal browser pages and installed extensions
  • javascript: — equivalent to eval() against the current document
  • data: — inlined attacker-controlled HTML/JS payloads
  • view-source: — defeats the same-origin policy on rendered content
  • about: — privileged internal pages (about:config, about:cache, about:debugging, …); only about:blank is permitted

Cookie and session persistence

The connector tells agent-browser to use a named, persistent session via AGENT_BROWSER_SESSION_NAME (default value: mcp). All cookies, localStorage data, and any logins performed via browser_authenticate are stored on disk under that session name and reused across runs. Anyone who can read the session storage — the local user, other tools running as the same user, or backups — can also use those logged-in sessions.

To override the session name (for example, to keep separate profiles per project) set AGENT_BROWSER_SESSION_NAME explicitly in the host's MCP server config. To wipe state, close the browser via browser_close and remove the session directory managed by agent-browser.

Recommended deployment posture

  • Run the connector against a separate browser profile — a dedicated AGENT_BROWSER_SESSION_NAME per MCP host. Do not reuse your daily browser profile: the connector reads and overwrites cookies in whichever profile it is pointed at, and a malicious page can ride the existing session of any site you are logged into.
  • Require host confirmation for browser_evaluate — it runs by default; every call executes arbitrary JavaScript in the page context.
  • Require host confirmation for browser_authenticate and any flow that may navigate to authenticated sites — otherwise prompt injection in fetched content can drive the browser at sites the user is logged into.
  • Returned page content is enveloped as untrusted — accessibility snapshots, page text, titles, URLs, tab lists, and browser_evaluate outputs come from arbitrary websites and may contain prompt-injection attempts. The connector wraps them in <untrusted-content source="…"> envelopes (with close-tag breakout escaping) so hosts and models treat them as data, not instructions. Keep that treatment on your side: don't strip the envelopes, and don't let page text alone trigger irreversible actions.

Workspace sandbox and input permissions for file tools

browser_pdf output paths are constrained to a workspace directory: MCP_WORKSPACE_PATH when set, otherwise the system temp directory. Paths are canonicalised before use, so .. traversal, absolute paths outside the workspace, and in-workspace symlinks pointing outside it are all refused before the agent-browser CLI runs. For standalone clients, including clients that do not negotiate files/readModes version 1, browser_upload input reads follow these same workspace restrictions. With negotiated version 1, the host selects a mode for each call: in central mode, input reads use only the host-authorized canonical path described under Host-authorized local inputs; in standalone mode, the standalone restrictions apply. Set MCP_WORKSPACE_PATH explicitly to control exactly where page captures land and, for standalone input reads, which files the model can attach to a page. A MCP_WORKSPACE_PATH that cannot be resolved fails closed: file tools refuse to run rather than fall back to weaker checks.

Both tools are marked destructiveHint: true, so hosts can require user confirmation: browser_upload can trigger an immediate remote upload on pages that submit when the file input changes, and browser_pdf writes a local file.

Additional hardening:

  • Staged file hand-off. Validated files are never re-opened by pathname. browser_upload sources are opened once (O_NOFOLLOW + O_NONBLOCK, so a post-validation leaf-symlink swap fails and a planted FIFO cannot wedge the open), verified to be regular files (directories, devices, and FIFOs are refused), bound to a fresh resolution of the approved path by device+inode (an intermediate-directory swap after validation redirects the resolution and is refused with UPLOAD_SOURCE_CHANGED), and copied into a fresh private staging directory that the CLI consumes. browser_pdf has the CLI write into a fresh private staging directory, then installs the PDF at the requested path: the destination directory's canonical identity is pinned before the CLI runs and re-verified before installing, so an intermediate directory swapped to a symlink mid-call is refused, and exclusive-create semantics refuse a file or symlink planted at the destination leaf instead of writing through it.
  • No silent overwrite. browser_pdf refuses an existing file_path with a FILE_EXISTS error unless the caller explicitly passes overwrite: true. Even then, a destination that is a directory is refused (DESTINATION_IS_DIRECTORY) — the overwrite delete is a bare unlink and never recurses.
  • Enveloped errors. Error output from the agent-browser CLI can contain page-authored text; it is wrapped in <untrusted-content> envelopes (with close-tag breakout escaping) before reaching the model, and timeout errors do not echo the command's argument values.

Licence

FSL-1.1-MIT — Functional Source License, Version 1.1, with MIT future licence. The software converts to MIT licence on 2030-04-08.

Host-authorized local inputs

files/readModes version 1 is an experimental extension used by these connectors, not part of the MCP standard. A compatible host (the app running the connector) decides which input files a tool call may read. The connector opens only the host-approved physical path, after resolving symlinks. The host supplies this permission information with each call; it is not a tool argument you need to set. Missing or invalid permission information, or a file absent from the approved list, stops the read.

Clients that do not negotiate this extension keep the connector's existing standalone file restrictions. This extension changes input-read permissions; existing output destinations, upload formats, size limits and file checks apply.

來源:connectors/browser-automation/README.md,提交 3ae4aa1

工具

0
SourceWeft 尚未在沙箱中啟動過該軟體包,因此其工具未知。

版本歷史

4
  1. v0.2.6最新Nov 7, 2026
  2. v0.2.5Nov 4, 2026
  3. v0.2.4Oct 29, 2026
  4. v0.2.2Sep 16, 2026

評分

已滿足適用檢查項的 40%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分

    請在儲存庫或註冊中心條目中宣告授權條款。