In-depth architectural comparison of the BrowserTap MCP and Gecko MCP MCP servers. Compare execution transports, security boundaries, tool capabilities, quality scores, and ready-to-paste client installation snippets for Claude, Cursor, Windsurf, and VS Code.
At a Glance & Executive Verdict
BrowserTap MCP
Browser Automation · Local stdio
Quality: 53/100 (Good) | Auth: No auth required
Gecko MCP
Browser Automation · Local stdio
Quality: 51/100 (Good) | Auth: No auth required
Verdict Summary: Choose BrowserTap MCP if you need specialized Browser Automation tools running via a local process. Choose Gecko MCP if your workspace requires Browser Automation integration with local subprocess execution. Both servers can be configured concurrently in your client's mcpServers manifest.
Which MCP Server Should You Choose?
Choose BrowserTap MCP when:
You need dedicated capabilities in the Browser Automation domain.
You prefer local stdio subprocess transport architecture.
Your security boundary fits: No auth required (Free / Open Source).
report `package_version`, `bridge_version`, `extension_version`, `protocol_version`, connection state, ports, tabs, and the required recovery action. A missing bridge listener is started automatically when spawning is enabled; `restart_bridge_required=true` means a bridge that is still running must…
get_automation_profile
inspect whether the current MCP process uses `lab` or `safe`.
set_automation_profile
switch the current MCP process between `lab|safe`; the override is not persisted and does not reload the extension.
list_tabs
list connected tabs under `data.tabs`, including their full session handles and `browser` fields. Answers while another tool is still running; `default_session_id` is this request's snapshot of the MCP process default and `default_session_settled=true`. Parallel agents should still pass an explicit…
list_all_tabs
Ready-to-Paste Client Configurations
Paste either (or both) of these JSON server blocks into your client config file (e.g. claude_desktop_config.json or ~/.cursor/mcp.json).
BrowserTap MCP is categorized under Browser Automation and uses a local stdio subprocess. In contrast, Gecko MCP belongs to Browser Automation using local stdio subprocess. Select BrowserTap MCP when you need capabilities focused on browser automation and Gecko MCP when you require tools for browser automation.
*(no tab needed)* list every open tab, including `chrome-extension://` pages that `list_tabs` hides. Those never become sessions, so they have no session id; drive them with `cdp_command(tab_id=...)`.
switch_tab
set this MCP process's *target* tab for later calls. A `url_pattern` must match exactly one tab; if several match, select one with its full `session_id`. A `browser` filter matching multiple profiles also requires an explicit `session_id`. It does **not** raise the tab or focus the browser: `activa…
activate_tab
bring a tab to the foreground and focus its window. This is the explicit way to raise a tab, and the only one that does not involve approving physical input. Check `on_screen` in the reply: BTAP first asks Windows to restore a minimised browser, but `on_screen=false` means visibility still could no…
open_url
navigate the current tab. Global behavior remains `dismiss`; lab automatically accepts beforeunload on configured shell/IDE hosts. If the extension's `navigate` route is unavailable on a heavy SPA, BTAP falls back to `Page.navigate`. A CDP result with `isDownload=true` returns `{type:"download",sta…
download_file
download an HTTP(S) URL through Chrome's native download manager, using that browser profile's cookies and authenticated session. It waits by default and returns `status="completed"` plus a verified absolute `path`; interrupted downloads return `failed`, while a timeout or `wait=false` returns `in_…
open_new_tab
open a background tab in this MCP process's selected browser/profile, unless `session_id` or `client_id` selects another. Creates a unique `operation_id` and waits a bounded time for exact session/generation registration; pass `active=true` for foreground work. Returns `{operation_id,tab_id,session…
close_tabs
*(no tab needed)* accept native numeric tab ids or full `client:tabId` session ids, including `chrome-extension://` tabs. The default `only_if_agent_owned=true` requires the `owner_id` returned by `open_new_tab` and verifies the current lifecycle generation before closing, so pre-existing user tabs…
scan_page
read the page as simplified HTML or text. Returns `links` mapping each `#rN` ref in the content to its absolute URL, and `offscreen` + `hint` when content was left outside the viewport. A background tab may report viewport height zero; ordinary DOM/text/API work still continues there, and only visu…
+39 more tools listed on main page
Gecko MCP Tools (36)
list_tabs
List all open tabs (title, URL, browserId, active, pinned).
open_tab
Open a new tab at a URL; **returns the new tab's `browserId`** so you can target it.
get_active_tab
Return the active tab's title, URL and browserId.
navigate_tab
Navigate an existing tab to a URL.
close_tab
Close a tab.
read_page
Read a tab's content as clean Markdown (or HTML / accessibility tree). Output is capped (default 25 KB) to protect the context.
find
Fast element locator** — search a page server-side by visible text and/or tag; returns a compact list of ready-to-use CSS `selector`s (~1 KB) instead of the whole HTML. Use it to find a button/link/field, then act on the selector.
snapshot
Structured page map: Markdown with inline `fp:` refs + an element selector map — locate elements without grepping HTML, then act via a `ref`.
screenshot
Capture a screenshot of a tab (viewport or full page).
launch_floorp
Ensure Floorp is running — launches it if the API isn't reachable (Windows).
launch
Start any Firefox-based browser (Firefox, LibreWolf, Zen…) with Marionette enabled so gecko-mcp can drive it.
click
Click an element by CSS selector **or a `ref` from `snapshot`**; auto-scrolls it into view first.