220 browser automation tools for Chrome, Edge, and Firefox via CDP + BiDi. 100% Python.
Wavexis MCP Server (io.github.MathiasPaulenko/wavexis-mcp)
This MCP server provides 220 browser automation tools for Chrome, Edge, and Firefox. It uses CDP (Chrome DevTools Protocol) and BiDi to drive browser actions, and it is implemented entirely in Python (100% Python).
๐ ๏ธ Key Features
220 browser automation tools
Supports Chrome, Edge, and Firefox
Uses CDP + BiDi for automation
100% Python implementation
๐ Use Cases
Browser automation across multiple major browsers (Chrome, Edge, Firefox)
Programmatic control of browser behaviors via CDP/BiDi-backed tooling
Integrating Python-based automation tools into an MCP workflow
โก Developer Benefits
Python-only codebase for consistent implementation
Multi-browser support using the same toolset (Chrome, Edge, Firefox)
โ ๏ธ Limitations
Tooling is specifically focused on browser automation and does not indicate support for non-browser tasks
MCP server โ 220 browser automation tools for LLMs
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.
Quick demo
30 seconds to your first screenshot. Add this to your MCP client config (Claude Desktop, Cursor, Windsurf, VS Code):
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.
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.
Key features
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 with core (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
Structured errors โ every error includes a suggestion field 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
How it works
text
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.
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 (72 tools) to all (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 a suggestion field that tells the LLM what to do next, enabling self-correction without human intervention.
Install
bash
pip install wavexis-mcp
With CDP backend (Chromium):
bash
pip install "wavexis-mcp[cdp]"
Or run without installing (recommended):
bash
uvx wavexis-mcp
Requirements
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
Quick start
Add to your MCP client config (Claude Desktop, Cursor, Windsurf, VS Code):
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.
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 (110 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 (Chrome) or geckodriver (Firefox); both are auto-launched from PATH if not already running. pip install "wavexis-mcp[bidi]"
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:
text
# Launch Chrome with debug port and connect via CDP
wavexis_session_open(connect_existing=true)
# Reuse an existing Chrome profile (keeps logins, cookies, extensions)
wavexis_session_open(connect_existing=true, user_data_dir="C:/Users/me/ChromeProfile")
Chrome is launched headed (headless is ignored). The browser subprocess is terminated when the session is closed.
Multi-action YAML
Chain multiple actions in a single tool call by passing a YAML string:
When exceeded, returns {"error": "rate_limited", "retry_after_ms": N}.
Docker
bash
# 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
All tools return structured error JSON on failure. Every error includes a suggestion field that guides the LLM toward the next action:
json
{"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:
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
bash
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
Contributing
Contributions are welcome. Please see CONTRIBUTING.md for the development workflow, coding standards, and pull request process. For security issues, see SECURITY.md.
Acknowledgements
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.