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
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
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
- Clear OSI-approved license (MIT).Pass
- Actively maintained (last published 62 days ago).Pass
- Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
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
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
claude mcp add dashi96-chromium-bridge -- npx -y chromium-bridge
{
"mcpServers": {
"dashi96-chromium-bridge": {
"command": "npx",
"args": [
"-y",
"chromium-bridge"
]
}
}
} {
"servers": {
"dashi96-chromium-bridge": {
"command": "npx",
"args": [
"-y",
"chromium-bridge"
]
}
}
} codex mcp add dashi96-chromium-bridge -- npx -y chromium-bridge
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"dashi96-chromium-bridge": {
"type": "local",
"command": [
"npx",
"-y",
"chromium-bridge"
],
"enabled": true
}
}
} openclaw mcp add dashi96-chromium-bridge --command npx --arg -y --arg chromium-bridge
mcp_servers:
dashi96-chromium-bridge:
command: "npx"
args: ["-y", "chromium-bridge"] {
"McpServers": {
"dashi96-chromium-bridge": {
"Transport": "stdio",
"Command": "npx",
"Arguments": [
"-y",
"chromium-bridge"
]
}
}
} assistant mcp add dashi96-chromium-bridge -t stdio -c npx -a -y chromium-bridge
{
"mcpServers": {
"dashi96-chromium-bridge": {
"command": "npx",
"args": [
"-y",
"chromium-bridge"
]
}
}
} 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
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 →
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 →
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.
| Name | Type | Req | Description |
|---|---|---|---|
| selector | string | yes | CSS selector of the element to click (first match) |
| tabId | number | yes | tab 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.
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | what to do; see the tool description for each action's required parameters |
| coordinate | array | – | [x, y] in pixels |
| duration | number | – | seconds for wait (max 10) |
| modifiers | string | – | click modifiers: cmd, ctrl, alt, shift (joined with +) |
| ref | string | – | element ref from browser_read_page/browser_find — alternative to coordinate |
| region | array | – | [x0, y0, x1, y1] for zoom |
| repeat | number | – | repeat count for key |
| scroll_amount | number | – | wheel ticks, default 3 |
| scroll_direction | string | – | for scroll; default down |
| start_coordinate | array | – | drag start for left_click_drag |
| tabId | number | yes | tab id from browser_tabs_list or browser_tab_create |
| text | string | – | text 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.
| Name | Type | Req | Description |
|---|---|---|---|
| clear | boolean | – | clear the buffer after reading |
| pattern | string | – | regex filter over the message text |
| tabId | number | yes | tab 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.
| Name | Type | Req | Description |
|---|---|---|---|
| query | string | yes | visible text, accessible name, or ARIA role to search for |
| tabId | number | yes | tab 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.
| Name | Type | Req | Description |
|---|---|---|---|
| ref | string | – | ref from browser_read_page/browser_find |
| selector | string | – | CSS selector |
| tabId | number | yes | tab id from browser_tabs_list or browser_tab_create |
| value | string | yes | new 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.
| Name | Type | Req | Description |
|---|---|---|---|
| intervalMs | number | – | frame interval in ms, default 800 |
| tabId | number | yes | tab 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.
| Name | Type | Req | Description |
|---|---|---|---|
| path | string | yes | absolute path for the output .gif; overwritten if it exists |
| tabId | number | yes | tab 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.
| Name | Type | Req | Description |
|---|---|---|---|
| code | string | yes | JavaScript source; may use await — the value of the last expression is returned |
| tabId | number | yes | tab 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.
| Name | Type | Req | Description |
|---|---|---|---|
| tabId | number | yes | tab id from browser_tabs_list or browser_tab_create |
| url | string | yes | absolute 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.
| Name | Type | Req | Description |
|---|---|---|---|
| clear | boolean | – | empty the buffer after reading |
| tabId | number | yes | tab id from browser_tabs_list or browser_tab_create |
| urlPattern | string | – | regex 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.
| Name | Type | Req | Description |
|---|---|---|---|
| tabId | number | yes | tab 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.
| Name | Type | Req | Description |
|---|---|---|---|
| filter | string | – | interactive — only clickable/editable elements; default all |
| tabId | number | yes | tab 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.
| Name | Type | Req | Description |
|---|---|---|---|
| height | number | yes | window height, CSS px |
| tabId | number | yes | tab id from browser_tabs_list or browser_tab_create |
| width | number | yes | window 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.
| Name | Type | Req | Description |
|---|---|---|---|
| tabId | number | yes | tab 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.
| Name | Type | Req | Description |
|---|---|---|---|
| url | string | – | URL 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.
| Name | Type | Req | Description |
|---|---|---|---|
| files | array | yes | absolute file paths on the user's machine |
| selector | string | yes | CSS selector of the <input type="file"> |
| tabId | number | yes | tab id from browser_tabs_list or browser_tab_create |
No output schema declared.
No examples provided.
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.