servers / browser-mcp

browser-mcp

communitystdiolocaldestructive capablehealthy

Drive your real, logged-in Chrome from any AI agent (Claude Code, Cursor, VS Code) — works where headless dies. Reads emailed login codes from your Gmail, solves CAPTCHAs, 34 tools. MIT, local-only.


01Tools · 34

How to read this: tool names here are observed from a live tools/list handshake. The Risk label is a heuristic inferred from the tool name (write/destructive verbs), not from executing the tool — a conservative guess, not a verified capability. We never escalate risk from a description. Found one that's wrong? Tell us — we fix on report.

ToolRiskSide effectsApproval
browser_list_tabs
List all open browser tabs with their URLs and titles.
readfalseunknown
browser_screenshot
Take a screenshot of the visible area of the current tab. Returns base64 PNG, or saves to disk if path is provided.
readfalseunknown
browser_get_new_tab
Get the most recently opened tab (useful after clicking links that open new tabs, OAuth popups, etc.).
readfalseunknown
browser_set_date
Robustly set a date input — handles native <input type="date">, masked text inputs (e.g. MM/DD/YYYY), and calendar pickers (MUI, react-datepicker, AntD, Lexical/Meta). Tries native value-set, format-aware typing via Input.insertText, and ARIA-based picker navigation in sequence with read-back verification. Use instead of browser_fill when fill fails or for any input that opens a calendar widget.
writetrueunknown
browser_get_page_content
Get the content of the current page as text or HTML.
readfalseunknown
browser_handle_dialog
Handle JavaScript alert(), confirm(), or prompt() dialogs. Call this BEFORE triggering the action that causes the dialog. Waits for the dialog to appear, then accepts or dismisses it.
unknownunknownunknown
browser_wait
Wait for an element to appear on the page. Supports CSS and text-based selectors.
unknownunknownunknown
browser_solve_captcha
Detect and solve CAPTCHAs on the current page. Auto-detects reCAPTCHA v2/v3, hCaptcha, Cloudflare Turnstile, and FunCaptcha. Tries auto-click first (often clears reCAPTCHA v2 when signed into Google), then returns a screenshot for AI vision analysis, then falls back to asking the user. Returns detection info and solving status.
readfalseunknown
browser_console_logs
Get recent console.log/warn/error messages from the page. Installs a lightweight interceptor on first call. Returns the last N console messages.
readfalseunknown
browser_get_cookies
Get cookies for a specific domain.
readfalseunknown
browser_switch_tab
Switch to a specific browser tab by ID. Get tab IDs from browser_list_tabs or browser_get_new_tab.
readfalseunknown
browser_set_cookies
Set one or more cookies for a domain.
writetrueunknown
browser_list_frames
List all frames (iframes) in the current page with their URLs and indices.
readfalseunknown
browser_execute_script
Execute JavaScript code in the context of the current page. Returns the result.
writetrueunknown
browser_wait_for_network
Wait for a network request to complete. Useful after clicking buttons that trigger API calls — ensures data is loaded before reading the page. Monitors real network traffic via Chrome DevTools Protocol.
unknownunknownunknown
browser_navigate
Navigate the active browser tab to a URL. Reuses the current tab by default (no tab spam). Pass new_tab=true only when you need to keep the current page open.
unknownunknownunknown
browser_fetch
Make an HTTP request from the extension background (NOT subject to CORS). Use this when page-context fetch would be blocked by CORS or CSP. Useful for API calls to Google, Stripe, Slack APIs while on their pages.
readfalseunknown
browser_drop_file
Upload a file by finding a hidden <input type="file"> within a drag-drop zone's subtree (or parent up to 2 levels). Use when browser_upload_file fails because the dropzone has no visible file input. Returns clear error if no input is found anywhere — pure drop-zones without backing inputs require manual handling.
destructivetruetrue
browser_fill
Fill a form input field with a value. Supports CSS selectors AND text-based selectors. Auto-scrolls and focuses the element. Works on CSP-strict sites via Chrome Debugger API. For date inputs use browser_set_date, for autocomplete/combobox use browser_set_combobox.
unknownunknownunknown
browser_select_frame
Execute JavaScript in a specific iframe by frame index. Use browser_list_frames first to find the right index.
readfalseunknown
browser_set_local_storage
Set a localStorage key-value pair on the current page.
writetrueunknown
browser_get_local_storage
Read localStorage from the current page. Pass key for a specific value, or omit for all.
readfalseunknown
browser_dismiss_overlays
Dismiss visible popups, modals, tooltips, banners, and "Are you sure?"-style overlays in one call. Heuristic-based: finds close affordance via aria-label, text content (Skip/Cancel/Ikke nu/Don't show/Got it/Close), or × character button. Use when a flow is interrupted by unexpected dialogs (cookie banners, onboarding tooltips, draft-confirm prompts on Meta Ads, etc.). Returns list of what was dismissed.
readfalseunknown
browser_hover
Hover over an element to trigger tooltips, dropdown menus, or hover states. Supports CSS and text selectors.
unknownunknownunknown
browser_click
Click an element on the page. Supports CSS selectors AND text-based selectors. Auto-scrolls element into view. Uses real mouse events (works on Angular/React SPAs and CSP-strict sites like Google, Stripe). Examples: "button:text(Get started)", "text=Submit", "#my-button", "a.btn-primary"
readfalseunknown
browser_about
Returns Browser MCP info and pre-filled URLs the user can click to submit feature wishes, share use-cases, or report bugs. Call this PROACTIVELY whenever the user (a) mentions a feature they wish existed ("I wish browser-mcp could...", "it would be nice if..."), (b) says something is missing, broken, or unexpected, (c) asks how Browser MCP works or who maintains it, or (d) describes something cool they built with browser-mcp. Pass intent="wish" | "use_case" | "bug" | "info" plus an optional title and body, and offer the returned submit_url to the user. Browser MCP is community-shaped — this tool is how the user contributes back.
readfalseunknown
browser_select_option
Select an option from a dropdown menu. Works with native <select> elements AND custom dropdowns (Angular Material, React Select, etc.). For custom dropdowns: clicks the trigger, waits for options, then clicks the matching option by text. For autocomplete (typing filters options) use browser_set_combobox instead.
unknownunknownunknown
browser_upload_file
Upload a file to a <input type="file"> element on the page. Uses Chrome Debugger API to set files programmatically — no dialog needed. For drag-drop zones without visible file input use browser_drop_file.
writetrueunknown
browser_ask_user
Show an overlay dialog asking the user to perform an action or provide information (credentials, 2FA, CAPTCHA, OAuth consent). Can include input fields for the user to fill in. Returns user responses.
readfalseunknown
browser_scroll
Scroll the page to an element or by pixel amount. Useful for reaching elements below the fold.
unknownunknownunknown
browser_set_combobox
Set value(s) on an autocomplete/combobox input. Handles the click → type query → wait for filtered listbox → click option flow as one MCP call. Supports multi-select (e.g., Languages on Meta Ads). Use when browser_select_option fails because options render lazily after typing.
writetrueunknown
browser_close_tab
Close a browser tab by ID. Only tabs owned by the current session can be closed.
unknownunknownunknown
browser_extract_token
Navigate to a provider's API settings page so you can read its API token from the page.
readfalseunknown
browser_press_key
Press a keyboard key (Enter, Tab, Escape, ArrowDown, etc.). Useful for submitting forms, navigating dropdowns, closing dialogs. Supports modifier keys (ctrl, alt, shift, meta).
unknownunknownunknown

02Install & source
npx -y @agent360/browser-mcp
npx
npx -y @agent360/browser-mcp@latest
npx

03Access granted
Execute code · writeRead calendar · write

The access this server can exercise, inferred from its verified tools — not a declared OAuth scope.


05Provenance & freshness
sourcesGitHub repo search [p4]
last_checked2026-08-17 11:25Z
next_check2026-08-17 14:10Z
cadenceevery 3h
verifiedtools_list:passed handshake:passed metadata:passed tools_list:passed handshake:passed metadata:passed tools_list:passed handshake:passed metadata:passed tools_list:passed
index_statusindex9 unique facts >= 5

06Badge

Add the “as seen on MCPExplorer” badge to your README. browser-mcp MCP — as seen on mcpexplorer.com

[![browser-mcp MCP — as seen on mcpexplorer.com](https://mcpexplorer.com/badge/browser-mcp.svg)](https://mcpexplorer.com/servers/browser-mcp)

Next step

This is one server. A loadout combines the right servers, governance, and proven plays for a whole job — assembled deliberately, not tool-dumped.

Explore loadouts →