← Back to directory
W

WebdriverIO MCP Server

Official
Drive browsers and iOS/Android apps with WebDriverIO via MCP
GitHub source repository ↗
★ 37 Stars Category · Browser Popular
62FMRS · C

An official, well-documented, and feature-rich browser and mobile automation MCP server from the WebDriverIO team, covering local and major cloud device platforms with session recording and code export. Best suited to testing, with limitations from its single-session model and mobile platform prerequisites (macOS + Xcode, Appium).

Reliability
9/20
Security and permissions
11/20
Maintenance
11/20
Documentation
17/20
Setup experience
14/20
Read the FMRS scoring method →

WebdriverIO MCP Server is an open-source (MIT) MCP server maintained by the WebDriverIO team that lets AI assistants automate Chrome, Firefox, Edge, and Safari browsers plus iOS and Android mobile apps through a unified interface. Built with TypeScript, WebDriverIO, and Appium, it supports local browser sessions, mobile testing via Appium, five cloud device providers (BrowserStack, Sauce Labs, LambdaTest, TestingBot, Digital.ai), attaching to running Chrome or external WebDriver endpoints, device emulation, cookie management, and session recording with export to runnable WebdriverIO JS. It uses stdio transport by default and offers an --http mode (default port 3000). Only one session can be active at a time.

Tools

start_session
Start a new browser or app session; supports local, cloud providers, and external WebDriver endpoints; attach: true connects to a running Chrome
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 attach sessions
close_session
Close the current session; supports detach: true to disconnect without terminating
emulate_device
Emulate a mobile/tablet device preset (viewport, DPR, UA, touch); requires a BiDi session
open_web_extension
Install a web extension via WebDriver BiDi and open one of its pages so normal page tools can drive its UI
navigate
Navigate to a URL
get_elements
Get visible, interactable elements on the page with viewport filtering and optional layout containers
get_accessibility_tree
Get the page accessibility tree with roles, names, and selectors (browser only)
get_screenshot
Take a base64 screenshot of the current page or screen (auto-resized to max 2000px / 1MB)
get_tabs
List all open browser tabs with handle, title, URL, and active status
scroll
Scroll the page up or down by specified pixels
execute_script
Execute arbitrary JavaScript in the browser or Appium mobile commands on devices
switch_tab
Switch browser tabs by handle or index
switch_frame
Switch into an iframe by CSS/XPath selector or back to the top-level frame
click_element
Click an element
set_value
Type text into input fields
get_cookies
Get all cookies for the 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 a mobile element by selector or coordinates
swipe
Swipe up/down/left/right on a mobile device
drag_and_drop
Perform a drag-and-drop gesture on mobile
get_contexts
List available automation contexts (NATIVE_APP, WEBVIEW_*) and the active one
switch_context
Switch between native and webview contexts
get_app_state
Get the current lifecycle state of a mobile app
rotate_device
Rotate the device to portrait or landscape
hide_keyboard
Hide the on-screen keyboard
set_geolocation
Set the device GPS location
upload_app
Upload a local .apk or .ipa to a cloud provider and get an app reference
list_apps
List apps previously uploaded to a provider's app storage

Setup

Add {"mcpServers":{"wdio-mcp":{"command":"npx","args":["-y","@wdio/mcp@latest"]}}} to your MCP client settings, then fully restart the client. Or install globally: npm install -g @wdio/mcp and use command wdio-mcp. For non-subprocess clients, run npx @wdio/mcp --http --port 3000 to enable HTTP transport. For mobile automation, install Appium globally (npm install -g appium), install platform drivers (iOS: xcuitest, requires macOS + Xcode; Android: uiautomator2, requires Android Studio), and start the appium server first (default http://127.0.0.1:4723). iOS real-device testing requires the device UDID.

claude_desktop_config.json
{"mcpServers":{"wdio-mcp":{"command":"npx","args":["-y","@wdio/mcp@latest"]}}}

Fit and risk

Best for

  • QA engineers who need unified web and mobile automation
  • developers who want to drive browsers and generate test scripts in natural language
  • Teams already using the WebdriverIO/Appium ecosystem who want cloud device integration

Not for

  • Users without macOS + Xcode who need iOS mobile automation
  • Workflows requiring multiple concurrent active sessions (single-session model)
  • Restricted clients that cannot spawn subprocesses and cannot use the HTTP mode

Required permissions

  • Runs local browsers (Chrome/Firefox/Edge/Safari) and their automation drivers
  • Executes npm/npx and an Appium server locally
  • Reads local app package paths (.apk/.app/.ipa)
  • Cloud provider credentials via environment variables (e.g., BROWSERSTACK_USERNAME/ACCESS_KEY, SAUCE_USERNAME/ACCESS_KEY)
  • Network access to cloud provider REST APIs; local tunnels for intranet URLs

Risks and side effects

  • The AI can operate real browsers and devices, potentially touching production accounts or logged-in sessions
  • execute_script allows arbitrary JavaScript execution in the browser
  • Cloud credentials stored in env vars or client config leak if exposed
  • On Digital.ai, pure client-side assertion failures may report as Passed
  • Reading the logs resource clears the log buffer per the WebDriver spec

Troubleshooting

  1. Browser automation failing: verify the browser is installed (Safari needs macOS), fully restart the client, and check for other WebDriver instances
  2. Mobile automation failing: confirm the appium server is running, devices show in adb devices or Xcode, drivers are installed, and app paths are correct
  3. Fully restart the MCP client after config changes
  4. iOS real devices require the 40-character UDID
  5. Only one active session is allowed; close the current session before switching between browser and mobile

Use cases

Have an AI assistant automate basic web workflows such as login and search flows
Test native and hybrid Android/iOS apps on emulators or real devices
Run browser and mobile tests on cloud devices via BrowserStack, Sauce Labs, LambdaTest, TestingBot, or Digital.ai
Attach to a running Chrome to test authenticated or pre-configured sessions
Record automation as runnable WebdriverIO JS scripts for regression testing

Supported clients

Claude DesktopFull support
Claude CodeFull support
ClineFull support
CursorFull support
CodexFull support
GooseFull support
WindsurfFull support
ZedFull support
VS Code (Copilot)Full support