MCP.so
登录

Browser MCP Server

@Agent360dk

基本信息

分类

浏览器自动化

传输方式

stdio

作者

Agent360dk

提交者

Gustav Louv

关于 Browser MCP Server

Drive a real, logged-in Chrome browser from an AI agent. Runs on your machine and asks for human help with authentication or CAPTCHA challenges it cannot complete.

Browser MCP Server 配置

使用下面的配置,将此服务器添加到你的 MCP 客户端。

{
  "mcpServers": {
    "browser-mcp": {
      "command": "npx",
      "args": [
        "@agent360/browser-mcp"
      ]
    }
  }
}

Browser MCP Server 工具

40

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.

Get the content of the current page as text or HTML.

Read EVERY row of a long or virtualised list by scrolling its container until no new rows appear. Use this instead of browser_get_page_content whenever a page shows a repeating list longer than the viewport — mail lists (Outlook, Gmail), invoice/billing tables, search results, transaction histories. Those UIs keep only ~7 rows in the DOM at a time, so a single page read returns a sliver and looks complete. Pass the CSS selector of one repeating row (e.g. '[role="option"]', 'tr', '[role="listitem"]'); the scrollable ancestor is found automatically. Returns deduplicated row text plus reached_end so you know whether you saw the whole list.

Take a screenshot of the visible area of the current tab. Returns base64 PNG, or saves to disk if path is provided.

Execute JavaScript in the current page. IMPORTANT: the parameter is `code` (NOT `script` — though that alias is accepted), and it must be an EXPRESSION, not statements: use an IIFE `(() => { ...; return x; })()`. Top-level `return` is a syntax error (the handler wraps code in parentheses).

True double-click on an element (two trusted press/release pairs with escalating clickCount). Use for open-item actions (calendar events, file lists) where two single clicks would trigger inline-rename instead (e.g. OWA month view).

Right-click an element (trusted CDP mouse events) to open page-level context menus (web apps like OWA/Google Docs render their own). Note: Chrome's NATIVE context menu does not open via CDP — only in-page menus.

ESCAPE HATCH: Click at raw viewport coordinates (CSS pixels) with fully trusted mouse events. Use when a visible button resists every selector strategy (Azure portal dialogs, Knockout-bound divs, canvas UIs): take a screenshot, read the button's position, click its center. Combine with browser_screenshot for coordinates.

RECOVERY: Force-detach and re-attach the Chrome debugger on the current tab. Use when interactive tools (click/fill/press_key) start timing out or reporting ghost-attach ("Debugger attach failed ... ghost") while list_tabs still works — faster than reloading the extension.

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"

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.

Press a keyboard key (Enter, Tab, Escape, ArrowDown, etc.). Useful for submitting forms, navigating dropdowns, closing dialogs. Supports modifier keys (ctrl, alt, shift, meta).

Scroll the page to an element or by pixel amount. Useful for reaching elements below the fold.

Wait for an element to appear on the page. Supports CSS and text-based selectors.

Hover over an element to trigger tooltips, dropdown menus, or hover states. Supports CSS and text selectors.

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.

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.

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.

Upload a file when browser_upload_file fails. Two strategies: (1) finds a hidden <input type="file"> in the target's subtree or up to 2 ancestor levels; (2) if there is no input at all, intercepts the NATIVE OS file-chooser — pass the selector of the button that opens the dialog, and the file is supplied programmatically without the dialog ever appearing. Strategy 2 handles sites like Google Ads that never put a file input in the DOM.

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.

Arm automatic handling of the next JavaScript alert/confirm/prompt on the active tab, then return immediately. Call this BEFORE the click that opens the dialog — a dialog freezes the tab, so nothing can be clicked once it is on screen. Pass wait=true only when the dialog is already opening.

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.

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.

List all open browser tabs with their URLs and titles.

Get cookies for a specific domain.

Read localStorage from the current page. Pass key for a specific value, or omit for all.

Set one or more cookies for a domain.

Set a localStorage key-value pair on the current page.

Get recent console.log/warn/error messages from the page. Installs a lightweight interceptor on first call. Returns the last N console messages.

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.

List all frames (iframes) in the current page with their URLs and indices.

Execute JavaScript in a specific iframe by frame index. Use browser_list_frames first to find the right index.

Get the most recently opened tab (useful after clicking links that open new tabs, OAuth popups, etc.).

Switch to a specific browser tab by ID. Get tab IDs from browser_list_tabs or browser_get_new_tab.

Close a browser tab by ID. Only tabs owned by the current session can be closed.

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.

Navigate to a provider's API settings page so you can read its API token from the page.

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.

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.

Self-diagnosis + feedback in one call. Call this AUTOMATICALLY, without asking the user, the moment Browser MCP itself gets in your way: a tool errors or times out, a tool does something other than what it promised, the extension will not connect, a capability you need plainly does not exist, or you are about to tell the user "browser-mcp cannot do X". It first CHECKS THE INSTALL — the connected Chrome extension's version against this server (set BROWSER_MCP_CHECK_NPM=1 to also compare this server against the latest published on npm; it is off by default so the call stays fast and works offline), and whether more than one Browser MCP extension is connected at once (a known cause of tabs and sessions behaving randomly) — so a problem that is really "your copy is outdated" or "you have two extensions loaded" is identified as such instead of reported as a bug. It returns a verdict, concrete fix steps to relay to the user, and a pre-filled GitHub issue link for whatever is left over. Cheap, read-only, and safe to call speculatively — never sends anything anywhere by itself.

概览

What is Browser MCP?

Browser MCP gives AI agents (Claude Code, Cursor, VS Code agent mode) control of your real, logged-in Chrome browser — with your cookies, sessions, and 2FA — so it works on CAPTCHA, 2FA, and anti-bot sites where headless tools get blocked. It is built for developers who need to automate web tasks that require an authenticated human browser.

How to use Browser MCP?

Install the MCP server by running npx @agent360/browser-mcp install, then load the Chrome extension from ~/.browser-mcp/extension/ via chrome://extensions with Developer mode enabled. Alternatively, install from the Chrome Web Store and run npx @agent360/browser-mcp install --skip-extension to configure Claude Code.

Key features of Browser MCP

  • 34 browser control tools (navigation, interaction, tabs, data, CAPTCHA solving)
  • ~80% reCAPTCHA checkbox auto-solve with human fallback
  • Multi-session support with color-coded tab groups (up to 10 concurrent sessions)
  • Human-in-the-loop overlay for 2FA, CAPTCHA, and credential input
  • 9 built-in provider integrations for token extraction (Stripe, HubSpot, Slack, etc.)
  • MIT licensed, free, and 100% local — nothing leaves your machine

Use cases of Browser MCP

  • Operate web platforms that have no API (e.g., LinkedIn, Reddit, dashboards)
  • QA your own web application end-to-end using a real browser session
  • Automate workflows that require 2FA or CAPTCHA bypass by reusing your logged-in browser
  • Extract API tokens from provider dashboards without manual copy-paste

常见问题

1

How does Browser MCP differ from Playwright MCP?

Browser MCP uses your real Chrome with existing logins and cookies, supports multi-session with tab groups, includes human-in-the-loop tools, and has built-in provider integrations. Playwright MCP uses a headless browser that must log in every time and has no human fallback.

2

How does Browser MCP handle CAPTCHAs?

It auto-detects reCAPTCHA v2/v3, hCaptcha, Turnstile, and FunCaptcha. It can auto-click the checkbox (~80% success with Google login), use AI vision for grid selection, or fall back to asking the human via an overlay dialog.

3

Is Browser MCP free and does it send data anywhere?

Yes, it is MIT licensed and free. All processing is local — nothing leaves your machine. The extension connects to the MCP server via WebSocket on localhost.

4

How do I update Browser MCP?

The MCP server updates automatically via `npx @agent360/browser-mcp@latest`. The extension updates automatically if installed from the Chrome Web Store; if loaded unpacked, re-run `npx @agent360/browser-mcp install` and reload the extension in Chrome.

5

What are the runtime requirements?

You need Chrome (or a Chromium-based browser) and Node.js to run the `npx` command. No additional authentication is required — it uses your existing Chrome session.

评论

浏览器自动化 分类下的更多 MCP 服务器