The full upstream README, mirrored here for reference. Install config, tool schemas, adoption signals, and an original overview live on the Wavexis MCP listing page.
Chrome + Firefox · CDP + BiDi · 100% Python · zero Node.js · zero Chromium download
MCP server that exposes the wavexis browser 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):
Then ask your LLM:
"Take a full-page screenshot of https://example.com"
The LLM calls wavexis_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 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.
--caps. Start with core (72 tools), add tiers as neededstealth=true hides navigator.webdriver, fakes plugins/languages/chrome runtimesuggestion field so the LLM self-corrects without human helpThe 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.
url parameter. The browser launches, executes, and closes automatically.core (72 tools) to all (220 tools). Enable only what you need via --caps.suggestion field that tells the LLM what to do next, enabling self-correction without human intervention.With CDP backend (Chromium):
Or run without installing (recommended):
Add to your MCP client config (Claude Desktop, Cursor, Windsurf, VS Code):
Or with pip:
Call any tool with a url parameter — the browser launches, executes, and closes automatically:
Open a session, chain multiple actions, close when done:
Use wavexis_act to interact with pages using natural language:
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.
| Tier | Flag | Tools | Key features |
|---|---|---|---|
| Core | always on | 72 | Session, navigation, screenshot, PDF, scrape, eval, DOM, input, cookies, tabs, NL interaction, iframe, shadow DOM, events |
| Network | --caps=network | 20 | Headers, UA, block, throttle, cache, HAR, intercept, mock, modify req/resp, request body, replay HAR, request list |
| Storage | --caps=storage | 18 | 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 | 4 | Accessibility tree snapshot, node traversal, axe-core audit |
| Interactions | --caps=interactions | 5 | Dialogs, downloads, permissions |
| DevTools | --caps=devtools | 31 | Performance, CSS, debugging, overlay, console, security, window mgmt, combined trace, annotated screenshot |
| Vision | --caps=vision | 7 | Coordinate-based mouse (pixel-precise) |
| Video | --caps=video | 4 | Video recording, chapters, action overlay |
| Testing | --caps=testing | 6 | 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 | 31 | Service workers, animations, WebAuthn, WebAudio, media, cast, bluetooth, extensions, prefs |
| Total | --caps=all | 220 |
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:
pip install "wavexis-mcp[cdp]"pip install "wavexis-mcp[bidi]"Select per session:
Use connect_existing=True to launch Chrome with --remote-debugging-port and 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:
Supported action types: navigate, screenshot, eval, click, type, fill. Set continue_on_error: true to keep executing on failures.
Resources (read-only browser state):
wavexis://session/{id}/url — current page URLwavexis://session/{id}/cookies — cookies as JSONwavexis://session/{id}/console — console messageswavexis://session/{id}/tabs — open tabsPrompts (workflow templates):
scrape_page(url, selector) — scrape and extract contentaudit_page(url) — full a11y + performance auditfill_form(url, fields) — fill a form on a pagedebug_page(url) — debug console, network, performanceRun WaveXisMCP as an HTTP server for CI/CD, shared instances, or Docker:
Binds to 127.0.0.1 by default. Use --allow-remote for 0.0.0.0.
Per-session token bucket rate limiting:
When exceeded, returns {"error": "rate_limited", "retry_after_ms": N}.
See Docker docs for details.
| Feature | Playwright MCP | WaveXisMCP |
|---|---|---|
| Language | TypeScript | Python |
| Node.js required | ✗ | ✓ (no Node.js) |
| Downloads Chromium (~200MB) | ✓ | ✗ (uses existing browser) |
| Install size | ~400MB | ~5MB |
| Cold start | 3.2s | 0.8s |
| Total tools | ~21 | 220 |
| Capability tiers (opt-in) | ✗ | ✓ (13 tiers) |
| Dual protocol (CDP + BiDi) | ✗ | ✓ |
| Firefox support | ✓ (basic) | ✓ (BiDi + geckodriver auto-launch) |
| Backend selection (per session) | ✗ | ✓ |
| Stealth / anti-bot mode | ✗ | ✓ |
| Raw CDP/BiDi access | ✗ | ✓ (escape hatch) |
| Multi-action YAML batching | ✗ | ✓ |
| Video recording | ✗ | ✓ |
| Lighthouse audit | ✗ | ✓ |
| WebAuthn / Bluetooth / Cast | ✗ | ✓ |
| Natural language interaction | ✗ | ✓ (wavexis_act) |
| MCP resources & prompts | ✗ | ✓ |
| Rate limiting | ✗ | ✓ |
| SSRF protection | ✗ | ✓ |
| Structured errors with suggestions | ✗ | ✓ |
Note: Playwright MCP supports WebKit (Safari) — WaveXisMCP does not (yet). See the roadmap for planned features.
Full documentation, API reference, and examples are hosted at mathiaspaulenko.github.io/wavexis-mcp.
Key sections:
All tools return structured error JSON on failure. Every error includes a suggestion field that guides the LLM toward the next action:
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:
AbstractBackend interface.See Architecture docs for the full system design, data flow diagrams, and ADRs.
Contributions are welcome. Please see CONTRIBUTING.md for the development workflow, coding standards, and pull request process. For security issues, see SECURITY.md.
WaveXisMCP is built on the wavexis browser automation library and the Model Context Protocol. Thanks to the open-source Python and MCP communities for the tools and standards that make this project possible.
MIT
mcp-name: io.github.MathiasPaulenko/wavexis-mcp