A Model Context Protocol (MCP) server that enables AI assistants to interact with web browsers, local Electron applications, and mobile applications using WebdriverIO. Automate Chrome, Firefox…
webdriverio-mcp is an MCP project maintained in the webdriverio/mcp repository. The maintainer describes its purpose as “A Model Context Protocol (MCP) server that enables AI assistants to interact with web browsers, local Electron applications, and mobile applications using WebdriverIO. Automate Chrome…”. Read the project documentation for the complete scope.
The documented npm package is @wdio/mcp. The configuration below comes from the maintainer’s example; adapt its paths and account values to your environment.
Project documentation · Repository · Discovery listing. This profile records the public documentation checked on 2026-10-08.
Check the linked publisher documentation and your connected client's tool list. Names and availability can vary with the server version and account permissions.
| Tool | What it does |
|---|---|
| start_session | Start a browser, local Electron application, or mobile app session; attach: true retains the existing Chrome CDP connection mode |
| attach_session | Attach to an existing remote WebDriver/Appium session by ID without creating a new session |
| launch_chrome | Launch a new Chrome instance with remote debugging enabled (for use with start_session({ attach: true })) |
| close_session | Close or detach from the current session (supports detach: true to disconnect without terminating) |
| emulate_device | Emulate a mobile/tablet device preset (viewport, DPR, UA, touch); requires BiDi session |
| open_web_extension | Install a web extension through WebDriver BiDi and open one of its extension pages so normal page tools can drive its UI |
| navigate | Navigate to a URL |
| get_elements | Get visible, interactable elements on the page. Supports inViewportOnly (default: true) to filter viewport elements, and includeContainers (default: false)… |
| get_accessibility_tree | Get the page accessibility tree with roles, names, and selectors. Supports filtering by role and pagination. Browser-only. |
| get_screenshot | Take a screenshot of the current page or screen (base64-encoded, auto-resized to max 2000px / 1MB) |
| get_tabs | List all open browser tabs with handle, title, URL, and active status. Browser-only. |
| scroll | Scroll in a direction (up/down) by specified pixels. Browser-only. |
| execute_script | Execute arbitrary JavaScript in the browser, or Appium mobile commands on devices |
| execute_electron_script | Execute privileged JavaScript in the Electron main process (Electron sessions only) |
| trigger_electron_deeplink | Trigger an Electron deeplink whose scheme was explicitly configured at session start |
| mock | Configure a session-scoped mock: an Electron main-process API function or a browser network request |
| get_mock_calls | Inspect call arguments (Electron) or intercepted request records (browser) for a session-scoped mock |
| manage_mock | Clear, reset, or restore a session-scoped mock |
| switch_tab | Switch to a different browser tab by handle or 0-based index. Browser-only. |
| switch_frame | Switch into an iframe by CSS/XPath selector, or back to the top-level frame if no selector is given. Browser-only. |
| click_element | Click an element |
| set_value | Type text into input fields |
| get_cookies | Get all cookies for the current session, or a single cookie by name |
| set_cookie | Set a cookie with name, value, and optional attributes |
| delete_cookies | Delete all cookies or a specific cookie |
| tap_element | Tap an element by selector or coordinates |
| swipe | Swipe in a direction (up/down/left/right) |
| drag_and_drop | Drag from one location to another |
| get_contexts | List available automation contexts (NATIVE_APP, WEBVIEW_) and the currently active one |
| switch_context | Switch between native and webview contexts |
| get_app_state | Get the current lifecycle state of a mobile app (not installed / not running / background / foreground) |
| rotate_device | Rotate to portrait or landscape |
| hide_keyboard | Hide on-screen keyboard |
| set_geolocation | Set device GPS location |
| query_docs | Search the official WebdriverIO documentation and return the most relevant excerpts with page, section and source URL. query is required (2-3 distinctive… |
{
"mcpServers": {
"wdio-mcp": {
"command": "npx",
"args": [
"-y",
"@wdio/mcp@latest"
]
}
}
}From the project documentation. Replace placeholders and example paths before connecting.
Use Microsoft’s Playwright MCP server to navigate pages, inspect accessibility snapshots, fill forms and capture browser screenshots.
The original Chromium automation reference server — simple, screenshot-driven browser control.
Give your coding agent the full DevTools toolbox: traces, network, console, heap snapshots and Lighthouse.
Puppeteer-powered browser control that drives pages from the accessibility tree instead of pixels.
Enables AI-powered applications to monitor and interact with browser data via a Chrome extension and MCP.
Automates browsers and APIs, enabling Large Language Models (LLMs) to interact with web pages for tasks like screenshot capture and JavaScript