Chrome Bridge vs Noncelogic MCP

A side-by-side look at the Chrome Bridge and Noncelogic MCP MCP servers: transport, auth, tools, quality signals, and the config to install either one in Claude, Cursor, Windsurf or VS Code.

Chrome Bridge logoChrome BridgeBrowser Automation · Local subprocess (stdio)Your real, logged-in Chrome as an MCP server: 60 token-efficient web-dev tools. ChromeOS included.65GreatAuth: no auth requiredNoncelogic MCP logoNoncelogic MCPBrowser Automation · Local subprocess (stdio)Hosted Playwright API for AI agents. Returns a11y trees instead of screenshots.59GoodAuth: not declared

Verdict: choose Chrome Bridge for browser automation work as a local process; choose Noncelogic MCP for browser automation as a local process. You can also run both side by side in one mcpServers block.

Which MCP server should you choose?

Chrome Bridge logoChoose Chrome Bridge when

  • You need dedicated capabilities in the Browser Automation domain.
  • You prefer a local stdio subprocess transport.
  • Its auth model fits you: No auth required.
  • You want tools like get_status, get_tabs, navigate.
Explore Chrome Bridge

Noncelogic MCP logoChoose Noncelogic MCP when

  • You need dedicated capabilities in the Browser Automation domain.
  • You prefer a local stdio subprocess transport.
  • You have the keys it needs: ROVE_API_KEY.
  • You want tools like navigate, interact, extract_schema.
Explore Noncelogic MCP

Feature & specification comparison

Rows where the two servers differ are marked.

SpecChrome Bridge logoChrome BridgeNoncelogic MCP logoNoncelogic MCP
CategoryBrowser AutomationBrowser Automation
Quality signal65/100 · Great59/100 · Good
Install commandConfirmedConfirmed
TransportLocal subprocess (stdio)Local subprocess (stdio)
AuthNo auth requiredNot declared
PricingFreeNot declared
Required env varsNone listedROVE_API_KEY
Verified ownerCommunity listingCommunity listing
GitHub stars70
Directory activity 1 views 0 installs 0 upvotes 3 views 0 installs 0 upvotes
Tools4431

Tools & capabilities

Chrome Bridge tools 44

  • get_statusStatus of the bridge itself, not of a page: call it when a tool you expect is missing or browser commands fail (connected=false: the extension is not reachable, extension_install gives its Chrome Web Store link). Also reports mode (primary/relay), host, port, server and extension versions, js_evaluation (false under --no-js), write_root, read_root, session_tab_id (the implicit tab), owned_tabs (created by this session), uptime_sec. caps_active and caps_available: a missing tool lives in an inactive cap. enable is the only change it makes: it switches caps on for this session, no restart, and lists the tools added. Optional caps: audits (cookie_audit); visual (inject_css, measure_spacing, emulate_media, viewport_resize); perf (animations, frames, perf_trace, screencast, lighthouse, heap_snapshot); network (http_auth, set_geolocation, track_events); storage (get_storage, set_storage, session_fixture); dom (modify_dom, watch_dom, drag_and_drop); files (save_page, manage_downloads, session_record).
  • get_tabsList every open tab with id, url, title, active flag and mine (created by this session). Find a tab_id when the implicit target is not the one you mean. include_windows adds position, size, state and type of each window — needed before moving or tiling. Session tabs gone since the last call come back once in closed_session_tabs with the reason (closed, window_closed, replaced, closed_by_bridge).
  • navigateNavigate a Chrome tab to a URL and wait for the load; DNS and connection errors fail the call. Without tab_id it reuses the tab this session last navigated or created, else opens a new one rather than taking over the active tab. Returns a preview of interactive elements with refs usable in click/type_text/hover, plus the first console errors and failed requests, if any.
  • screenshotScreenshot of the visible viewport only (PNG), at the current scroll position, or one per viewport preset with presets. Read-only. Activates the tab in the background without stealing window focus, then restores the previous tab. Downscaled to ≤1568px: for fine print, element_screenshot with scale.
  • execute_jsRun JavaScript in the page (MAIN world). Requires the extension's "Allow user scripts" toggle; errors explain setup if disabled. Use it when no dedicated tool fits: extract or extract_table read data, query_dom inspects elements, inject_css restyles, and none of them needs the toggle. A promise is awaited up to timeout. A cut result stays valid JSON and says truncated; save_to writes the whole result to disk.
  • clickClick an element by CSS selector or by a ref (n1, n2…) from get_interactives or navigate. A real pointer sequence: it can submit, open a dialog or navigate — use wait_after. Not idempotent; a native confirm() blocks the bridge: handle_dialogs first. Returns page_changed (url, title and DOM deltas: nodes, text, open, expanded, checked, dialogs, focus): the effect, without a screenshot; when the click opens or reveals something, the refs of the visible interactives follow, no get_interactives needed.
  • type_textPut text into an input, textarea or contenteditable, by selector or ref. Replaces the whole value through the native setter (React/Vue controlled inputs register it) and fires input and change. mode=keys emits keydown/input/keyup per character for autocomplete and masked fields: slower, use it only when mode=set leaves the field empty. Returns value_after; mismatch=true means the field did not keep the value: retry with mode=keys.
  • read_pageRead the page as text (default), markdown, raw HTML, or accessibility tree. Read-only. markdown keeps headings, links and tables at a fraction of the HTML cost. Expensive on big pages: HTML on a large table costs tens of thousands of tokens for data you filter anyway — prefer extract_table/extract for repeated content, get_interactives for click targets.
  • get_page_infoPage metadata: title, url, visibility, doctype, charset, meta tags, scripts, stylesheets, links and forms. visibility=hidden means the window is minimized, covered or in the background: the page does not render (screenshots fail) and its timers slow down. dev.server names a dev server (vite, webpack-dev-server, next, nuxt) and dev.overlay carries the compiler message when an error overlay is open: read it before treating the page as valid. For the text use read_page, for specific elements query_dom, for the bridge itself get_status.
  • query_domQuery DOM elements by CSS selector, returning structure, attributes, bounding rect and, with properties, computed styles. Use it when you already have a selector (no match: count 0); to find one, get_interactives or find_text; for the rule that set a style, get_css_styles.
  • get_css_stylesWhy an element looks the way it does: for each CSS property the winning declaration — selector, stylesheet, rule position, !important, @layer, @media — and the ones it overrides, like the Styles panel of DevTools; query_dom gives the computed value, this gives who set it. Read-only, from the CSSOM: stylesheets of another origin without CORS are opaque and listed by href; user-agent styles, @container and @scope rules are not evaluated. properties narrows the output.
  • read_consoleRead console messages captured since page load, incl. uncaught errors and unhandled rejections. clear deletes the messages it returns, hence not read-only; since=cursor reads only newer ones without deleting, and failed requests are in monitor_network.
  • +32 more on the listing page

Noncelogic MCP tools 31

  • navigateNavigate to a URL in a hosted Chromium browser and return the page title and final URL after redirects. Creates a new browser session automatically if no session_id is provided. Use this as the first step in any browser automation workflow. Use stealth mode when visiting public websites that may block automated browsers. Use action_delay_ms to add human-like jitter between subsequent actions in the same session.
  • interactPerform a click or fill action on a page element in an active browser session. Use "click" to click buttons, links, checkboxes, or any clickable element by CSS selector. Use "fill" to type text into input fields, textareas, or contenteditable elements — pass the target CSS selector and the text value in params. Requires an active session created by the navigate tool. Do not use this for navigation — use the navigate tool instead.
  • extract_schemaExtract structured data from a web page according to a JSON schema. Navigates to the given URL, renders the page in a headless browser, and returns data matching your schema definition. Use this instead of navigate + get_a11y_tree when you need specific structured fields (e.g. product name, price, rating) rather than a full page snapshot. Each key in the schema should map to a CSS selector or description of the data to extract.
  • screenshotCapture a PNG screenshot of a web page. Operates in two modes: (1) Pass a session_id to screenshot the current page in an active session — use this when you need to see the visual state after interactions. (2) Pass a url without session_id to take a one-shot screenshot without creating a persistent session — use this for quick visual checks. Returns a URL to the screenshot image. Prefer get_a11y_tree over screenshot when you need to read page content, as it uses 77% fewer tokens.
  • get_a11y_treeGet a structured accessibility tree snapshot of the current page in an active browser session. Returns a hierarchical representation of all visible elements including their roles, names, values, and states — similar to what a screen reader sees. Use this as the primary way to read page content, as it uses 77% fewer tokens than a screenshot. Use this after navigate to understand page structure, find interactive elements by their accessible names, or verify that an action changed the page state. Requires a session created by navigate.
  • close_sessionClose a browser session and release its server-side resources (browser context, memory, and any open pages). Call this when you are done with a browser session to free resources and avoid hitting session limits. If the closed session is the currently active session, the internal session reference is cleared — subsequent tool calls will need a new navigate to create a fresh session.
  • clickClick an element on the page by CSS selector, accessible label or a11y tree ref. Use this to interact with buttons, links, checkboxes, and other clickable elements. In a supervised session, a click that opens a popup makes the popup the current page.
  • fillType text into a form field. By default clears any existing value first, then types the new value.
  • get_textExtract the text content of an element on the page. Useful for reading specific values like prices, headings, or status messages.
  • scrollScroll the page in a given direction, or scroll a specific scrollable element. Useful for loading lazy content or reaching elements below the fold.
  • evaluateExecute arbitrary JavaScript in the browser page context. Returns the result of the expression. Use for advanced DOM queries, custom extraction logic, or page manipulation.
  • list_pagesList the pages open in this session's browser, with page ids, opener, URL, title and status, and which page is current. Popups the page opened appear here. Does not count as a fresh observation.
  • +19 more on the listing page

Ready-to-paste client configs

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.

Chrome Bridge

mcpServers (Claude Desktop / Cursor)
{
  "mcpServers": {
    "chrome-bridge": {
      "command": "npx",
      "args": [
        "-y",
        "chrome-bridge-mcp"
      ]
    }
  }
}

Noncelogic MCP

mcpServers (Claude Desktop / Cursor)
{
  "mcpServers": {
    "mcp-313": {
      "command": "npx",
      "args": [
        "-y",
        "@roveapi/mcp"
      ],
      "env": {
        "ROVE_API_KEY": "YOUR_ROVE_API_KEY_HERE"
      }
    }
  }
}

Frequently asked questions

Chrome Bridge is categorized under Browser Automation and uses a local stdio subprocess. Noncelogic MCP belongs to Browser Automation and uses a local stdio subprocess. Pick Chrome Bridge for browser automation work and Noncelogic MCP for browser automation.

Copy the mcpServers block from the config section on this page into your client's config (for example claude_desktop_config.json or ~/.cursor/mcp.json), then fully restart the client.

Chrome Bridge is listed as free. Auth: no auth required. Noncelogic MCP has no declared pricing — check the project's own site. If a server needs environment variables such as API keys, define them under the env key in your client's MCP config.

Yes. MCP clients support multiple servers: add chrome-bridge and mcp-313 as separate keys in the same mcpServers object, and your assistant will call tools from either one.

On AllMCPs, Chrome Bridge has a quality signal of 65/100 (Great) with 1 views, 0 installs and 7 GitHub stars. Noncelogic MCP has 59/100 (Good) with 3 views, 0 installs and 0 GitHub stars.