Skip to main content

MCP server exposing the wavexis browser automation library to LLMs — 175 tools, 13 capability tiers, zero Node.js

Project description

WaveXisMCP

MCP server — 175 browser automation tools for LLMs


CI PyPI Python Docker License Docs

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

Why WaveXisMCP?

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

How it works

You (natural language)
  → LLM decides which tool to call
    → WaveXisMCP receives the tool call
      → wavexis library executes it via CDP or BiDi
        → Chrome/Edge 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.

Core concepts

  • 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 a url parameter. The browser launches, executes, and closes automatically.
  • Capability tiers — 13 tiers from core (45 tools) to all (175 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 a suggestion field that tells the LLM what to do next, enabling self-correction without human intervention.

Install

pip install wavexis-mcp

With CDP backend (Chromium):

pip install "wavexis-mcp[cdp]"

Or run without installing (recommended):

uvx wavexis-mcp

Quick start

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

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

Or with pip:

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

Stateless mode (one-shot)

Call any tool with a url parameter — the browser launches, executes, and closes automatically:

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

Session mode (multi-step)

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")

Natural language interaction (M1)

Use wavexis_act to 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"}

The wavexis_act tool 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.

Capability tiers

Tier Flag Tools Key features
Core always on 45 Session, navigation, screenshot, PDF, scrape, eval, DOM, input, cookies, tabs, NL interaction
Network --caps=network 10 Headers, UA, block, throttle, cache, HAR, intercept, mock, modify req/resp, request list
Storage --caps=storage 13 localStorage, sessionStorage, cache storage, IndexedDB, state save/restore
Emulation --caps=emulation 9 Device, viewport, geolocation, timezone, dark mode, locale, CPU, touch, sensors
A11y --caps=a11y 3 Accessibility tree snapshot (LLM-friendly element refs)
Interactions --caps=interactions 5 Dialogs, downloads, permissions
DevTools --caps=devtools 23 Performance, CSS, debugging, overlay, console, security, window mgmt
Vision --caps=vision 6 Coordinate-based mouse (pixel-precise)
Video --caps=video 4 Video recording, chapters, action overlay
Testing --caps=testing 4 Assertions, locator generation
Workflows --caps=workflows 6 Multi-action YAML, raw CDP/BiDi, browser context CRUD
Data --caps=data 7 Codegen, Lighthouse audit, extract, websocket intercept, crawl, visual diff, core web vitals
Experimental --caps=experimental 26 Service workers, animations, WebAuthn, WebAudio, media, cast, bluetooth, extensions, prefs
Total --caps=all 175

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

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

Backends

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/EdgeDriver. pip install "wavexis-mcp[bidi]"

Select per session:

wavexis_session_open(backend="bidi")

Multi-action YAML

Chain multiple actions in a single tool call:

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

Supported action types: navigate, screenshot, eval, click, type, fill. Set continue_on_error: true to keep executing on failures.

MCP resources & prompts (M3)

Resources (read-only browser state):

  • wavexis://session/{id}/url — current page URL
  • wavexis://session/{id}/cookies — cookies as JSON
  • wavexis://session/{id}/console — console messages
  • wavexis://session/{id}/tabs — open tabs

Prompts (workflow templates):

  • 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

HTTP transport

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 to 127.0.0.1 by default. Use --allow-remote for 0.0.0.0.

Rate limiting (M4)

Per-session token bucket rate limiting:

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

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

Docker

# 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

See Docker docs for details.

Ecosystem

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

Comparison

Feature Playwright MCP WaveXisMCP
Language TypeScript Python
Node.js required Yes No
Downloads Chromium Yes (~200MB) No (uses existing Chrome/Edge)
Install size ~200MB+ ~5MB
Total tools ~70 175
Capability tiers Yes (--caps) Yes (13 tiers)
Dual protocol No CDP + BiDi
Backend selection No Yes (per session)
Raw CDP/BiDi access No Yes (escape hatch)
Multi-action YAML No Yes
Video recording No Yes
Lighthouse audit No Yes
WebAuthn/Bluetooth No Yes
Natural language interaction No Yes (wavexis_act)
MCP resources & prompts No Yes
Rate limiting No Yes

Documentation

Full docs at mathiaspaulenko.github.io/wavexis-mcp.

Error handling

All tools return structured error JSON on failure. Every error includes a suggestion field 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.

Architecture

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

WaveXisMCP (MCP server, 175 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 unified AbstractBackend interface.
  • WaveXisMCP — MCP server wrapping wavexis. Exposes each backend method as an MCP tool with Pydantic v2 input validation, JSON responses, and capability tier filtering.

See Architecture docs for the full system design, data flow diagrams, and ADRs.

Development

git clone https://github.com/MathiasPaulenko/wavexis-mcp.git
cd wavexis-mcp
pip install -e ".[dev]"
ruff check .
mypy wavexis_mcp/
pytest tests/ -v

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

wavexis_mcp-1.6.2.tar.gz (124.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

wavexis_mcp-1.6.2-py3-none-any.whl (76.9 kB view details)

Uploaded Python 3

File details

Details for the file wavexis_mcp-1.6.2.tar.gz.

File metadata

  • Download URL: wavexis_mcp-1.6.2.tar.gz
  • Upload date:
  • Size: 124.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for wavexis_mcp-1.6.2.tar.gz
Algorithm Hash digest
SHA256 88bbac0eff1c07f325e55146cda05cbb7e0f080cbeed4fa0b08f95a45b9af985
MD5 e0c4b39a95bb8868098c18fb130213a8
BLAKE2b-256 823bde80e0118aa118a0513c7a8b19be9d8d98560fcf017a1f2017f0c8a6c3f7

See more details on using hashes here.

Provenance

The following attestation bundles were made for wavexis_mcp-1.6.2.tar.gz:

Publisher: release.yml on MathiasPaulenko/wavexis-mcp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file wavexis_mcp-1.6.2-py3-none-any.whl.

File metadata

  • Download URL: wavexis_mcp-1.6.2-py3-none-any.whl
  • Upload date:
  • Size: 76.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for wavexis_mcp-1.6.2-py3-none-any.whl
Algorithm Hash digest
SHA256 d9927105109e3e138a13f100bf870178fec6c870ab4f528c9b531afb1a2c7317
MD5 99595d5eafdd2f59b36546d8b9f98b22
BLAKE2b-256 b399de581485cdb246b55afd517b02ba3b40310fada60dad8f3660e3325fe1fc

See more details on using hashes here.

Provenance

The following attestation bundles were made for wavexis_mcp-1.6.2-py3-none-any.whl:

Publisher: release.yml on MathiasPaulenko/wavexis-mcp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page