Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

io.github.dashi96/chromium-bridge

NPM · CHROMIUM-BRIDGE · SCANNED SEP 20

MCP bridge between Chromium browsers (Arc, Vivaldi, Brave) and Claude Code: browser automation

Available components

0 this week 84 Trust /100
Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →

Supply Chain Security98
  • No malware found by supply-chain analysis.Pass
  • No known CVEs affecting this package version or its production dependencies.Pass
  • No install/post-install scripts declared.Pass
  • 41 of 107 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency45
Schema Quality & AI Usability82
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 2115 tokens (~117/item across 18 items; 18 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management90
  • Stability observed for 27 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 100% of tool parameters carry a description.Pass
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • We read all 18 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
  • An AI judge read all 18 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Install

How do I install the io.github.dashi96/chromium-bridge MCP server?

io.github.dashi96/chromium-bridge runs locally as an npm package, launched with npx -y chromium-bridge. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

npm · chromium-bridge

# add to Claude Code
claude mcp add dashi96-chromium-bridge -- npx -y chromium-bridge
// .cursor/mcp.json
{
  "mcpServers": {
    "dashi96-chromium-bridge": {
      "command": "npx",
      "args": [
        "-y",
        "chromium-bridge"
      ]
    }
  }
}
// .vscode/mcp.json
{
  "servers": {
    "dashi96-chromium-bridge": {
      "command": "npx",
      "args": [
        "-y",
        "chromium-bridge"
      ]
    }
  }
}
# add to Codex CLI
codex mcp add dashi96-chromium-bridge -- npx -y chromium-bridge
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "dashi96-chromium-bridge": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "chromium-bridge"
      ],
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add dashi96-chromium-bridge --command npx --arg -y --arg chromium-bridge
# ~/.hermes/config.yaml
mcp_servers:
  dashi96-chromium-bridge:
    command: "npx"
    args: ["-y", "chromium-bridge"]
// ~/.netclaw/config/netclaw.json
{
  "McpServers": {
    "dashi96-chromium-bridge": {
      "Transport": "stdio",
      "Command": "npx",
      "Arguments": [
        "-y",
        "chromium-bridge"
      ]
    }
  }
}
# add to Vellum
assistant mcp add dashi96-chromium-bridge -t stdio -c npx -a -y chromium-bridge
// mcp.json
{
  "mcpServers": {
    "dashi96-chromium-bridge": {
      "command": "npx",
      "args": [
        "-y",
        "chromium-bridge"
      ]
    }
  }
}
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 20 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 87 to 90. That category is still filling its 30-day observation window: 26 days of observed history at the previous scan, 27 at this one. The score rises as the window fills, whether or not the server changes.

  • 18 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 80 to 83. That category is still filling its 30-day observation window: 24 days of observed history at the previous scan, 25 at this one. The score rises as the window fills, whether or not the server changes.

  • 16 Sept 26 −3
    • Stability: pass → 0.77 functional
  • 15 Sept 26 0
    • Stability: 0.97 → pass security
  • 14 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 93 to 97. That category is still filling its 30-day observation window: 28 days of observed history at the previous scan, 29 at this one. The score rises as the window fills, whether or not the server changes.

  • 12 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 87 to 90. That category is still filling its 30-day observation window: 26 days of observed history at the previous scan, 27 at this one. The score rises as the window fills, whether or not the server changes.

  • 10 Sept 26 +1
    • Security disclosure: unverified → fail functional
  • 9 Sept 26 −3
    • Security disclosure: fail → unverified functional
    • Stability: pass → 0.80 functional
Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 20 Sept 2026 · Analysed npm/chromium-bridge@0.5.3

Provenance No attestation

The registry publishes no build provenance for this version, so there is nothing to verify.

Result No attestation
Ecosystem npm

Background: How many MCP packages publish verified provenance →

Dependencies 107 packages
Packages resolved 107
Stale 33
No linked repository 8
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 18 exposed · ~2,115 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
browser_click ~113

Click an element via DOM .click() by CSS selector. Mutating. Works without the debugger — including on pages where CDP attach fails — but only fires the click handler, with no hover/focus/mousedown chain. If the page ignores it (custom dropdowns, canvas UI), use browser_computer left_click for a real mouse event.

NameTypeReqDescription
selectorstringyesCSS selector of the element to click (first match)
tabIdnumberyestab id from browser_tabs_list or browser_tab_create

No output schema declared.

No examples provided.

browser_computer ~409

Mouse, keyboard, and screenshots in a browser tab via the DevTools protocol; the tab does not need to be active (first use shows Chrome's "started debugging" info bar — that is expected). Actions: screenshot (viewport image in CSS pixels — its coordinates map 1:1 to click coordinates), zoom (magnified region [x0,y0,x1,y1]), left_click, right_click, double_click, triple_click, hover, left_click_drag (start_coordinate→coordinate), type (insert text at the current focus), key (space-separated combos, e.g. "cmd+a Backspace"), scroll (scroll_direction+scroll_amount), scroll_to (ref), wait (duration, max 10 s). Clicks, typing, and key presses are real input events and mutate page state; screenshot/zoom/hover/wait are read-only. Positions come from coordinate:[x,y] or from a ref returned by browser_read_page/browser_find — refs are more reliable than eyeballed coordinates.

NameTypeReqDescription
actionstringyeswhat to do; see the tool description for each action's required parameters
coordinatearray[x, y] in pixels
durationnumberseconds for wait (max 10)
modifiersstringclick modifiers: cmd, ctrl, alt, shift (joined with +)
refstringelement ref from browser_read_page/browser_find — alternative to coordinate
regionarray[x0, y0, x1, y1] for zoom
repeatnumberrepeat count for key
scroll_amountnumberwheel ticks, default 3
scroll_directionstringfor scroll; default down
start_coordinatearraydrag start for left_click_drag
tabIdnumberyestab id from browser_tabs_list or browser_tab_create
textstringtext for type, or key combos for key

No output schema declared.

No examples provided.

browser_console_messages ~125

Read a tab's console output (log/warn/error), newest 200 entries. Read-only unless clear=true, which empties the buffer after reading. Messages are captured only from the first time a CDP tool touches the tab — nothing is recorded retroactively; reload the page after attaching to capture its startup logs. Use pattern (regex) to cut noise.

NameTypeReqDescription
clearbooleanclear the buffer after reading
patternstringregex filter over the message text
tabIdnumberyestab id from browser_tabs_list or browser_tab_create

No output schema declared.

No examples provided.

browser_find ~104

Find elements by visible text, accessible name, or role, and return their refs for use with browser_computer and browser_form_input. Read-only. Cheaper than reading the whole accessibility tree when you know what you are looking for. An empty result means nothing matched — not an error.

NameTypeReqDescription
querystringyesvisible text, accessible name, or ARIA role to search for
tabIdnumberyestab id from browser_tabs_list or browser_tab_create

No output schema declared.

No examples provided.

browser_form_input ~164

Set a form control's value directly in the DOM: input/textarea/contenteditable (text), select (option value or label), checkbox/radio ("true"/"false"). Fires input/change events so frameworks pick the value up. Mutating. Target by CSS selector or ref. Reliable for plain form fields; rich editors (CodeMirror and the like) and custom comboboxes often ignore it — for those, click the field with browser_computer and type.

NameTypeReqDescription
refstringref from browser_read_page/browser_find
selectorstringCSS selector
tabIdnumberyestab id from browser_tabs_list or browser_tab_create
valuestringyesnew value; for checkbox/radio pass "true" or "false"

No output schema declared.

No examples provided.

browser_gif_start ~105

Start recording the tab into an animated GIF: a frame every intervalMs (default 800 ms); on long recordings the frame rate halves automatically so the whole scenario fits in ~80 frames. One recording per tab at a time; starting twice is an error. Nothing is saved until browser_gif_stop.

NameTypeReqDescription
intervalMsnumberframe interval in ms, default 800
tabIdnumberyestab id from browser_tabs_list or browser_tab_create

No output schema declared.

No examples provided.

browser_gif_stop ~89

Stop the recording started by browser_gif_start and write the animated GIF to an absolute path on the user's machine. Mutating: creates or overwrites that file. Errors if no recording is active or no frames were captured.

NameTypeReqDescription
pathstringyesabsolute path for the output .gif; overwritten if it exists
tabIdnumberyestab id the recording was started on

No output schema declared.

No examples provided.

browser_javascript ~117

Run arbitrary JavaScript in the page context and return the resolved value (await is supported; runs with the page's own permissions). Can read and mutate anything on the page — treat as mutating unless the code is clearly read-only. Never call alert/confirm/prompt: modal dialogs freeze all automation. Requires the CDP debugger.

NameTypeReqDescription
codestringyesJavaScript source; may use await — the value of the last expression is returned
tabIdnumberyestab id from browser_tabs_list or browser_tab_create

No output schema declared.

No examples provided.

browser_navigate ~105

Navigate an existing tab to a URL, or move through its history with url="back" / url="forward". Mutating: replaces the page currently shown in that tab. Returns when navigation is committed; dynamic pages may still be rendering — verify with browser_page_text or a screenshot before interacting.

NameTypeReqDescription
tabIdnumberyestab id from browser_tabs_list or browser_tab_create
urlstringyesabsolute URL, or "back"/"forward" for history

No output schema declared.

No examples provided.

browser_network_requests ~114

List a tab's network requests (method, URL, status), newest 200. Read-only unless clear=true, which empties the buffer. Captured only from the first CDP touch of the tab — reload the page after attaching to see its full traffic. urlPattern (regex) filters by URL.

NameTypeReqDescription
clearbooleanempty the buffer after reading
tabIdnumberyestab id from browser_tabs_list or browser_tab_create
urlPatternstringregex filter over the URL

No output schema declared.

No examples provided.

browser_page_text ~87

Get a tab's title, URL, and visible text (up to 80 kB) from the live DOM. Read-only and cheap — prefer it over a screenshot whenever layout does not matter. Content rendered to canvas or images is invisible to it; use a browser_computer screenshot for those.

NameTypeReqDescription
tabIdnumberyestab id from browser_tabs_list or browser_tab_create

No output schema declared.

No examples provided.

browser_read_page ~110

Accessibility tree of the page with a ref id per element; use refs with browser_computer (clicks, scroll_to) and browser_form_input. filter=interactive returns only clickable/editable elements — a compact map of the page. Read-only. Refs go stale after navigation or heavy DOM changes; call again to refresh.

NameTypeReqDescription
filterstringinteractive — only clickable/editable elements; default all
tabIdnumberyestab id from browser_tabs_list or browser_tab_create

No output schema declared.

No examples provided.

browser_resize_window ~99

Resize the browser window that contains the tab to width×height CSS pixels. Mutating and user-visible: it resizes the user's real window. Use for reproducing responsive layouts or framing a recording, and consider restoring the original size afterwards.

NameTypeReqDescription
heightnumberyeswindow height, CSS px
tabIdnumberyestab id from browser_tabs_list or browser_tab_create
widthnumberyeswindow width, CSS px

No output schema declared.

No examples provided.

browser_status ~59

Check whether the browser extension is connected to the bridge. Returns {connected: boolean}. Read-only, no side effects. Call it first in a session, or when other browser_* tools fail, to distinguish "extension not connected" from page-level errors.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

browser_tab_close ~68

Close a browser tab by id. Destructive: the tab and its unsaved page state are gone, with no undo. Close only tabs this session created, unless the user explicitly asked to close theirs.

NameTypeReqDescription
tabIdnumberyestab id from browser_tabs_list or browser_tab_create

No output schema declared.

No examples provided.

browser_tab_create ~80

Open a new browser tab and return its id and windowId. Mutating: adds a tab to the user's real browser and focuses it. Use when a fresh page is needed; to work with a page that is already open, find its id via browser_tabs_list instead.

NameTypeReqDescription
urlstringURL for the new tab (blank by default)

No output schema declared.

No examples provided.

browser_tabs_list ~59

List all open browser tabs with their id, title, and URL. Read-only. Use it to pick a tabId for the other browser_* tools; prefer reusing an existing tab over creating a new one when the target page is already open.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

browser_upload_file ~108

Put local files into an <input type="file"> selected by CSS selector, as if the user picked them in the file dialog (fires change). Mutating. files are absolute paths on the user's machine; the input must already exist in the DOM.

NameTypeReqDescription
filesarrayyesabsolute file paths on the user's machine
selectorstringyesCSS selector of the <input type="file">
tabIdnumberyestab id from browser_tabs_list or browser_tab_create

No output schema declared.

No examples provided.

Common questions

What is the io.github.dashi96/chromium-bridge MCP server?

io.github.dashi96/chromium-bridge is an MCP server listed in the public MCP registry as io.github.dashi96/chromium-bridge. MCP bridge between Chromium browsers (Arc, Vivaldi, Brave) and Claude Code: browser automation. This page covers its npm package (chromium-bridge).

Is the io.github.dashi96/chromium-bridge MCP server safe to use?

io.github.dashi96/chromium-bridge scores 84 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 20 September 2026. It declares no install or post-install scripts. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the io.github.dashi96/chromium-bridge MCP server expose?

io.github.dashi96/chromium-bridge exposes 18 tools: browser_status, browser_tabs_list, browser_tab_create, browser_tab_close, browser_navigate, and 13 more. Their descriptions and schemas cost roughly 2,115 tokens of context every time the server is loaded.

Is the io.github.dashi96/chromium-bridge MCP server still maintained?

io.github.dashi96/chromium-bridge is still listed as active in the MCP registry. We last reached this channel on 20 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

What licence is the io.github.dashi96/chromium-bridge MCP server under?

io.github.dashi96/chromium-bridge declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.