WaveXisMCP

io.github.MathiasPaulenko由 GitHub 帳號 MathiasPaulenko 發布v1.6.24更新於 Oct 25, 2026

220 browser automation tools for Chrome, Edge, and Firefox via CDP + BiDi. 100% Python.

發布方自己的服務:Wave AI

概覽

AI 產生的概覽

以 Python 撰寫的 MCP 伺服器,透過 CDP 與 BiDi 為 Chrome、Edge、Firefox 提供 220 個瀏覽器自動化工具,直接驅動電腦上既有的瀏覽器。

可以做什麼
  • 開啟、重複使用與關閉瀏覽器工作階段,或以一次性呼叫自動啟動並關閉瀏覽器
  • 瀏覽頁面、截圖與產生 PDF、擷取內容、執行 JavaScript、檢查 DOM、輸入文字、管理 Cookie 與分頁,並依自然語言指令操作頁面
  • 控制網路請求、儲存空間、裝置模擬、無障礙稽核、對話框、下載與權限
  • 使用效能追蹤、CSS 檢查、主控台與安全性檢查等開發者工具功能,以及座標級滑鼠控制、錄影與測試斷言
  • 以單次 YAML 呼叫串接多個動作、存取原始 CDP/BiDi、執行 Lighthouse 稽核、爬取、視覺比對與讀取核心網頁指標
  • 提供唯讀的工作階段資源(URL、Cookie、主控台、分頁)以及擷取、稽核、填表、除錯等工作流程提示
適用情境
適合需要讓助理操作真實瀏覽器的情境:截圖、擷取或稽核頁面、填寫表單、執行端對端檢查,或除錯網站的主控台與網路行為。若電腦上已安裝 Chrome、Edge 或 Firefox,且不想引入 Node.js 或額外下載 Chromium,會是合適的選擇。
執行需求
本機 Python 3.11 至 3.13 程序,通常以 uvx 或 pip 執行。需要已安裝的 Chrome、Edge 或其他 Chromium 瀏覽器;選用的 BiDi 後端需要 PATH 中有 chromedriver 或 geckodriver,Firefox 支援則依賴 geckodriver。未宣告任何 API 金鑰或環境變數。能力分層以 --caps 參數選擇,另提供 HTTP 傳輸模式。
安裝前請注意
此伺服器可控制真實瀏覽器,因此能代替你點擊、輸入、送出表單並變更遠端資料。connect_existing 可重複使用帶有已登入工作階段、Cookie 與擴充功能的 Chrome 設定檔,工作階段關閉時會終止該瀏覽器子程序。它提供隱藏自動化特徵的隱匿模式,可能與網站條款衝突。HTTP 模式搭配 --allow-remote 會綁定到本機以外,應置於反向代理之後。啟用全部分層會向模型上下文加入大量工具定義。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 WaveXisMCP,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

[WaveXisMCP]

MCP server — 220 browser automation tools for LLMs

Chrome + Firefox · CDP + BiDi · 100% Python · zero Node.js · zero Chromium download


English | 简体中文 | 日本語

[CI] [PyPI] [PyPI Downloads] [Python] [Coverage] [Docker] [License] [Docs] [LightNow capabilities]

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

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

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

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

The CDP backend (Chromium) is included by default. For the BiDi backend (Firefox):

bash
pip install "wavexis-mcp[bidi]"

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

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

Or with pip:

json
{  "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:

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

Session mode (multi-step)

Open a session, chain multiple actions, close when done:

text
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:

text
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

TierFlagToolsKey features
Corealways on72Session, navigation, screenshot, PDF, scrape, eval, DOM, input, cookies, tabs, NL interaction, iframe, shadow DOM, events
Network--caps=network20Headers, UA, block, throttle, cache, HAR, intercept, mock, modify req/resp, request body, replay HAR, request list
Storage--caps=storage18localStorage, sessionStorage, cache storage, IndexedDB, state save/restore
Emulation--caps=emulation9Device, viewport, geolocation, timezone, dark mode, locale, CPU, touch, sensors
A11y--caps=a11y4Accessibility tree snapshot, node traversal, axe-core audit
Interactions--caps=interactions5Dialogs, downloads, permissions
DevTools--caps=devtools31Performance, CSS, debugging, overlay, console, security, window mgmt, combined trace, annotated screenshot
Vision--caps=vision7Coordinate-based mouse (pixel-precise)
Video--caps=video4Video recording, chapters, action overlay
Testing--caps=testing6Assertions, locator generation
Workflows--caps=workflows6Multi-action YAML, raw CDP/BiDi, browser context CRUD
Data--caps=data7Codegen, Lighthouse audit, extract, websocket intercept, crawl, visual diff, core web vitals
Experimental--caps=experimental31Service workers, animations, WebAuthn, WebAudio, media, cast, bluetooth, extensions, prefs
Total--caps=all220

Default: --caps=core (72 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 (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. Included by default.
  • 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]"

Select per session:

text
# CDP (default, Chrome/Edge only)wavexis_session_open(backend="cdp")
# BiDi with Chrome (auto-launches chromedriver)wavexis_session_open(backend="bidi", browser="chrome")
# BiDi with Firefox (auto-launches geckodriver)wavexis_session_open(backend="bidi", browser="firefox")

Connect to existing Chrome

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 CDPwavexis_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:

text
wavexis_multi_action(    config="""actions:  - navigate: https://example.com  - screenshot:      full_page: true  - eval: document.title  - click: "#login"  - type:      selector: "#username"      text: [email protected]  - screenshot: {}""",    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:

bash
# HTTP on localhostwavexis-mcp --transport http --port 8765
# HTTP with all tierswavexis-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:

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

When exceeded, the tool returns the standard structured error: {"error": "Rate limit exceeded. Retry after Nms.", "type": "RuntimeError", ...}. Set --rate-limit 0 to disable.

Docker

bash
# Pull and rundocker run -p 8765:8765 ghcr.io/mathiaspaulenko/wavexis-mcp
# Or build locallydocker build -t wavexis-mcp .docker run -p 8765:8765 wavexis-mcp
# Docker Composedocker-compose up

See Docker docs for details.

Comparison

FeaturePlaywright MCPWaveXisMCP
LanguageTypeScriptPython
Node.js required✗✓ (no Node.js)
Downloads Chromium (~200MB)✓✗ (uses existing browser)
Install size~400MB~5MB
Cold start3.2s0.8s
Total tools~21220
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.

Documentation

Full documentation, API reference, and examples are hosted at mathiaspaulenko.github.io/wavexis-mcp.

Key sections:

Error handling

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:

text
WaveXisMCP (MCP server, 220 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

bash
git clone https://github.com/MathiasPaulenko/wavexis-mcp.gitcd wavexis-mcppip install -e ".[dev]"
# Run quality checksruff check wavexis_mcp testsruff format --checkmypy wavexis_mcppython -m bandit -r wavexis_mcp
# Run testspytest 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.

License

MIT

mcp-name: io.github.MathiasPaulenko/wavexis-mcp

來源:README.md,提交 4dc3a3f

工具

0
SourceWeft 尚未在沙箱中啟動過該軟體包,因此其工具未知。

版本歷史

1
  1. v1.6.24最新Sep 16, 2026

評分

已滿足適用檢查項的 50%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分

其他 Wave 整合