Skip to content
Agentmart
Submit a tool

webdriverio/mcp

MCP server with WebdriverIO for browser and mobile app automation (iOS/Android via Appium)

Connector by webdriverio · GitHub account verified by the MCP Registry

IndexedMITLocal (stdio)★ 43
Write a review

Install

Works with Claude Code, Codex, VS Code, Cursor, Windsurf, Claude Desktop. Read the repository before you give any tool access to your data.

npx agentmarket install connector/webdriverio-mcp

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

MCP server with WebdriverIO for browser and mobile app automation (iOS/Android via Appium)

Use cases: browser-automation, testing

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this server can do and what it asks for, from its tool list, install config and code. Checked Oct 25, 2026.

Tools
12 read · 15 write · 8 delete · 7 not yet classified
Secrets
None asked for
Install scripts
None found
Runs as
Node.js package

Tools by what they do 42

Read from the source code; the running server may list different tools.

Read 12 · Look things up without changing anything.

  • enable_tools
  • get_accessibility_tree
  • get_app_state
  • get_contexts
  • get_cookies
  • get_elements
  • get_mock_calls
  • get_screenshot
  • get_tabs
  • list_apps
  • query_docs
  • snapshot

Write 15 · Create, change, send or run things.

  • attach_session
  • click_element
  • navigate
  • open_web_extension
  • perform_actions
  • press_key
  • scroll
  • select_option
  • set_cookie
  • set_geolocation
  • set_value
  • start_session
Show 3 more tools
  • swipe
  • tap_element
  • upload_app

Delete 8 · Delete, drop, revoke or wipe things.

  • close_session
  • delete_cookies
  • drag_and_drop
  • execute_electron_script
  • execute_script
  • manage_mock
  • mock
  • trigger_electron_deeplink

Not yet classified 7 · We could not tell from the name and description.

  • emulate_device
  • hide_keyboard
  • launch_chrome
  • rotate_device
  • switch_context
  • switch_frame
  • switch_tab

Network hosts it talks to 14

  • api-cloud.browserstack.com · found in code
  • api.browserstack.com · found in code
  • api.eu-central-1.saucelabs.com · found in code
  • api.lambdatest.com · found in code
  • api.testingbot.com · found in code
  • downloads.lambdatest.com · found in code
  • github.com · found in code
  • glama.ai · found in code
  • local-downloads.browserstack.com · found in code
  • manual-api.lambdatest.com · found in code
  • player.vibium.dev · found in code
  • saucelabs.com · found in code
  • testingbot.com · found in code
  • webdriver.io · found in code

Files it touches

  • Your home directory (~)
  • Any path the agent passes to its tools

Tools (42)

Read from the source code; the running server may differ. Descriptions are the server’s own words; hidden characters are shown as [U+…].

  • attach_sessionAttach Session

    Attaches to an existing remote WebDriver or Appium session by ID without creating a new session. Only one session can be active at a time. The externally managed session is detached, not terminated, by default on close.

  • click_elementClick Element

    Clicks an element. On web pages the result lists what changed (new elements with refs, or the new page). In apps it does not: take a snapshot to see the new screen. Several steps in a row: perform_actions.

  • close_sessionClose Sessioncan change or delete data

    Closes the session, or with detach: true disconnects and leaves it running. Attached sessions and Appium sessions with noReset are detached unless detach: false.

  • delete_cookiesDelete Cookiescan change or delete data

    Deletes all cookies or a single cookie by name from the current browser session. Irreversible — deleted cookies cannot be recovered.

  • drag_and_dropDrag and Drop

    Drags an element to another element or to relative x/y offsets. x and y are offsets from the source element, not absolute screen coordinates (unlike tap_element). Provide targetSelector OR both x and y. Mobile-only.

  • emulate_deviceEmulate Device

    Emulates a mobile or tablet device in the current browser session by setting viewport, DPR, user-agent, and touch events. Requires a BiDi-enabled session (start_session with capabilities: { webSocketUrl: true }). Omit device to list available presets. Pass "reset" to restore desktop defaults. Changes persist for all subsequent tool calls until reset or session close. Browser-only.

  • enable_toolsEnable Toolsread-only

    Description is built at runtime.

  • execute_electron_scriptExecute Electron Main-Process Scriptcan change or delete data

    Executes arbitrary JavaScript in the Electron main process. This is privileged code execution with access to Electron APIs; use only with trusted scripts.

  • execute_scriptExecute Script

    Runs JavaScript in the page (`return` a value; string args that match a selector are passed as elements) or, on Appium, a "mobile: <command>" with args. Prefer the dedicated tools for clicks and typing.

  • get_accessibility_treeGet Accessibility Treeread-only

    Returns the page accessibility tree with roles, names, and selectors. Browser-only. Supports filtering by ARIA roles and pagination via limit/offset.

  • get_app_stateGet App Stateread-only

    Returns the current state of a mobile app: not installed, not running, background, or foreground. Mobile-only.

  • get_contextsGet Automation Contextsread-only

    Returns available automation contexts and the currently active one. Use before switch_context to discover NATIVE_APP and WEBVIEW_* targets. Mobile-only.

  • get_cookiesGet Cookiesread-only

    Returns all cookies for the current session, or a single cookie by name. Use to verify auth state, session tokens, or feature flags after login flows.

  • get_elementsGet Visible Elementsread-only

    Returns interactable elements on the current page with selectors, text, and bounding boxes. Supports filtering by element type, viewport visibility, and pagination. Use when the wdio://session/current/elements resource does not return desired elements.

  • get_mock_callsGet Mock Callsread-only

    Read current call arguments for a mock in the active session. Use the same target as mock. mockType defaults to browser in WebDriver sessions and is required in Electron sessions. Electron mocks require apiName and funcName; browser mocks require url and accept method. Appium sessions are unsupported.

Show 27 more tools
  • get_screenshotGet Screenshotread-only

    Takes a screenshot of the current page or screen and returns a base64-encoded image, resized and compressed for model context limits.

  • get_tabsGet Browser Tabsread-only

    Lists all browser tabs with handle, title, URL, and which is active. Use before switch_tab to find the target handle or index. Browser-only.

  • hide_keyboardHide Keyboard

    Dismisses the on-screen keyboard on mobile. Call after text entry when the keyboard obscures elements. No-op if already hidden. Mobile-only.

  • launch_chromeLaunch Chrome

    Launches Chrome with remote debugging enabled. Wipes and recreates a temporary profile directory on each call. Mode "newInstance" (default) runs alongside existing Chrome; "freshSession" starts with an empty profile. Set copyProfileFiles to copy cookies/logins from your Default profile — changes do not sync back. After launch, call start_session with attach: true to connect. Spawns a detached Chrome process that persists if the server exits.

  • list_appsList BrowserStack Appsread-only

    List apps uploaded to BrowserStack App Automate. Reads BROWSERSTACK_USERNAME and BROWSERSTACK_ACCESS_KEY from environment.

  • manage_mockManage Mockcan change or delete data

    Manage a mock in the active session. mockType defaults to browser in WebDriver sessions and is required in Electron sessions. Electron mocks require apiName and funcName; browser mocks require url and accept method. Appium sessions are unsupported. clear removes call history, reset also removes configured behavior and queued values, restore reinstates the original and releases the mock.

  • mockConfigure Mockcan change or delete data

    Configure a session-scoped mock. mockType defaults to browser in WebDriver sessions and is required in Electron sessions. Browser mocks intercept network requests matched by a url glob and require a BiDi-enabled session (start_session with capabilities: { webSocketUrl: true }); in Electron sessions they additionally require the session to have negotiated BiDi. Electron mocks require apiName and funcName. Appium sessions are unsupported. Omit behavior to observe: record matching requests (e.g. url '**/*') without altering them, then read them with get_mock_calls. Repeated calls preserve call hi…

  • navigateNavigate to URL

    Loads a URL in the current tab and waits for the page load event. Resets page state — DOM, JS runtime, timers, and frame context are destroyed. Use instead of clicking links when the target URL is known.

  • open_web_extensionOpen Web Extension

    Installs a web extension through WebDriver BiDi and opens one of its extension pages so existing MCP tools can inspect and drive its UI. Requires a BiDi-enabled browser session. Use base64 for cloud/remote sessions where the browser driver cannot read the MCP server filesystem.

  • perform_actionsPerform Actions

    Runs several actions in one call, e.g. fill a form and submit it, on the page or app screen, and returns what each one changed on web pages. Steps the current session does not support are rejected before any step runs. Stops at the first failure, when a step loads a new page, or before a key press that follows a click, select, check or uncheck that changed the page (continue with the new refs). value is the text for fill, the option for select and the keys for press.

  • press_keyPress Key

    Presses a key or combination in the focused element, e.g. Enter, Tab, Escape, Control+a. The result lists what changed on the page. Several steps in a row: perform_actions.

  • query_docsQuery WebdriverIO Docsread-only

    Search the official WebdriverIO documentation and return the most relevant excerpts with page, section and source URL. Use before answering any question about WebdriverIO APIs, configuration, services, reporters, selectors, or debugging. Query with 2-3 distinctive keywords, never a sentence: "appium setup", "devtools trace.zip" and "allure reporter" each return the right page first, while "how do I wire up appium in my config file" does not. A word can also collide with an unrelated page — `wire` matches Wire Protocol — so if a query misses, retry with the exact page title, which beats any pa…

  • rotate_deviceRotate Device

    Rotates a mobile device to portrait or landscape orientation. Waits for the OS rotation animation to complete. Use to test orientation-dependent layouts. Mobile-only; no effect in browser sessions.

  • scrollScroll Page

    Scrolls the page vertically by a pixel amount. Browser-only — for mobile scrolling use swipe. Only supports up/down; no horizontal scrolling.

  • select_optionSelect Option

    Selects an option of a <select> by its text. The result lists what changed on the page. Several steps in a row: perform_actions.

  • set_cookieSet Cookie

    Sets a browser cookie on the active session. The browser must already be on the target domain — cookies cannot be set cross-domain. Use to inject session tokens or feature flags without login flows.

  • set_geolocationSet Geolocation

    Overrides GPS coordinates for the session. Affects navigator.geolocation in browsers and location services on mobile. Location permissions must already be granted to the app.

  • set_valueSet Input Value

    Replaces the text of an input or textarea. On web pages the result lists what changed (new elements with refs, or the new page). In apps it does not: take a snapshot to see the new screen. To fill several fields or fill and then click, use one perform_actions call.

  • snapshotPage Snapshotread-only

    The page or app screen as an accessibility tree with refs, e.g. `button "Save" [ref=e3]`. Pass refs to perform_actions for several steps, or to click_element/set_value/select_option for one. Default: interactive elements only, plain text is dropped; full: true shows it. find returns only the parts of the page that contain the text (with their refs); full: true includes all text; viewport: true limits it to what is on screen (not together with find).

  • start_sessionStart Session

    Starts a browser, Electron app or mobile app session (closes the active one). Browsers run headless at 1280x800 by default; pass navigationUrl to open a page right away. attach: true connects to a running Chrome via CDP.

  • swipeSwipe Screen

    Performs a full-screen swipe gesture. Direction is content movement — "up" scrolls content upward (finger moves down). For browser scrolling use scroll; for dragging a specific element use drag_and_drop. No error if content cannot scroll further. Mobile-only.

  • switch_contextSwitch Context

    Switches between native and webview automation contexts in a hybrid mobile app. In NATIVE_APP context, use accessibility IDs; in WEBVIEW_* context, use CSS/XPath. Changes persist for all subsequent commands. Accepts context name or 1-based index. Use get_contexts to discover available targets. Mobile-only.

  • switch_frameSwitch Frame

    Switches into an iframe (ref or selector), or back to the top page when selector is omitted. Later tools act inside the frame until you switch back. Returns the frame's elements.

  • switch_tabSwitch Browser Tab

    Switches to a tab by handle or 0-based index (see get_tabs). Later tools act on that tab.

  • tap_elementTap Element

    Taps an element (ref from snapshot, or selector) or taps at absolute screen coordinates (x, y). A tap on an element lists what changed on the screen. No scroll-into-view or wait — element must already be visible on screen. Use instead of click_element on iOS where element.click() is ignored. Provide selector OR both x and y. Mobile-only.

  • trigger_electron_deeplinkTrigger Electron Deeplinkcan change or delete data

    Triggers a deeplink through the active Electron application. The Electron session must be started with electronDeeplinkScheme matching the URL scheme. Packaged binaries are required for deeplinks on Windows and Linux.

  • upload_appUpload App to BrowserStack

    Upload a local .apk or .ipa to BrowserStack App Automate. Returns a bs:// URL for use in start_session.

Signals

Stars
43
Forks
16
Open issues
2
Last commit
Oct 8, 2026 (21 days ago)
Last release
Oct 25, 2026 (4 days ago)

From GitHub (fetched Oct 24, 2026).

Details

Registry name
io.github.webdriverio/mcp
Version
4.0.1
Auth
No auth
Packages
npm @wdio/mcp
License
MIT
First seen
Oct 24, 2026
Last checked
Oct 26, 2026

More from webdriverio

Cite this page

webdriverio/mcp. Agent Mart. https://agentmart.dev/connectors/webdriverio-mcp (last updated 2026-10-26)