> MCP server — 220 browser automation tools for LLMs Chrome + Firefox · CDP + BiDi · 100% Python · zero Node.js · zero Chromium download English** | 简体中文 | 日本語 MCP server that exposes the wavexis browser automation library to LLMs.
MCP server — 220 browser automation tools for LLMs
以下摘录自该仓库的 README(片段) · 在 GitHub 读完整 README →
Chrome + Firefox · CDP + BiDi · 100% Python · zero Node.js · zero Chromium download
---
**English** | 简体中文 | 日本語
> 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):
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.
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
- **Stealth mode** — stealth=true hides navigator.webdriver, fakes plugins/languages/chrome runtime
- **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
- **700+ tests, 90% coverage enforced, E2E with real Chrome** — production-ready
How it works
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
The CDP backend (Chromium) is included by default. For the BiDi backend (Firefox):
Or run without installing (recommended):
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):
Or with pip:
Stateless mode (one-shot)
Call any tool with a url parameter — the browser launches, executes, and closes automatically:
Session mode (multi-step)
Open a session, chain multiple actions, close when done:
Natural language interaction (M1)
Use wavexis_act to interact with pages using natural language: