dev-browser-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| DEV_BROWSER_BIN | No | Override the bundled dev-browser CLI path | |
| DEV_BROWSER_BROWSER | No | Named daemon browser instance | default |
| DEV_BROWSER_CONNECT | No | auto / true to attach to Chrome, or a CDP URL | |
| DEV_BROWSER_TIMEOUT | No | Script timeout in seconds | 30 |
| DEV_BROWSER_HEADLESS | No | true to launch Chromium without a window | |
| DEV_BROWSER_IDLE_TIMEOUT | No | Close idle launched browsers, e.g. 5m | |
| DEV_BROWSER_SKIP_CHROMIUM | No | true to skip postinstall / auto Chromium setup | |
| DEV_BROWSER_IGNORE_HTTPS_ERRORS | No | true for self-signed certs |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| resources | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| dev_browser_runA | Run a sandboxed JavaScript script against a persistent browser (SawyerHood/dev-browser). This is the main tool. Prefer it whenever you need more than a single navigation/click/fill. Sandbox is QuickJS, not Node.js: no require/import/fs/fetch/process. Available: browser.getPage(nameOrId), browser.newPage(), browser.listPages(), browser.closePage(name) saveScreenshot(buf, name), writeFile(name, data), readFile(name), console.*, setTimeout Pages are Playwright Page objects (goto, click, fill, locator, evaluate, screenshot, snapshotForAI, getByRef, getByRole, waitForSelector, waitForURL, cua, domCua). Write small scripts. Named pages persist. End with console.log of the next-decision state. On local dev servers use { waitUntil: "domcontentloaded" }. |
| dev_browser_list_pagesA | List named pages and open browser tabs: [{id, url, title, name}]. |
| dev_browser_page_openA | Get or create a named page (or attach to a tab by targetId from list_pages) and return url/title. |
| dev_browser_close_pageB | Close and unregister a named page. |
| dev_browser_gotoA | Navigate a named page to a URL. Prefer waitUntil=domcontentloaded for local dev servers. |
| dev_browser_snapshotB | Return an AI-friendly accessibility snapshot. Use refs like e12 with getByRef in a later run, or pass snapshotRef to click/fill/type. |
| dev_browser_screenshotA | Take a PNG screenshot of a named page and return the image plus the saved path under ~/.dev-browser/tmp/. |
| dev_browser_clickC | Click an element by CSS selector or snapshotRef from dev_browser_snapshot (e.g. e12). |
| dev_browser_fillB | Fill an input by CSS selector or snapshotRef. Replaces existing value. |
| dev_browser_typeC | Type into an element character by character, by CSS selector or snapshotRef. |
| dev_browser_evaluateB | Evaluate JavaScript in the page. Pass a browser-side expression or statements. |
| dev_browser_wait_for_selectorC | Wait until a selector reaches the given state on a named page. |
| dev_browser_statusA | Show the dev-browser daemon status, idle timeout, and managed browsers. |
| dev_browser_browsersA | List daemon-managed browser instances and their named pages. |
| dev_browser_stopA | Stop the dev-browser daemon and close every browser it launched. |
| dev_browser_installA | Install the Playwright Chromium build used by daemon-launched browsers. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| script-api | Sandbox globals, Playwright helpers, and recommended script patterns. |
TDQS
Scored across 16 tools
Each tool has a distinct purpose: run sandboxed scripts, manage pages, navigate, interact, take snapshots, evaluate JS, etc. Only minor overlap between fill and type, but descriptions clarify the difference. No ambiguity that would cause an agent to misselect.
All tools use the 'dev_browser_' prefix with snake_case, but a few names break the consistent verb_noun pattern: 'dev_browser_browsers' is a noun, and 'dev_browser_page_open' reverses the order. Most others follow 'verb_noun' like 'close_page', 'list_pages', making it mostly consistent but not perfect.
16 tools is well-scoped for a browser automation MCP server. It covers page lifecycle, navigation, interaction, scripting, and daemon management without feeling bloated or incomplete. Each tool earns its place.
The tool set covers core browser automation tasks: navigation, clicks, fills, screenshots, snapshots, evaluation, waits, and page management. Missing are explicit tools for options selection, hover, or keyboard actions, but these can be handled via the 'dev_browser_run' sandbox script. Minor gap, but overall comprehensive.