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.

MCP Browser

NPM · MCPBROWSER · SCANNED SEP 22

Browser automation using the user's Chromium session — JS execution, auth, and anti-bot support.

Available components

0 this week 83 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
  • A known CVE affects extract-zip, but no fixed version has been published, so there is nothing to upgrade to. View diagnostics → Partial
  • No install/post-install scripts declared.Pass
  • 55 of 174 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency45
Schema Quality & AI Usability80
  • 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 1967 tokens (~196/item across 10 items; 10 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
  • Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • All 1 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
  • An AI judge read all 11 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 MCP Browser server?

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

npm · mcpbrowser

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

  • 22 Sept 26 0
    • Security disclosure: unverified → fail functional
  • 21 Sept 26 +1
    • Security disclosure: fail → unverified functional
  • 19 Sept 26 −3
    • Stability: pass → 0.80 functional
  • 18 Sept 26 +1
    • Stability: 0.97 → pass security
  • 16 Sept 26 +1

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

  • 14 Sept 26 +1

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

  • 12 Sept 26 −3
    • Stability: pass → 0.80 functional
  • 10 Sept 26 +1
    • Stability: 0.97 → pass security
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 22 Sept 2026 · Analysed npm/mcpbrowser@0.4.6

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 →

Vulnerabilities 2 findings
ID CVE Severity Vector Fix available
GHSA-7pqw-9j4j-h8q3 CVE-2026-19693 high CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:H/A:H no
GHSA-jmr9-qjv8-65gv CVE-2026-56876 high CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:N no

Background: What a vulnerability scan can and cannot prove →

Dependencies 174 packages
Packages resolved 174
Stale 55
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 10 exposed · ~1,763 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_element ~208

Click buttons, links, or any element on a browser-loaded page. Use when: you need to navigate a website, submit a form, press a button, follow a link, or interact with any clickable UI element. Targets by CSS selector or visible text. Returns updated page HTML after click. PREREQUISITE: Page must be loaded with browser_fetch_webpage first.

NameTypeReqDescription
detectFormsbooleanScan page for forms after click and return structured form data (fields, selectors, submit buttons, orphaned inputs). Only applies when returnHtml=true. Set to true when you need to fill or interact…
selectorstringCSS selector for the element to click (e.g., '#submit-btn', '.login-button')
textstringText content to search for if selector is not provided (e.g., 'Sign In', 'Submit')
urlstringyesThe URL of the page (must match a previously fetched page)
NameTypeReqDescription
currentUrlstringyesURL after click
fallbackAttemptobjectPresent when fallbackUsed is true
fallbackUsedbooleanyesTrue when native click timed out and JS fallback ran
formsarrayDetected forms with fields, selectors, and metadata (when returnHtml is true)
htmlstringyesPage HTML if returnHtml was true, null otherwise
messagestringyesStatus message
nativeAttemptobjectyes
nextStepsarrayyesSuggested next actions
orphanedFieldsarrayInput/select/textarea elements not inside any <form> (when returnHtml is true)
postClickWaitobjectPost-click wait metadata
recommendedPluginsarrayDetected site-specific plugins available for this domain
scrollableAreasarrayScrollable containers on the page. Pass a selector to browser_scroll_page's 'container' parameter to scroll within a specific area.
statusstringyesOverall click status after native and fallback attempts
totalFieldCountnumberTotal number of form fields found on the page

No examples provided.

browser_close_tab ~62

Close a browser tab to free resources. Use when: you are done with a page and want to release memory, or need to reset session state for a hostname. Uses exact hostname match.

NameTypeReqDescription
urlstringyesThe URL whose hostname tab should be closed
NameTypeReqDescription
hostnamestringyesHostname that was closed
messagestringyesSuccess message
nextStepsarrayyesSuggested next actions

No examples provided.

browser_detect_forms ~95

Scan a browser-loaded page and return all forms as structured JSON — fields, types, validation rules, submit buttons, and orphaned inputs. Use when: you need to understand a form before filling it, discover what fields exist on a page, or map form structure for automation. PREREQUISITE: Page must be loaded with browser_fetch_webpage first.

NameTypeReqDescription
urlstringyesURL of the already-loaded page
NameTypeReqDescription
formsarrayyesArray of detected forms with fields and metadata
nextStepsarrayyesSuggested next actions
orphanedFieldsarrayyesInput/select/textarea elements not inside any <form>
summarystringyesHuman-readable summary of detected forms
totalFieldCountnumberyesTotal number of fields found

No examples provided.

browser_execute_javascript ~125

Run JavaScript on a browser-loaded page and get the result. Use when: you need to extract structured data from a page, manipulate the DOM, read page state, run custom queries on page content, or perform UI actions that CSS selectors cannot reach. Returns the script result as JSON, text, or void. PREREQUISITE: Page must be loaded with browser_fetch_webpage first.

NameTypeReqDescription
scriptstringyesJavaScript source code to execute in page context
urlstringyesThe URL of the page (must match a previously fetched page)
NameTypeReqDescription
currentUrlstringyesURL after execution
errorobjectError object when script throws or times out
executionTimeMsnumberyesScript execution duration
nextStepsarrayyes
recommendedPluginsarrayDetected site-specific plugins available for this domain
resultstringSerialized result of the script
truncatedbooleanyesTrue if result was capped to size limit
typestringyesType of the returned result
urlChangedbooleanyesTrue if page URL changed during execution

No examples provided.

browser_fetch_webpage ~305

Load any URL and return its content using a real browser with full JavaScript execution. Use whenever a webpage needs to be loaded — whether to read content, interact with a web app, or access any HTTP/HTTPS resource. Connects to the user's existing browser session with all cookies, logins, and SSO sessions available automatically. Handles JavaScript rendering, authentication, and anti-bot protection. Prefer this over generic HTTP fetch for authenticated or JS-heavy pages.

NameTypeReqDescription
detectFormsbooleanScan page for forms and return structured form data (fields, selectors, submit buttons, orphaned inputs). Set to true when you need to fill or interact with forms.
formatstringFormat for the returned content. 'html' (default) returns cleaned HTML. 'text' returns normalized visible text. 'markdown' returns readable Markdown. For 'text' and 'markdown' without a selector, MCP…
selectorstringCSS selector to extract a specific DOM subtree instead of the full page. Prefer semantic content regions like 'main', 'article', or '[role="main"]' to capture the primary content while skipping navig…
urlstringyesThe URL to fetch
NameTypeReqDescription
currentUrlstringyesFinal URL after any redirects
formsarrayDetected forms with fields, selectors, and metadata
htmlstringyesPage content in the requested format (cleaned HTML by default; visible text or Markdown when 'format' is set)
nextStepsarrayyesSuggested next actions
orphanedFieldsarrayInput/select/textarea elements not inside any <form>
recommendedPluginsarrayDetected site-specific plugins available for this domain
scrollableAreasarrayScrollable containers on the page. Pass a selector to browser_scroll_page's 'container' parameter to scroll within a specific area.
totalFieldCountnumberTotal number of form fields found on the page

No examples provided.

browser_get_current_html ~295

Re-read HTML from an already-loaded page without reloading it. Use when: you need to check page state after a click or form fill, re-extract content from the current page, or get updated HTML after dynamic changes. Much faster than browser_fetch_webpage since it skips navigation. PREREQUISITE: Page must be loaded with browser_fetch_webpage first.

NameTypeReqDescription
detectFormsbooleanScan page for forms and return structured form data (fields, selectors, submit buttons, orphaned inputs). Set to true when you need to fill or interact with forms.
formatstringFormat for the returned content. 'html' (default) returns cleaned HTML. 'text' returns normalized visible text. 'markdown' returns readable Markdown. For 'text' and 'markdown' without a selector, MCP…
selectorstringCSS selector to extract a specific DOM subtree instead of the full page. Prefer semantic content regions like 'main', 'article', or '[role="main"]' to capture the primary content while skipping navig…
urlstringyesThe URL of the page (must match a previously fetched page)
NameTypeReqDescription
currentUrlstringyesCurrent page URL
formsarrayDetected forms with fields, selectors, and metadata
htmlstringyesPage content in the requested format (cleaned HTML by default; visible text or Markdown when 'format' is set)
nextStepsarrayyesSuggested next actions
orphanedFieldsarrayInput/select/textarea elements not inside any <form>
recommendedPluginsarrayDetected site-specific plugins available for this domain
scrollableAreasarrayScrollable containers on the page. Pass a selector to browser_scroll_page's 'container' parameter to scroll within a specific area.
totalFieldCountnumberTotal number of form fields found on the page

No examples provided.

browser_navigate_history ~107

Go back or forward in browser history. Use when: you clicked a link and need to return to the previous page, or want to go forward after going back. PREREQUISITE: Page must be loaded with browser_fetch_webpage first.

NameTypeReqDescription
directionstringNavigation direction: 'back' to go to previous page, 'forward' to go to next page
urlstringyesURL of the already-loaded page (identifies which tab to navigate)
NameTypeReqDescription
currentUrlstringyesURL after navigation
directionstringyesNavigation direction used
htmlstringPage HTML content after navigation (null if returnHtml=false)
nextStepsarrayyesSuggested next actions
previousUrlstringyesURL before navigation

No examples provided.

browser_scroll_page ~313

Scroll within a browser-loaded page. Automatically detects scrollable containers inside SPAs (e.g., ADO, Jira, Gmail) where the main content scrolls inside an inner div rather than the window. Use when: you need to see more content below the fold, bring an element into view before clicking, scroll to a specific section, or navigate long pages. Supports scroll by direction, to a CSS selector, or to absolute coordinates. PREREQUISITE: Page must be loaded with browser_fetch_webpage first.

NameTypeReqDescription
amountnumberPixels to scroll in the specified direction. Default: 500 (roughly half a viewport).
containerstringCSS selector of a specific scrollable container to scroll within. Use when the page has multiple scroll areas (e.g., a sidebar + main content). Get available selectors from the scrollableAreas field…
directionstringDirection to scroll. Use with 'amount' parameter.
selectorstringCSS selector of element to scroll into view. When provided, ignores direction/amount and scrolls until the element is visible.
urlstringyesThe URL of the page (must match a previously fetched page)
xnumberAbsolute horizontal scroll position. Use with 'y' for precise positioning.
ynumberAbsolute vertical scroll position. Use with 'x' for precise positioning.
NameTypeReqDescription
currentUrlstringyesCurrent page URL
nextStepsarrayyesSuggested next actions
pageHeightnumberyesTotal scrollable page height
pageWidthnumberyesTotal scrollable page width
scrollXnumberyesNew horizontal scroll position in pixels
scrollYnumberyesNew vertical scroll position in pixels
scrollableAreasarrayScrollable containers detected on the page. Pass a selector to the 'container' parameter to scroll within a specific area.
viewportHeightnumberyesVisible viewport height
viewportWidthnumberyesVisible viewport width

No examples provided.

browser_take_screenshot ~137

Capture a screenshot of a browser-loaded page as PNG. Set fullPage=true to capture the entire scrollable page in one shot — this avoids multiple scroll+screenshot cycles. Only use fullPage=false when you specifically need just the current viewport (rare). Use when: you need to see what a page looks like, analyze visual layout, view charts/images/graphs, debug UI issues, or when HTML alone is insufficient. Returns base64-encoded PNG. PREREQUISITE: Page must be loaded with browser_fetch_webpage first.

NameTypeReqDescription
urlstringyesThe URL of the page (must match a previously fetched page)
NameTypeReqDescription
currentUrlstringyesCurrent page URL
mimeTypestringyesImage MIME type (image/png)
nextStepsarrayyesSuggested next actions
screenshotBase64stringyesBase64-encoded PNG screenshot

No examples provided.

browser_type_text ~116

Type text into input fields on a browser-loaded page. Use when: you need to fill a form, enter a search query, type into a text box, or input data into any editable field. Supports filling multiple fields in a single call. PREREQUISITE: Page must be loaded with browser_fetch_webpage first.

NameTypeReqDescription
fieldsarrayyesArray of fields to fill. Each field specifies a selector and text to type.
urlstringyesThe URL of the page (must match a previously fetched page)
NameTypeReqDescription
currentUrlstringyesURL after typing
htmlstringyesPage HTML if returnHtml was true, null otherwise
messagestringyesSuccess message
nextStepsarrayyesSuggested next actions

No examples provided.

Common questions

What is the MCP Browser server?

MCP Browser is listed in the public MCP registry as io.github.cherchyk/mcpbrowser. Browser automation using the user's Chromium session, JS execution, auth, and anti-bot support. This page covers its npm package (mcpbrowser).

Is the MCP Browser server safe to use?

MCP Browser scores 83 out of 100 on VerifyMCP. We recorded 2 known advisories against it as of 22 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 MCP Browser server expose?

MCP Browser exposes 10 tools: browser_fetch_webpage, browser_execute_javascript, browser_click_element, browser_type_text, browser_close_tab, and 5 more. Their descriptions and schemas cost roughly 1,763 tokens of context every time the server is loaded.

Is the MCP Browser server still maintained?

MCP Browser is still listed as active in the MCP registry. We last reached this channel on 22 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 MCP Browser server under?

MCP Browser declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.