Mmcp.market

Chrome Bridge MCP server

by frsorrentino·io.github.frsorrentino/chrome-bridge·v1.17.0

Your real, logged-in Chrome as an MCP server: 59 token-efficient web-dev tools. ChromeOS included.

A85/100grade A
What users say
No reviews yet
Be the first
Safety scan
A85/100

full report

Adoption
Growing

4 stars117 downloads/wk

Reviews

Write one

Nobody has reviewed Chrome Bridge yet.

If you have run it, two minutes of your experience saves the next person an afternoon.

Chrome Bridge tools (59, 12 write)

write = sends, deletes, buys or posts

Read from the package source without running it. The installed server may list more.

  • assert

    Assert a page condition, polling until timeout: element exists/visible (optionally with count or containing text), text on page, tab url/title. Patterns: substring, or "/…/" for regex. Recorded flows replay it as a test.

  • auditwrite action

    One-call page audit, pick the kinds: accessibility, keyboard (tab order and focus issues), SEO, security headers, broken links,

  • click

    Click an element by CSS selector or by a ref (n1, n2…) from get_interactives or navigate. A real pointer sequence: it can submit,

  • clipboardwrite action

    Read or write the system clipboard (text). Activates the tab first.

  • cookie_audit

    Cookie and consent-banner audit: clears this site's cookies, reloads, records cookies and third-party requests BEFORE consent,

  • create_tabwrite action

    Open a new tab, optionally at a URL, and make it the implicit target of later commands in this session.

  • dismiss_overlays

    Dismiss cookie banners/modal overlays: OneTrust, Cookiebot, Usercentrics, then generic heuristic. Idempotent.

  • drag_and_dropwrite action

    Drag an element onto another. html5 = DragEvent+DataTransfer; pointer = pointer/mouse events (sortable libraries).

  • element_screenshot

    Screenshot cropped to one element or to a viewport region (PNG), optionally enlarged. Read-only.

  • emulate_media

    Make the page believe it runs elsewhere, until reset or reload: prefers-color-scheme, prefers-reduced-motion, print mode,

  • execute_jswrite action

    Run JavaScript in the page (MAIN world). Requires the extension's "Allow user scripts" toggle; errors explain setup if disabled.

  • extract

    Read repeated non-tabular structures — product cards, list items, search results — as one record per item:

  • extract_table

    Read a real <table> as JSON: thead cells become keys, each row an object. Read-only.

  • fill_form

    Batch fill form fields with React-compatible events. Handles input, select, checkbox, radio, and textarea.

  • find_setting

    Where is a setting in an unknown admin panel: follows the panel's menu links (same origin) until a page contains the keyword and

  • find_text

    Find text on the page: parent selector, context, visibility, position per match. Attaches nearby interactive elements (with refs for click/type_text/hover) for the first visible match.

  • full_page_screenshot

    Full-page capture by scrolling: stitched segments of ~2 viewports (≤1568px), or one image per viewport with stitch=false.

  • get_frames

    List frames (main + iframes) with frameId, parent, URL — for the frame_id parameter of DOM tools.

  • get_interactives

    List actionable elements (buttons, links, inputs, [role], [onclick]) with ready-to-use CSS selector, label, position, flags. Prefer this over dumping HTML to discover selectors.

  • get_page_info

    Get page metadata: meta tags, scripts, stylesheets, links, and forms

  • get_status

    Check bridge status: extension connection, server mode (primary/relay), port, version

  • get_storage

    Read localStorage, sessionStorage or cookies of the current origin (type=all for every one). Read-only.

  • get_tabs

    List every open tab with id, url, title, active flag and mine (created by this session). Read-only. Find a tab_id when the implicit

  • handle_dialogs

    Auto-accept/dismiss future JS dialogs (alert/confirm/prompt), logging them. reset restores native dialogs and returns the log.

  • handoff

    Hand the browser to the user for what only a person can do — 2FA, CAPTCHA, login, a choice — and wait: a banner in the page shows your

  • hover

    Hover over an element (mouseenter/mouseover), by CSS selector or ref.

  • http_auth

    Set/clear credentials for HTTP Basic/Digest auth dialogs (browser-wide, in-memory only).

  • http_request

    HTTP request sent from the browser, with the logged-in user's cookies: fetches what a server-side request gets a login page for

  • inject_css

    Inject a CSS rule into the page. Stays until the next navigation or reload, and re-injecting the same id

  • manage_downloads

    List downloads, start one, or wait for the newest to finish. Files land in the browser Downloads folder, not on the server.

  • measure_spacing

    Measure the gap, overlap and distance in CSS pixels between two elements, with their margins and paddings.

  • modify_dom

    Change an element in the live DOM: setAttribute, removeAttribute, addClass, removeClass, setStyle,

  • monitor_network

    Monitor network requests. source=page: XHR/fetch hook (installed on first call); source=browser: all requests incl. static assets; source=websocket: connections and messages. format=har exports HAR 1.2.

  • move_tab

    Move an existing tab into another window (chrome.tabs.move), keeping id, history and page state; works on chrome-untrusted://

  • navigate

    Navigate a Chrome tab to a URL. Returns a preview of interactive elements with refs usable in click/type_text/hover.

  • network_ruleswrite action

    Network interception, browser-wide, survives reloads until cleared: block, redirect, set/remove headers, stub a synthetic body, or record real API responses and replay them with forced errors/latency (local helper; from HTTPS pages the stub host must be trusted).

  • press_keywrite action

    Send a key to the focused element (or to selector, focusing it first) as a real keydown/keypress/keyup

  • query_dom

    Query DOM elements by CSS selector, returning structure, attributes, bounding rect, and computed styles.

  • read_console

    Read console messages captured since page load, incl. uncaught errors and unhandled rejections.

  • read_form

    Read a form as the user filled it — label, type, value, checked/selected, required-but-empty, browser validity — to check it against the

  • read_page

    Read the page as text (default), markdown, raw HTML, or accessibility tree. Read-only. markdown keeps headings, links and

  • save_page

    Save the full page (DOM, styles, images) as an MHTML archive file on the server filesystem.

  • screenshot

    Screenshot of the visible viewport only (PNG), at the current scroll position, or one per viewport preset with presets. Read-only.

  • screenshot_diff

    Visual regression: save a named baseline (viewport, element, or a PNG such as the design mockup) and compare later — changed-pixel % and a red-highlighted diff; or compare_urls: production vs staging in this tab, pixels plus text diff, logged-in pages included. Baselines are in-memory (lost on service worker restart).

  • scroll

    Scroll. action=to: once to element/coordinates; action=until: repeatedly until element visible, network idle, or no new content (infinite scroll).

  • session_fixture

    Snapshot localStorage, sessionStorage and cookies of the current origin into a named fixture (a logged-in state, usually),

  • session_record

    Record the commands of this session as a replayable jsonl (chrome-bridge replay --file <path>); observe what the user does in a tab ("watch how I do it") into the same format plus a readable procedure, never recording sensitive values; export a recording as a Playwright test for CI. Replays target the tab they navigate.

  • set_geolocationwrite action

    Override navigator.geolocation with fixed coordinates (page-level patch). reset restores native.

  • set_storagewrite action

    Write, delete or clear a localStorage/sessionStorage key, or a cookie with its path, domain and expiry.

  • tab_action

    Tab lifecycle: close, activate, reload, back, forward, discard, mute, duplicate, close_session (only tabs this session created).

  • tile_windows

    Tile Chrome windows over one monitor in equal parts with no gap. Only Chrome windows. The monitor is the one of a

  • track_events

    Decode the tracking beacons the page fired (GA4, Meta Pixel, Google Ads, TikTok, LinkedIn, Pinterest, Microsoft Ads, GTM, Hotjar, Clarity)

  • type_textwrite action

    Put text into an input, textarea or contenteditable, by selector or ref. Replaces the whole value through the

  • upload_filewrite action

    Set a file on input[type=file] from the server filesystem via DataTransfer (max 10MB).

  • viewport_resize

    Resize the Chrome **window** to a preset (mobile 375x812, tablet 768x1024, desktop 1440x900) or explicit dimensions;

  • wait_for

    Block until a condition holds: element, text, function (JS expression; needs the "Allow user scripts" toggle),

  • watch

    Keep watching a page in the background — "tell me when the pipeline is green / the Approve button appears / this number changes" —

  • watch_dom

    Watch DOM mutations (MutationObserver). First call installs the watcher; later calls read accumulated mutations.

  • window_layoutwrite action

    Save the current window arrangement under a name, restore, list or delete. save overwrites silently. Window ids do not survive

Public scan report

scanner v0.1.5 · 2026-09-19 · same rubric, same numbers if you re-run it

1 medium
  • Code scan40 source files scanned20/25
  • Live reliabilityno gateway calls yet and no remote to proben/a
  • Tool poisoningtools not inspected (local package is not executed); not countedn/a
  • Auth qualitylocal package, no credentials required12/15
  • Maintenancelast push 4 days ago15/15
  • Maintainer identityregistry namespace matches repository owner; GitHub account older than a year8/10

Findings (1)

  • mediumeval / new Function usedexec.eval
    extension/service-worker.js: … let fn; try { fn = new Function(`return (${userCode});`); } catch …
Overall 85/100. Components that don't apply are left out of the denominator. Any critical finding is an F.RubricAppeal a findingJSON

Install directly

Runs npx -y chrome-bridge-mcp on your machine. Read the scan report first; the gateway never runs local packages.

claude mcp add chrome-bridge -- npx -y chrome-bridge-mcp
Add to Cursor

Chrome Bridge: common questions

Is Chrome Bridge MCP server safe?
Yes, by our scan: it is graded A (85/100). Read the Chrome Bridge safety report
How do I install Chrome Bridge?
It runs on your machine. Copy the Claude Code, Claude Desktop or Cursor config from the install section.
Does Chrome Bridge need an API key?
Not as far as the registry entry and our scan can tell: no credentials are declared or required.
Is Chrome Bridge maintained?
The last commit was 5 days ago (2026-09-16). The latest release is v1.17.0.
What can I use instead of Chrome Bridge?
Servers from other publishers that do the same job: jCodemunch MCP server.

Alternatives to Chrome Bridge

Same job from other publishers: the closest match first, then the best rated.

  • jCodemunch MCP
    Token-efficient code exploration via tree-sitter AST parsing. 70+ languages, 86-99% token savings.
    A

More from frsorrentino