Browser Use
Lets AI do web tasks for you, such as filling forms, searching and extracting data, in the maker’s cloud browsers or on your computer.
Description from the maker (original English)
Control existing signed-in Chrome and Edge tabs through a locally paired extension.
These three are never merged into one score: opinions, measurements and popularity are different things.
We have not written a plain-language summary for this one yet. Below are the facts we read from the registry.
Pick the AI app you use, then copy the settings.
You need
Which app do you use?
Pick your app above. We remember it, so next time the button says “Install in …”.
Open Claude Desktop → Settings → Developer → Edit Config, and paste this into claude_desktop_config.json
{
"mcpServers": {
"browser-attach": {
"command": "npx",
"args": [
"-y",
"@evan_zhong/browser-attach",
"mcp"
]
}
}
}Run this in your terminal
claude mcp add browser-attach -- npx -y @evan_zhong/browser-attach mcpPaste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json
{
"mcpServers": {
"browser-attach": {
"command": "npx",
"args": [
"-y",
"@evan_zhong/browser-attach",
"mcp"
]
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
Paste into .vscode/mcp.json in your project
{
"servers": {
"browser-attach": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@evan_zhong/browser-attach",
"mcp"
]
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
This one runs on your computer, and ChatGPT can only connect to servers on the internet. Pick another app.
Your choice stays on this device in a cookie; no account needed.
These settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.
Runs on your computer; the tool list appears in your AI app after you install it.
We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 7, 2026
The registry name was verified with the GitHub account EvannZhongg, which owns the repo
We have not read this repo from GitHub yet
We have not read this repo from GitHub yet
This one runs on your computer; there is no internet endpoint
Runs on your computer and uses local settings instead
Runs on your computer; we can only read tool lists from internet endpoints
Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.
It passed 1 of 1 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.
The registry does not list a required key, though some servers ask you to sign in on first use.
It runs on your computer. Your AI app starts it when needed, and data does not pass through the maker’s servers (unless it calls an online service itself).
The GitHub repo last changed –, and the latest version (0.33.0) reached the registry 6 days ago.
Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. You also need Node.js on your computer.
In the same category: Browser Use, Chrome DevTools MCP, MCP Server Browser
Servers in the same category from other makers, sorted by stars.
Reading a card:★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi
Lets AI do web tasks for you, such as filling forms, searching and extracting data, in the maker’s cloud browsers or on your computer.
Lets AI use Chrome’s developer tools to inspect pages, find what makes them slow and spot errors. Made by the Chrome DevTools team.
MCP server for browser use access
Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.
English · 简体中文
Drive the Chrome / Edge tabs you already have open and already signed in from an MCP client. BrowserAttach connects to the browser through a locally paired extension, keeps your existing sign-in state, and needs neither a remote debugging port nor a separate automation browser.
npm · Usage guide · Architecture · Agent integration · Test report · Issues · Contributing
file:// tabs after enabling BrowserAttach's Allow access to file URLs setting in the browser's extension details; use the same discovery, claim, observation and input tools.PATH.npm install --global @evan_zhong/browser-attach
browser-attach setup
setup prints a stable extension directory and starts the local Hub. The directory is usually:
%USERPROFILE%\.browser-attach\extension~/.local/share/browser-attach/extensionOpen chrome://extensions or edge://extensions, enable developer mode, choose "Load unpacked" and load that directory. Load it once for every browser profile you want to expose; the extension options page lets you set a recognizable profile name.
Or without a global install:
npx --yes --package=@evan_zhong/browser-attach@latest browser-attach setup
Merge the following into your client's MCP configuration, or see mcp-config.json:
{
"mcpServers": { "browser_attach": { "command": "npx", "args": ["--yes", "--package=@evan_zhong/browser-attach@latest", "browser-attach", "mcp"] } } }
On Windows clients that require a full command extension, use npx.cmd. With a global install you can also configure "command": "browser-attach", "args": ["mcp"]. Restart the MCP client to discover the tools.
@latest selects the package at launch; upgrading an existing pair is coordinated at startup. The first extension load, and pairs still on an older protocol, need one manual extension reload — see local data and upgrades.
Host entry points are collected in agent integration, and the connection parameters, JSON/TOML examples and verification steps are in the setup reference; other clients use the stdio entry above.
The npm package includes an optional browser-attach skill with setup, recovery and cross-site recipes. Copy the whole skills/browser-attach directory to your host's skill location if desired; npm installation does not register it with the host.
browser_discover(kind="browsers") → browser_discover(kind="tabs") to confirm the browser, tab title and URL.browser_claim_tab with the tab_id from discover(kind="tabs") (optional expected_url / expected_title exact guards) to take control and receive this connection's tab_handle.browser_snapshot to get element refs, then click, fill or run other actions.browser_tab_control(action="release"). Use snapshot(diff_since="latest") or action observe:{diff_since:"latest"} for page changes; inspect mode/reset_reason and finish pagination. A full-page refresh is not required after every action.When titles change often, omit expected_title and check the identity returned by claim instead. Elements may be addressed by ref or by a selector re-resolved on every call; design trade-offs: architecture notes.
Claiming and ordinary input never activate a tab or window; call browser_tab_control(action="activate") explicitly when foreground rendering is needed. When an outcome is unknown, observe again first and avoid duplicate submissions. Full parameters, pagination, uploads and input semantics: usage guide.
| Tool | Purpose |
|---|---|
browser_discover | kind=browsers/tabs; discover browser profiles, tab identity and control status |
browser_claim_tab | Exclusively claim a discovered tab |
browser_open_tab / browser_tab_control | Create a tab, optionally claim it with claim:true; explicit release/activate/close |
browser_fetch | Read one HTTP(S) URL in a temporary background tab using the profile's sign-in; text/html/json, optional HTTP status and cursor continuation |
browser_snapshot / browser_read_text | AX snapshot, literal name/value query with actionable refs, and page text |
browser_read_control | Control state, related popups and active/selected options; preserves existing refs |
browser_wait | Read-only checks with uniform expected/actual, pass/fail/unavailable and safe read retry; one top-level condition or checks[] |
browser_click / browser_hover / browser_drag / browser_select_option / browser_type / browser_fill / browser_press_key / browser_scroll | Native/DOM input, pointer hover and drag, option selection, character typing and scrolling |
browser_batch | Run 1–30 click/fill/type/press_key/hover/scroll/select_option/wait steps in one queue; stops on the first failure and returns partial results |
browser_navigate | HTTP(S)/file navigation, back/forward and load waiting; local destinations require file access |
browser_handle_dialog | alert, confirm, prompt |
browser_upload_file | Native file input or an intercepted file chooser |
browser_screenshot | Viewport or full-page PNG with coordinate mapping |
browser_evaluate | Main-page JS evaluation, promise awaiting, bounded results |
browser_logs | Read kind=console/network/navigation with independent cursors; buffered reads survive blank or unresponsive pages |
| Platform | Default data directory |
|---|---|
| Windows | %USERPROFILE%/.browser-attach |
| macOS / Linux | ${XDG_DATA_HOME:-~/.local/share}/browser-attach |
Override it explicitly with the absolute path BROWSER_ATTACH_HOME. The Windows default avoids AppData, which packaged hosts may virtualize; no other host's private cache is searched or merged automatically. The directory holds the pairing configuration, Hub logs and the stable extension copy, and depends on neither the clone location, the client working directory nor the npm cache. If you already use a custom directory, keep using the same environment variable or --config instead of accidentally creating a second pairing under the new default.
A host assembly step that writes the client entry pins the absolute paths of the current Node, CLI and the actual pairing file and sets BROWSER_ATTACH_HOME; it works together with a custom --config. When the MCP launches the Hub it passes the same absolute pairing path and directory, so different launch environments cannot derive a second configuration. See agent integration.
To upgrade, install again with the command from step 1 and reconnect the MCP client. With @latest and a pair on 0.17 or newer the restart is enough; a pair still on an older protocol needs browser-attach stop, a restart and one manual extension reload. Custom pairing paths, ports and extension directories are retained, closed browser profiles update when they next connect, and an older MCP package cannot downgrade a newer Hub or installed extension.
An upgrade waits for extension cleanup and confirms the new version after reload; cleanup or reload failures are reported instead of replaying page actions. Manual reload remains available on the extension options page for recovery, and Hub and extension versions must match for page control. The default port is 47831; choose another port with setup --port when creating a pairing.
MCP client → Node.js stdio MCP → 127.0.0.1 Hub
↕ local pairing Chrome / Edge MV3 extension ↓ chrome.debugger / CDP existing HTTP(S) / authorized file:// tabs
Each MCP connection holds its own control and handles cannot be used across connections. Disconnecting or stopping debugging releases control. The client endpoint requires a Bearer key and rejects web page Origins; the extension verifies a fixed Origin, key and version. browser_evaluate can read and write data with the page's existing sign-in state; a timeout or error may already have had an effect and must not be replayed automatically. No generic CDP tool is exposed.
Logs are collected from claim time, survive navigation and are cleared on release, with bounded buffers that report data_loss on eviction. Buffered reads use the existing claim without requiring a supported or responsive current page; capture changes still require page access. Network logs store lifecycle metadata and available initiators by default; an explicit capture reads bounded, redacted headers/bodies of subsequent XHR/fetch requests without changing caches or intercepting traffic. Navigation requests and commits remain separate obser
Only the beginning is shown; read the rest in the repo