WaveXisMCP

by mathiaspaulenko

Not rated
GitHub

About

Browser automation MCP server with 220 tools, 13 capability tiers, CDP + BiDi, stealth mode, no Node.js, no Chromium download.

Details

Author
mathiaspaulenko
Categories
Web Scraping

Setup

Install WaveXisMCP in your MCP client (Claude Desktop, Cursor, Windsurf, and others).

Repository: https://github.com/mathiaspaulenko/wavexis-mcp

Follow the installation instructions in the repository README, then restart your MCP client.

MCP server — 220 browser automation tools for LLMs

Chrome + Firefox · CDP + BiDi · 100% Python · zero Node.js · zero Chromium download

MCP server that exposes thewavexisbrowser automation library to LLMs. 220 tools across 13 capability tiers. No Node.js, no Chromium download — uses your existing Chrome/Edge. 100% Python.

30 seconds to your first screenshot.Add this to your MCP client config (Claude Desktop, Cursor, Windsurf, VS Code):

{ "mcpServers": { "wavexis": { "command": "uvx", "args": ["wavexis-mcp", "--caps", "all"] } } }

"Take a full-page screenshot ofhttps://example.com"

The LLM callswavexis_screenshot(url="https://example.com", full_page=true)and returns the screenshot. No Node.js, no Chromium download, no setup beyond the config above.

WaveXisMCP wraps thewavexisbrowser automation library and exposes it as anMCP server. You don't need Node.js, Playwright, or a separate Chromium download — WaveXisMCP launches your existing Chrome or Edge installation directly.

- 220 tools— 3x more than Playwright MCP (21), 2x more than zendriver-mcp (96)
- 13 capability tiers— enable only what you need via--caps. Start withcore(72 tools), add tiers as needed
- Chrome + Firefox— CDP for Chrome/Edge, BiDi for Firefox. Both auto-launch their drivers from PATH
- No Chromium download— uses your existing browser. ~5MB install vs ~400MB for Playwright MCP
- Stealth modestealth=truehidesnavigator.webdriver, fakes plugins/languages/chrome runtime
- Structured errors— every error includes asuggestionfield so the LLM self-corrects without human help
- Multi-action YAML— chain navigate → click → fill → screenshot in a single tool call
- Raw CDP/BiDi access— escape hatch for any browser feature not covered by a dedicated tool
- Lighthouse audits, WebAuthn, Bluetooth, Cast— niche features no other MCP server covers
- SSRF protection, path sandboxing, rate limiting— security built in from day one
- 593 tests, 90% coverage enforced, E2E with real Chrome— production-ready

You (natural language) → LLM decides which tool to call → WaveXisMCP receives the tool call → wavexis library executes it via CDP or BiDi → Chrome/Edge/Firefox performs the action ← Result returned as JSON (text, base64, file path) ← JSON passed back to LLM ← LLM summarizes the result for you

The LLM never sees the browser directly. It only sees tool definitions (name, description, parameters) and JSON responses. This means any MCP-compatible LLM client works out of the box — no custom integrations needed.

- Tool— A single browser operation (screenshot, eval, click, etc.) exposed as an MCP tool that any LLM client can call.
- Session— A persistent browser instance. Open a session, chain multiple tool calls, close when done. Avoids the overhead of launching a browser per action.
- Stateless mode— Call any tool with aurlparameter. The browser launches, executes, and closes automatically.
- Capability tiers— 13 tiers fromcore(72 tools) toall(220 tools). Enable only what you need via--caps.
- Dual backend— CDP (Chromium-native, via cdpwave) and BiDi (W3C cross-browser, via bidiwave) with per-session selection.
- Structured errors— Every error includes asuggestionfield that tells the LLM what to do next, enabling self-correction without human intervention.

pip install "wavexis-mcp[cdp]"

Or run without installing (recommended):

- Python: 3.11, 3.12, or 3.13
- Browser: Google Chrome, Microsoft Edge, or any Chromium/Chrome-based browser
- BiDi backend(optional): ChromeDriver/EdgeDriver for Chrome, or geckodriver for Firefox

Add to your MCP client config (Claude Desktop, Cursor, Windsurf, VS Code):

{ "mcpServers": { "wavexis": { "command": "uvx", "args": ["wavexis-mcp", "--caps", "all"] } } }
{ "mcpServers": { "wavexis": { "command": "wavexis-mcp", "args": ["--caps", "all"] } } }

Call any tool with aurlparameter — the browser launches, executes, and closes automatically:

wavexis_screenshot(url="https://example.com", full_page=true)

Open a session, chain multiple actions, close when done:

wavexis_session_open(backend="cdp", headless=false) → {"session_id": "abc-123"} wavexis_navigate(session_id="abc-123", url="https://example.com") wavexis_click(session_id="abc-123", selector="#login") wavexis_screenshot(session_id="abc-123") wavexis_session_close(session_id="abc-123")

Usewavexis_actto interact with pages using natural language:

wavexis_session_open(backend="cdp") wavexis_navigate(session_id="abc-123", url="https://example.com") wavexis_act(session_id="abc-123", instruction="click the login button") → {"action": "click", "element": {"ref": "el-3", "role": "button", "name": "Login"}, "status": "ok"}

Thewavexis_acttool takes an a11y snapshot, matches the instruction to an element using keyword scoring, and executes the detected action (click, type, fill, hover). No external LLM calls — pure heuristic matching.

Default:--caps=core(72 tools). Enable all:--caps=all. Enable specific:--caps=network,storage,emulation.

Tip: Start with--caps coreand add tiers as needed. Each tier adds tool definitions to the LLM's context, which consumes tokens. For most tasks,core,network,storage(110 tools) is a good balance.

WaveXisMCP supports two backends with full feature parity:

- CDP(cdpwave) — default, Chrome DevTools Protocol. Direct WebSocket to Chrome/Edge. No driver needed. 57 CDP domains.pip install "wavexis-mcp[cdp]"
- BiDi(bidiwave) — WebDriver BiDi protocol, W3C cross-browser (Firefox, Chrome). Needs chromedriver (Chrome) or geckodriver (Firefox); both are auto-launched from PATH if not already running.pip install "wavexis-mcp[bidi]"

# CDP (default, Chrome/Edge only) wavexis_session_open(backend="cdp") # BiDi with Chrome (auto-launches chromedriver) wavexis_session_open(backend="bidi", browser="chrome") # BiDi with Firefox (auto-launches geckodriver) wavexis_session_open(backend="bidi", browser="firefox")

Useconnect_existing=Trueto launch Chrome with--remote-debugging-portand connect to it. Useful for reusing a browser profile with logged-in sessions:

Chrome is launched headed (headless is ignored). The browser subprocess is terminated when the session is closed.

Chain multiple actions in a single tool call by passing a YAML string:

wavexis_multi_action( config=""" actions: - navigate: https://example.com - screenshot: full_page: true - eval: document.title - click: "#login" - type: selector: "#username" text: admin@example.com - screenshot: {} """, session_id="abc-123" )

Supported action types:navigate,screenshot,eval,click,type,fill. Setcontinue_on_error: trueto keep executing on failures.

- scrape_page(url, selector)— scrape and extract content
- audit_page(url)— full a11y + performance audit
- fill_form(url, fields)— fill a form on a page
- debug_page(url)— debug console, network, performance

Run WaveXisMCP as an HTTP server for CI/CD, shared instances, or Docker:

# HTTP on localhost wavexis-mcp --transport http --port 8765 # HTTP with all tiers wavexis-mcp --transport http --port 8765 --caps all # HTTP with remote access (use behind a reverse proxy!) wavexis-mcp --transport http --allow-remote --port 8765

Binds to127.0.0.1by default. Use--allow-remotefor0.0.0.0.

# 10 calls/sec, burst of 5 wavexis-mcp --rate-limit 10 --rate-burst 5

When exceeded, returns{"error": "rate_limited", "retry_after_ms": N}.

# Pull and run docker run -p 8765:8765 ghcr.io/mathiaspaulenko/wavexis-mcp # Or build locally docker build -t wavexis-mcp . docker run -p 8765:8765 wavexis-mcp # Docker Compose docker-compose up

Note: Playwright MCP supports WebKit (Safari) — WaveXisMCP does not (yet). See theroadmapfor planned features.

Full documentation, API reference, and examples are hosted atmathiaspaulenko.github.io/wavexis-mcp.

- Quick Start
-
Architecture
-
Configuration
-
Docker
-
HTTP Transport
-
Rate Limiting
-
Tools Reference
-
Examples

All tools return structured error JSON on failure. Every error includes asuggestionfield that guides the LLM toward the next action:

{ "error": "Session 'abc-123' not found.", "tool": "wavexis_navigate", "type": "SessionNotFoundError", "message": "Session 'abc-123' not found.", "suggestion": "Call wavexis_session_open first to create a browser session." }

This enables the LLM to self-correct without human intervention — it reads the suggestion and calls the recommended tool.

WaveXisMCP sits at the top of a three-layer ecosystem:

WaveXisMCP (MCP server, 220 tools) └─ wraps → wavexis (browser automation library) ├─ cdpwave (CDP backend, Chromium-native) └─ bidiwave (BiDi backend, W3C cross-browser)

- cdpwave— low-level async Python library for the Chrome DevTools Protocol. Direct WebSocket to Chrome/Edge. No driver binary needed.
- bidiwave— low-level async Python library for the WebDriver BiDi protocol (W3C standard). Works with Firefox, Chrome, and Edge.
- wavexis— high-level browser automation library that abstracts cdpwave and bidiwave behind a unifiedAbstractBackendinterface.
- WaveXisMCP— MCP server wrapping wavexis. Exposes each backend method as an MCP tool with Pydantic v2 input validation, JSON responses, and capability tier filtering.

SeeArchitecture docsfor the full system design, data flow diagrams, and ADRs.

git clone https://github.com/MathiasPaulenko/wavexis-mcp.git cd wavexis-mcp pip install -e ".[dev]" # Run quality checks ruff check wavexis_mcp tests ruff format --check mypy wavexis_mcp python -m bandit -r wavexis_mcp # Run tests pytest tests/unit -v

Contributions are welcome. Please seeCONTRIBUTING.mdfor the development workflow, coding standards, and pull request process. For security issues, seeSECURITY.md.

WaveXisMCP is built on thewavexisbrowser automation library and theModel Context Protocol. Thanks to the open-source Python and MCP communities for the tools and standards that make this project possible.

mcp-name: io.github.MathiasPaulenko/wavexis-mcp

Enable AI agents to get structured data from unstructured web with AgentQL.

Web scraping, crawling, and change detection with AI

Official Apify MCP server for AI agents to run Actors, extract website data, and automate web scraping and crawling workflows.

1GB Free Trial, World's Leading Proxy Service Platform, Efficient Data Collection

Discover, extract, and interact with the web - one interface powering automated access across the public internet.

Automate browser interactions in the cloud (e.g. web navigation, data extraction, form filling, and more)

Easy web data access. Simplified retrieval of information from websites and online sources.

Adds powerful web scraping and search capabilities to LLM clients like Cursor and Claude.

Real-time web data, structured for agents

No reviews yet — be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.