A side-by-side look at the Agent Webbridge and Chrome MCP MCP servers: transport, auth, tools, quality signals, and the config to install either one in Claude, Cursor, Windsurf or VS Code.
Verdict: choose Agent Webbridge for browser automation work as a local process; choose Chrome MCP for browser automation as a local process. You can also run both side by side in one mcpServers block.
navigate, find_tab, evaluate.CHROME_MCP_TOKEN, CHROME_MCP_EXTENSION_DIR.tabs_list, screenshot, get_text.Rows where the two servers differ are marked.
| Spec | ||
|---|---|---|
| Category | Browser Automation | Browser Automation |
| Quality signal | 59/100 · Good | 64/100 · Good |
| Install command | Confirmed | Confirmed |
| Transport | Local subprocess (stdio) | Local subprocess (stdio) |
| Auth | Not declared | Not declared |
| Pricing | Not declared | Not declared |
| Required env vars | None listed | CHROME_MCP_TOKENCHROME_MCP_EXTENSION_DIR |
| Verified owner | Community listing | Community listing |
| GitHub stars | 12 | 6 |
| Directory activity | 1 views 0 installs 0 upvotes | 2 views 0 installs 0 upvotes |
| Tools | 15 | 22 |
| Full listing | View Agent Webbridge | View Chrome MCP |
navigateOpen a URL in a new or existing tabfind_tabLocate a tab by URL / titleevaluateRun JavaScript in the page, return the resultsnapshotAccessibility tree with stable `@e` element refsclickClick an element by `@e` ref (synthetic DOM click)trusted_clickReal mouse click (CDP, `isTrusted`) for pages that ignore `clickfillSet native inputs **and** `contenteditable` rich text fieldsuploadProgrammatically assign files to `<input type="file">file_chooser_interceptSuppress native OS file picker dialogs (Finder/Explorer) during programmatic uploadscreenshotCapture full-page or element screenshot directly to disksave_as_pdfSave the page as a PDFnetworkCapture network requests (`start`, `stop`, `list`, `detail`)tabs_listList open browser tabs.screenshotCapture a screenshot (page or element). Default is JPEG (quality 70) at CSS-pixel size, which is several times smaller than PNG and reads fine. Pass format:"png" for lossless, quality 1-100 for JPEG, scale 2 for device pixels on a Retina display or 0.5 to shrink.get_textGet visible text of the page or an element.get_htmlGet HTML of the page or an element. Output is capped (see maxBytes) and cut at a tag boundary; narrow it with `selector` rather than raising the cap when you can. Password field values are always blanked.snapshotAccessibility snapshot: interactive elements with refs to target by `ref` (more reliable than guessing CSS selectors). Pass diff:true to get only what changed since the last snapshot of this tab - far cheaper in a click/read loop. Password fields appear as secret:true with no value.page_watchSave a local page checkpoint and compare it later. Actions: create (name), compare (watchId), list, delete. Stores accessibility labels and state, never form values. Site allowlist still applies.get_cookiesCookies for the tab's URL (or url); values need --enable-cookie-values.storageRead/write localStorage (or sessionStorage). op: get|set|remove|clear.wait_forWait for a selector or text to appear/disappear.extract_linksExtract anchors from the page or a subtree. dedupe=true collapses links sharing an href (nav/footer noise); limit caps the count.read_as_markdownRead the page (or subtree) as readable markdown.frames_listList the tab's frames (the top document plus every iframe the extension can reach), with each frame's id and URL. Use it when a selector that should match does not: the element is probably in one of these frames, and you can then pass frameId (or allFrames:true) to act inside it.Paste either block (or both) into your client config, e.g. claude_desktop_config.json or ~/.cursor/mcp.json. We only show a config when the install command is confirmed.
{
"mcpServers": {
"agent-webbridge": {
"command": "npx",
"args": [
"-y",
"agent-webbridge"
]
}
}
}
{
"mcpServers": {
"chrome-mcp": {
"command": "npx",
"args": [
"-y",
"mcp-browser-extension@latest"
],
"env": {
"CHROME_MCP_TOKEN": "YOUR_CHROME_MCP_TOKEN_HERE",
"CHROME_MCP_EXTENSION_DIR": "YOUR_CHROME_MCP_EXTENSION_DIR_HERE"
}
}
}
}