WaveXisMCP
WaveXisMCP is a Python-based MCP server providing 156 browser automation tools for LLMs, enabling control of Chrome/Edge browsers (via CDP or BiDi protocols) without Node.js or Chromium downloads.
Session Management: Open/close persistent browser sessions with configurable backend, headless mode, viewport, proxy, and user agent. Inspect active session metadata.
Navigation: Navigate to URLs with configurable wait strategies, control browser history (back, forward, reload, stop), and wait for page conditions (selectors, URL patterns, load events).
Screenshots & Visual Capture: Take full-page or element-specific screenshots (PNG/JPEG), annotated screenshots with numbered element labels, PDFs with configurable paper/margin settings, and frame-by-frame screencasts.
Scraping & JavaScript: Scrape multiple URLs with pagination, evaluate arbitrary JS on pages, and execute JS inside iframes or shadow DOM contexts.
DOM Manipulation: Get/query elements, set/get/remove attributes, remove elements, focus, scroll, and capture full DOM snapshots.
User Interactions: Click, type, fill inputs, fill forms, select options, hover, press keys, drag-and-drop, tap (touch emulation), upload files, and check/uncheck checkboxes.
iframe & Shadow DOM: Click and fill elements inside iframes and shadow DOM trees.
Cookie & Tab Management: Get, set, delete, and clear cookies. List, open, close, and activate browser tabs.
Natural Language Interaction: Use wavexis_act to perform actions via plain English (e.g., "click the login button") using accessibility tree snapshots — no external LLM calls required.
Multi-Action YAML: Execute sequences of actions (navigate, screenshot, eval, click, type, fill) defined in a YAML file with a single tool call.
Resources & Prompts: Access read-only browser state (current URL, cookies, console, tabs) and use built-in workflow templates (scrape, audit, fill form, debug).
Flexible Deployment: Run as an HTTP server for CI/CD or Docker, choose CDP or BiDi per session, enable specific capability tiers (--caps) ranging from core (49 tools) to all (156 tools), and apply per-session rate limiting.
Offers experimental Bluetooth device emulation and interaction for testing Web Bluetooth API functionality.
Enables cross-browser automation of Firefox via the BiDi protocol, supporting navigation, interaction, and testing.
Integrates Google Lighthouse to run performance, accessibility, and best practice audits on web pages.
Provides experimental support for WebAuthn authentication, allowing testing of passwordless login and credential management.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@WaveXisMCPtake a full-page screenshot of the wavexis repo on GitHub"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
MCP server that exposes the wavexis browser automation library to LLMs. 195 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 youThe 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
urlparameter. The browser launches, executes, and closes automatically.Capability tiers — 13 tiers from
core(56 tools) toall(195 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
suggestionfield that tells the LLM what to do next, enabling self-correction without human intervention.
Related MCP server: DrissionPage MCP Server
Install
pip install wavexis-mcpWith CDP backend (Chromium):
pip install "wavexis-mcp[cdp]"Or run without installing (recommended):
uvx wavexis-mcpQuick 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 | 56 | Session, navigation, screenshot, PDF, scrape, eval, DOM, input, cookies, tabs, NL interaction, iframe, shadow DOM, events |
Network |
| 14 | Headers, UA, block, throttle, cache, HAR, intercept, mock, modify req/resp, request body, replay HAR, request list |
Storage |
| 18 | localStorage, sessionStorage, cache storage, IndexedDB, state save/restore |
Emulation |
| 9 | Device, viewport, geolocation, timezone, dark mode, locale, CPU, touch, sensors |
A11y |
| 4 | Accessibility tree snapshot, node traversal, axe-core audit |
Interactions |
| 5 | Dialogs, downloads, permissions |
DevTools |
| 31 | Performance, CSS, debugging, overlay, console, security, window mgmt, combined trace, annotated screenshot |
Vision |
| 6 | Coordinate-based mouse (pixel-precise) |
Video |
| 4 | Video recording, chapters, action overlay |
Testing |
| 4 | Assertions, locator generation |
Workflows |
| 6 | Multi-action YAML, raw CDP/BiDi, browser context CRUD |
Data |
| 7 | Codegen, Lighthouse audit, extract, websocket intercept, crawl, visual diff, core web vitals |
Experimental |
| 31 | Service workers, animations, WebAuthn, WebAudio, media, cast, bluetooth, extensions, prefs |
Total |
| 195 |
Default: --caps=core (56 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 (88 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 URLwavexis://session/{id}/cookies— cookies as JSONwavexis://session/{id}/console— console messageswavexis://session/{id}/tabs— open tabs
Prompts (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, 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 8765Binds 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 5When 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 upSee Docker docs for details.
Ecosystem
WaveXisMCP (MCP server, 195 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 | 195 |
Capability tiers | Yes ( | 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 ( |
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, 195 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
AbstractBackendinterface.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/ -vLicense
MIT
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/MathiasPaulenko/wavexis-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server