What browserctl-mcp does
The browserctl-mcp MCP server gives an MCP client control of a browser session that is already used by a person. It supports Chrome, Edge, and Brave through a browser extension, allowing an agent to work with the profile’s existing logins, cookies, extensions, and 2FA state. It does not require a separately downloaded browser or a Chrome launch with --remote-debugging-port.
The server exposes tools for starting and checking the local session, navigating to URLs, listing and selecting tabs, reading page content, finding controls, clicking, typing, filling forms, selecting options, sending keys, scrolling, hovering, uploading files, waiting for page conditions, evaluating code, and taking screenshots. Page snapshots represent controls with stable-looking references such as @ref_1, while action results report how the target was resolved and whether the page changed.
This fits the 📂 Browser Automation category, especially for agents that need to operate authenticated websites, inspect pages, or complete multi-step browser workflows.
How it works
The MCP client communicates with the browserctl-mcp MCP server over stdio. The server sends requests to a local bridge daemon on port 8765. That daemon communicates over WebSocket with the browserctl extension, which drives the selected browser tab through browser development interfaces and the DOM.
A typical interaction begins with navigation or tab selection, followed by a snapshot or page-reading tool. The agent then targets an element by reference, CSS selector, visible text, or index. If a target resolves ambiguously, the operation reports the candidates instead of choosing one; stale references are rejected rather than redirected to a replacement element.
The initial tool set is kept small. Additional profiles, including network, cookies, storage, console, CDP, recording, tabs, and advanced tools, can be loaded when needed with browser_load_tools and reviewed with browser_list_available_tools.
Setup and configuration
Install the MCP entry with npx -y -p browserctl-mcp browserctl-mcp. The standard configuration uses a local stdio command, with client-specific configuration files for applications such as Claude Desktop, Cursor, VS Code, Codex, Gemini CLI, and Windsurf. On Windows, clients that do not invoke shell commands may need to run npx through cmd /c.
The extension must also be copied to a fixed directory using the package’s browserctl extension-path --copy command. Enable developer mode on the browser’s extensions page, load the printed folder as an unpacked extension, then open the browserctl toolbar control and select Connect. The bridge daemon and extension must be available for browser operations to work.
Tools and capabilities
Core tools include:
browser_status, browser_start, and browser_stop for session and daemon state.
browser_navigate and browser_tabs for URLs and tab management.
browser_snapshot, browser_read_page, browser_find, browser_extract, browser_get_content, and browser_get_property for inspection.
browser_click, browser_type, browser_fill_form, browser_select_option, browser_press_key, browser_scroll, browser_hover, and browser_file_upload for interaction.
browser_wait_for, browser_take_screenshot, browser_evaluate, and browser_action for waiting and utility operations.
browser_load_tools and browser_list_available_tools for optional tool profiles.
Limitations and notes
The browserctl-mcp MCP server depends on a locally running bridge and a connected extension, so it is intended for local browser control rather than a standalone remote browser service. Its actions operate on the connected browser profile, which means that profile access also determines what authenticated pages and account data an agent can reach.
The README documents Node.js version 18 or newer. Browser actions may fail when the extension is disconnected, the bridge is unavailable, or a target reference is stale or matches more than one element. Screenshots are available, but the normal page-reading workflow uses compact control descriptions instead of a screenshot or a complete accessibility tree.