In-depth architectural comparison of the Wavexis MCP and Firefox Devtools 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
Wavexis MCP
Browser Automation · Local stdio
Quality: 59/100 (Good) | Auth: No auth required
Firefox Devtools MCP
Browser Automation · Local stdio
Quality: 65/100 (Great) | Auth: No auth required
Verdict Summary: Choose Wavexis MCP if you need specialized Browser Automation tools running via a local process. Choose Firefox Devtools 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 Wavexis 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).
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).
You have access to required keys: START_URL, FIREFOX_HEADLESS, ACCEPT_INSECURE_CERTS, CONNECT_EXISTING, MARIONETTE_PORT, TOOL_PRESET, ENABLE_SCRIPT, ENABLE_PRIVILEGED_CONTEXT.
MCP server exposing 220 browser automation tools across 13 capability tiers. Chrome + Firefox via CDP + BiDi. No Node.js, no Chromium download — uses your existing browser. Stealth mode, Lighthouse audits, multi-action YAML batching, raw CDP/BiDi access, structured errors with LLM-actionable suggestions.
Firefox browser automation via WebDriver BiDi for testing, scraping, and browser control. Supports snapshot/UID-based interactions, network monitoring, console capture, and screenshots.
Category & Scope
Tools & Capabilities Breakdown
Wavexis MCP Tools (72)
wavexis_session_open
Launch a persistent browser session for multi-step workflows.
Call once at the start of a task and reuse the returned session_id for
all subsequent calls; use wavexis_navigate with session_id omitted for
one-off page fetches instead.
Side effects: Launches a browser process (or connects to an existing
one) and allocates server-side session state; may open network
connections to remote/cloud browsers.
Returns: JSON string with keys: 'status' ('ok'/'error'),
'session_id' (str), 'backend' (str).
wavexis_session_close
Close a browser session and release all associated resources.
Call when the session is no longer needed to free memory and browser
processes; use wavexis_close_tab to close individual tabs instead.
Side effects: Terminates the browser process (or disconnects from a
remote one) and frees session state. Destructive — all unsaved page
state is lost.
Returns: JSON string with keys: 'status' ('ok'/'error'),
'session_id' (str).
wavexis_session_info
Query metadata and current URL of an active browser session.
Use to inspect session health or retrieve the current page URL; use
wavexis_list_tabs for tab-level details instead.
Side effects: None — read-only; queries in-memory session state and
the browser's current URL.
Returns: JSON string with keys: 'status' ('ok'/'error'),
'session_id' (str), 'backend' (str), 'created_at' (str),
'current_url' (str).
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).
Wavexis MCP is categorized under Browser Automation and uses a local stdio subprocess. In contrast, Firefox Devtools MCP belongs to Browser Automation using local stdio subprocess. Select Wavexis MCP when you need capabilities focused on browser automation and Firefox Devtools MCP when you require tools for browser automation.
Navigate the browser to a URL with a configurable wait strategy.
Use for direct URL navigation; use wavexis_back/wavexis_forward for
history navigation, or wavexis_act for natural-language interaction
instead.
Side effects: Issues a network request to the target URL and replaces
the current page content; may auto-create a stateless session if
session_id is omitted.
Returns: JSON string with keys: 'status' ('ok'/'error'), 'url' (str).
wavexis_back
Navigate backward one step in the browser history.
Use for history navigation instead of wavexis_navigate when the target
is the previous page.
Side effects: Changes the active page to the previous history entry;
may trigger network requests if that page was not cached.
Returns: JSON string with keys: 'status' ('ok'/'error').
wavexis_forward
Navigate forward one step in the browser history.
Use after wavexis_back to restore a page; use wavexis_navigate for
direct URL navigation instead.
Side effects: Changes the active page to the next history entry; may
trigger network requests if that page was not cached.
Returns: JSON string with keys: 'status' ('ok'/'error').
wavexis_reload
Reload the current page, optionally bypassing the cache.
Use to refresh stale content or retry a failed load; use
wavexis_navigate to go to a different URL instead.
Side effects: Re-issues network requests for the current page and its
resources; discards in-memory page state.
Returns: JSON string with keys: 'status' ('ok'/'error').
wavexis_stop
Stop all pending navigations and resource loads in the session.
Use when a page load is hanging or no longer needed; use wavexis_wait
to wait for a load to complete instead.
Side effects: Aborts in-flight network requests and pending
navigations; the page is left in its current partial state.
Returns: JSON string with keys: 'status' ('ok'/'error').
wavexis_wait
Block until a page condition (load, selector, URL, network idle) is met.
Use after wavexis_navigate when the wait strategy was 'none', or to
wait for dynamic content; use wavexis_stop to cancel a load instead.
Side effects: None — read-only polling with no page mutations; blocks
the tool call up to the configured timeout.
Returns: JSON string with keys: 'status' ('ok'/'error'),
'elapsed_ms' (int).
wavexis_screenshot
Capture a screenshot of a web page or matched element.
Use ``wavexis_pdf`` when a print-ready document is needed, or
``wavexis_annotated_screenshot`` when labelled element markers are
required.
Side effects: launches/acquires a browser backend, navigates to ``url``
if provided, optionally evaluates ``js``; writes to ``output_path`` when
given.
Returns: JSON string with keys: 'status' ('ok'/'error'), 'format'
(str), 'base64' (str) or 'path' (str), 'size_bytes' (int).
wavexis_pdf
Generate a PDF document from a web page.
Use ``wavexis_screenshot`` for image capture, or ``wavexis_page_pdf``
when pixel-level control over paper size and margins is required.
Side effects: launches/acquires a browser backend, navigates to ``url``
if provided, optionally evaluates ``js``; writes to ``output_path`` when
given.
Returns: JSON string with keys: 'status' ('ok'/'error'), 'base64'
(str) or 'path' (str), 'size_bytes' (int).
wavexis_scrape
Scrape data from multiple URLs by evaluating a JS expression on each.
Use ``wavexis_eval`` for single-page evaluation, or ``wavexis_scrape``
when the same expression must run across many pages with pagination.
Side effects: launches/acquires a browser backend, navigates to each
URL in ``urls`` sequentially, evaluates ``expression`` in every page
context.
Returns: JSON string with keys: 'status' ('ok'/'error'), 'results'
(list[dict[str, Any]]), 'format' (str), 'count' (int), 'total' (int).
+60 more tools listed on main page
Firefox Devtools MCP Tools (34)
list_pages
List open tabs (index, title, URL). Selected tab is marked.
new_page
Open new tab at URL. Returns tab index.
navigate_page
Navigate selected tab to URL.
select_page
Select active tab by index, URL, or title. Index takes precedence.
close_page
Close tab by index.
get_page_text
Get the visible text of the page (document.body.innerText). Caps at maxLength (default 20000 chars); saveTo saves the full text to a file.
take_snapshot
Capture DOM snapshot with stable UIDs. A UID stays valid across snapshots until its element is removed or the page navigates. Output caps at maxLines (default 100); scope with selector or dump the full tree with saveTo.
resolve_uid_to_selector
Resolve UID to CSS selector. Fails if the element is gone.
clear_snapshot
Clear snapshot UIDs. Usually not needed.
click_by_uid
Click element by UID. Set dblClick for double-click.