webdriverio/mcp

webdriverio/mcp

от webdriverio
Управляйте браузерами и мобильными приложениями через WebDriverIO с MCP-сервером. Автоматизируйте Chrome, Firefox, Edge, Safari, iOS и Android: навигация, клики, скриншоты. Оптимален для тестирования.

WebDriverIO MCP Server

A Model Context Protocol (MCP) server that enables AI assistants to interact with web browsers and mobile applications using WebDriverIO. Automate Chrome, Firefox, Edge, and Safari browsers plus iOS and Android apps—all through a unified interface.

Installation

mcp MCP server

Add the following configuration to your MCP client settings:

Standard config (works in most clients):

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

Install in VS Code Install in VS Code Insiders Install in Cursor

Claude Desktop

Edit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS), %APPDATA%\Claude\claude_desktop_config.json (Windows), or ~/.config/Claude/claude_desktop_config.json (Linux):

{
  "mcpServers": {
    "wdio-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "@wdio/mcp@latest"
      ]
    }
  }
}
Claude Code
claude mcp add wdio-mcp -- npx -y @wdio/mcp@latest
Cline

Add to your VS Code settings.json or cline_mcp_settings.json file:

Инструменты были проиндексированы:
attach_session

Прикрепляется к существующему удаленному сеансу WebDriver или Appium по идентификатору без создания нового сеанса. Одновременно может быть активен только один сеанс. Внешне управляемый сеанс по умолчанию отсоединяется, а не завершается при закрытии.

Параметры
  • appiumConfigobject

    Appium server connection (local provider only)

  • automationNameenum

    Appium automation driver for local command registration (mobile platforms only)

  • browserenum

    Browser for local command registration (browser platform only, default: chrome)

  • capabilitiesobject

    Capabilities used to register the correct browser or Appium command surface locally; they are not sent to the remote endpoint

  • platformenumобязательный

    Existing session platform type

  • providerenum

    Provider hosting the existing session (default: local). Use "external" for a custom W3C WebDriver endpoint.

  • regionenum

    Sauce Labs region (default: eu-central-1). Only used with provider: "saucelabs".

  • sessionIdstringобязательный

    Existing remote WebDriver/Appium session ID

  • traceboolean

    Enable trace recording for subsequent commands — produces a Playwright-compatible zip saved to .trace/ on close_session.

  • webdriverConfigobject

    Existing W3C WebDriver endpoint connection (provider: "external" only). Defaults to 127.0.0.1:4445/.

click_element

Ожидает элемент, прокручивает его в область видимости и вызывает element.click(). Может вызывать навигацию, отправку форм или модальные окна. Только в браузерных сессиях — на iOS element.click() игнорируется без сообщения; используйте tap_element. Тайм-аут по умолчанию: 3000 мс.

Параметры
  • scrollToViewboolean

    Whether to scroll the element into view before clicking

  • selectorstringобязательный

    Value for the selector, in the form of css selector or xpath ("button.my-class" or "//button[@class='my-class']" or "button=Exact text with spaces" or "a*=Link containing text")

  • timeoutnumber

    Maximum time to wait for element in milliseconds

close_session

Закрывает текущую сессию или отсоединяется без завершения. Отсоединение сохраняет состояние приложения на сервере Appium: сессии с noReset: true автоматически отсоединяются по умолчанию. Закрытие сессии браузера attach завершает chromedriver, но процесс Chrome, запущенный через launch_chrome, продолжает работать.

Параметры
  • detachboolean

    If true, disconnect without terminating; if false, terminate. When omitted, externally managed and auto-detach sessions are preserved while other sessions are terminated.

delete_cookiesидемпотентный

Удаляет все cookie-файлы или один cookie-файл по имени из текущего сеанса браузера. Необратимо: удалённые cookie-файлы невозможно восстановить.

Параметры
  • namestring

    Optional cookie name to delete a specific cookie. If not provided, deletes all cookies

drag_and_drop

Перетаскивает элемент на другой элемент или на относительные смещения x/y. x и y — это смещения от исходного элемента, а не абсолютные координаты экрана (в отличие от tap_element). Укажите targetSelector ИЛИ оба параметра x и y. Только для мобильных.

Параметры
  • durationnumber

    Drag duration in milliseconds

  • sourceSelectorstringобязательный

    Source element selector to drag

  • targetSelectorstring

    Target element selector to drop onto

  • xnumber

    Target X offset (if no targetSelector)

  • ynumber

    Target Y offset (if no targetSelector)

emulate_deviceидемпотентный

Эмулирует мобильное устройство или планшет в текущем сеансе браузера, устанавливая viewport, DPR, user-agent и события касания. Требует сеанс с поддержкой BiDi (start_session с capabilities: { webSocketUrl: true }). Опустите device, чтобы вывести список доступных пресетов. Передайте "reset", чтобы восстановить настройки рабочего стола по умолчанию. Изменения сохраняются для всех последующих вызовов инструмента до сброса или закрытия сеанса. Только для браузера.

Параметры
  • devicestring

    Device preset name (e.g. "iPhone 15", "Pixel 7"). Omit to list available presets. Pass "reset" to restore desktop defaults.

execute_script

Выполняет произвольный JavaScript в контексте страницы браузера или команды Appium mobile. Может читать/изменять DOM, запускать события, завершать приложения или выполнять команды Android shell — используйте только, когда ни один специальный инструмент не покрывает это действие. Браузер: передавайте JS в скрипте, используйте 'return' для значений, строковые аргументы, соответствующие селекторам, автоматически разрешаются в элементы. Mobile: используйте синтаксис 'mobile: <command>' в скрипте с массивом args (например, "mobile: pressKey", "mobile: activateApp"). Для стандартных взаимодействий предпочитайте click_element/set_value/get_elements.

Параметры
  • argsany[]

    Arguments to pass to the script. For browser: element selectors or values. For mobile commands: command-specific parameters as objects.

  • scriptstringобязательный

    JavaScript code (browser) or mobile command string like "mobile: pressKey" (Appium)

get_accessibility_treeтолько чтениеидемпотентный

Возвращает дерево доступности страницы с ролями, именами и селекторами. Только для браузера. Поддерживает фильтрацию по ARIA-ролям и пагинацию через limit/offset.

Параметры
  • limitnumber

    Maximum number of nodes to return (0 = no limit)

  • offsetnumber

    Number of nodes to skip for pagination

  • rolesstring[]

    Filter by ARIA roles, e.g. ["button", "link", "heading"]

get_app_stateтолько чтениеидемпотентный

Возвращает текущее состояние мобильного приложения: не установлено, не запущено, в фоне или на переднем плане. Только для мобильных устройств.

Параметры
  • bundleIdstringобязательный

    App bundle ID (iOS) or package name (Android), e.g. "com.example.app"

get_contextsтолько чтениеидемпотентный

Возвращает доступные контексты автоматизации и текущий активный контекст. Используйте перед switch_context, чтобы обнаружить цели NATIVE_APP и WEBVIEW_*. Только для мобильных устройств.

Параметры

Без параметров.

get_cookiesтолько чтениеидемпотентный

Возвращает все cookies для текущей сессии или один cookie по имени. Используйте для проверки состояния аутентификации, сессионных токенов или feature flags после выполнения входа.

Параметры
  • namestring

    Cookie name to retrieve a specific cookie. If omitted, returns all cookies.

get_elementsтолько чтениеидемпотентный

Возвращает интерактивные элементы на текущей странице с селекторами, текстом и ограничивающими рамками. Поддерживает фильтрацию по типу элемента, видимости в области просмотра и пагинацию. Используйте, когда ресурс wdio://session/current/elements не возвращает нужные элементы.

Параметры
  • includeBoundsboolean

    Include element bounding box coordinates (default: false)

  • includeContainersboolean

    Include container elements like divs and sections (default: false)

  • inViewportOnlyboolean

    Only return elements visible in the current viewport (default: false).

  • limitnumber

    Maximum number of elements to return (0 = no limit)

  • offsetnumber

    Number of elements to skip (for pagination)

get_screenshotтолько чтениеидемпотентный

Делает снимок экрана текущей страницы или экрана и возвращает изображение в формате base64, изменённое в размере и сжатое для учёта ограничений контекста модели.

Параметры

Без параметров.

get_tabsтолько чтениеидемпотентный

Выводит список всех вкладок браузера с handle, title, URL и указанием, какая из них активна. Используйте перед switch_tab, чтобы найти нужный handle или индекс. Только для браузера.

Параметры

Без параметров.

hide_keyboardидемпотентный

Скрывает экранную клавиатуру на мобильных устройствах. Вызывайте после ввода текста, когда клавиатура перекрывает элементы. Ничего не делает, если уже скрыта. Только для мобильных.

Параметры

Без параметров.

launch_chrome

Запускает Chrome с включённой удалённой отладкой. При каждом вызове очищает и создаёт заново временную директорию профиля. Режим "newInstance" (по умолчанию) работает вместе с существующим Chrome; "freshSession" запускается с пустым профилем. Установите copyProfileFiles, чтобы скопировать куки/логины из вашего Default profile - изменения не синхронизируются обратно. После запуска вызовите start_session с attach: true для подключения. Порождает отсоединённый процесс Chrome, который продолжает работу, если сервер завершится.

Параметры
  • copyProfileFilesboolean

    Copy your Default Chrome profile (cookies, logins) into the debug session.

  • modeenum

    newInstance: open alongside existing Chrome | freshSession: clean profile

  • portnumber

    Remote debugging port (default: 9222)

list_appsтолько чтениеидемпотентный

Выводит список приложений, загруженных в облачного провайдера (BrowserStack App Automate, Sauce Labs App Storage, TestMu Real Device Cloud, TestingBot Storage или Digital.ai Applications). Считывает специфичные для провайдера учетные данные из окружения.

Параметры
  • limitinteger

    Maximum number of apps to return (only applies when organizationWide is true, default 20)

  • organizationWideboolean

    (BrowserStack only) List apps uploaded by all users in the organization. Defaults to false (own uploads only).

  • providerenumобязательный

    Cloud provider

  • regionenum

    Sauce Labs region (default: eu-central-1)

  • sortByenum

    Sort order for results

navigateидемпотентный

Загружает URL в текущей вкладке и ожидает события загрузки страницы. Сбрасывает состояние страницы: DOM, среда выполнения JS, таймеры и контекст фрейма уничтожаются. Используйте вместо нажатия на ссылки, если целевой URL известен.

Параметры
  • urlstringобязательный

    The URL to navigate to

open_web_extension

Устанавливает веб-расширение через WebDriver BiDi и открывает одну из его страниц, чтобы существующие MCP-инструменты могли инспектировать и управлять её интерфейсом. Требуется сессия браузера с поддержкой BiDi. Используйте base64 для облачных/удалённых сессий, где драйвер браузера не может прочитать файловую систему MCP-сервера.

Параметры
  • extensionDataobjectобязательный

    W3C BiDi webExtension.ExtensionData: unpacked directory path, archive path, or base64 archive.

  • pathstringобязательный

    Path inside the extension package, such as options.html or popup.html. Leading slashes are ignored.

rotate_deviceидемпотентный

Поворачивает мобильное устройство в портретную или ландшафтную ориентацию. Ожидает завершения анимации поворота ОС. Используйте для проверки макетов, зависящих от ориентации. Только для мобильных устройств; в браузерных сессиях не работает.

Параметры
  • orientationenumобязательный

    Device orientation

scroll

Прокручивает страницу по вертикали на заданное количество пикселей. Только для браузера — для мобильной прокрутки используйте свайп. Поддерживает только движение вверх/вниз, горизонтальная прокрутка отсутствует.

Параметры
  • directionenumобязательный

    Scroll direction

  • pixelsnumber

    Number of pixels to scroll

set_cookieидемпотентный

Устанавливает cookie браузера на активной сессии. Браузер уже должен находиться на целевом домене - cookie нельзя установить кросс-доменно. Используйте, чтобы внедрить токены сессий или функциональные флаги без входа в систему.

Параметры
  • domainstring

    Cookie domain (defaults to current domain)

  • expirynumber

    Expiry date as Unix timestamp in seconds

  • httpOnlyboolean

    HttpOnly flag

  • namestringобязательный

    Cookie name

  • pathstring

    Cookie path (defaults to "/")

  • sameSiteenum

    SameSite attribute

  • secureboolean

    Secure flag

  • valuestringобязательный

    Cookie value

set_geolocationидемпотентный

Переопределяет GPS-координаты для сессии. Влияет на navigator.geolocation в браузерах и службы геолокации на мобильных устройствах. Разрешения на определение местоположения уже должны быть предоставлены приложению.

Параметры
  • altitudenumber

    Altitude in meters (optional)

  • latitudenumberобязательный

    Latitude coordinate

  • longitudenumberобязательный

    Longitude coordinate

set_valueидемпотентный

Очищает поле ввода или textarea, затем вводит заданный текст посимвольно. Всегда заменяет существующее содержимое: сначала выполняется clearValue(). Вызывает события input, change и key, которые могут запустить валидацию или автозаполнение. По умолчанию прокручивает в область видимости.

Параметры
  • scrollToViewboolean

    Whether to scroll the element into view before typing

  • selectorstringобязательный

    Value for the selector, in the form of css selector or xpath ("button.my-class" or "//button[@class='my-class']")

  • timeoutnumber

    Maximum time to wait for element in milliseconds

  • valuestringобязательный

    Text to enter into the element

start_session

Запускает сессию автоматизации браузера или мобильного устройства. Одновременно может быть активна только одна сессия: запуск новой сначала закрывает текущую. Используйте platform "browser" с названием браузера или "ios"/"android" с deviceName. Установите attach: true, чтобы подключиться к запущенному Chrome через CDP вместо запуска нового браузера.

Параметры
  • appstring

    App URL (bs://... for BrowserStack, storage:filename= for Sauce Labs, lt://... for TestMu, tb://... for TestingBot, cloud:<package-or-bundle> for Digital.ai mobile sessions)

  • appiumConfigobject

    Appium server connection (local provider only)

  • appPathstring

    Path to app file (.app/.apk/.ipa)

  • appWaitActivitystring

    Activity to wait for on Android launch

  • attachboolean

    Attach to existing Chrome instead of launching

  • attachConfigobject

    Chrome remote debugging connection (attach mode only, defaults: port 9222, host localhost)

  • autoAcceptAlertsboolean

    Auto-accept alerts (default: true)

  • autoDismissAlertsboolean

    Auto-dismiss alerts (default: false)

  • autoGrantPermissionsboolean

    Auto-grant app permissions (default: true)

  • automationNameenum

    Automation driver

  • browserenum

    Browser to launch (required for browser platform)

  • browserstackLocalstring | boolean

    Deprecated: use "tunnel" instead. Enable BrowserStack Local tunnel routing.

  • browserVersionstring

    Browser version (cloud providers only, default: latest)

  • capabilitiesobject

    Additional capabilities to merge

  • deviceNamestring

    Mobile device/emulator/simulator name (required for ios/android)

  • deviceQuerystring

    Digital.ai device selection query for dynamic allocation, e.g. "@os='android' and @version='14' and @name='.Pixel.'". Only used with provider: "digitalai" mobile sessions; if omitted, one is built from deviceName/platformVersion.

  • fullResetboolean

    Uninstall app before/after session

  • headlessboolean

    Run browser in headless mode (default: true)

  • navigationUrlstring

    URL to navigate to after starting

  • newCommandTimeoutnumber

    Appium command timeout in seconds

  • noResetboolean

    Preserve app data between sessions

  • osstring

    Operating system for cloud provider browser sessions (e.g. "Windows", "Mac", "macOS", "Linux"). BrowserStack: sets bstack:options.os separately. TestMu/Sauce Labs/TestingBot: combined with osVersion into W3C platformName. Digital.ai: combined with osVersion into the digitalai:osName capability (e.g. "Mac OS Sequoia", "Windows 10") — required for the grid to match a node. Browser platform only.

  • osVersionstring

    OS version for cloud provider browser sessions (e.g. "11", "15", "Monterey"). BrowserStack: sets bstack:options.osVersion separately. TestMu/Sauce Labs/TestingBot: combined with os into W3C platformName. Digital.ai: combined with os into digitalai:osName. Browser platform only.

  • platformenumобязательный

    Session platform type

  • platformVersionstring

    OS version for mobile sessions (e.g., "17.0", "14"). Mobile (ios/android) only.

  • providerenum

    Session provider (default: local). Use "external" to connect to an externally managed W3C WebDriver endpoint. "digitalai" requires DIGITALAI_CLOUD_URL + DIGITALAI_ACCESS_KEY env vars.

  • regionenum

    Sauce Labs region (default: eu-central-1). Only used with provider: "saucelabs".

  • reportingobject

    Cloud provider reporting labels (project, build, session)

  • saucelabsLocalstring | boolean

    Deprecated: use "tunnel" instead. Enable Sauce Connect tunnel routing.

  • testmuLocalstring | boolean

    Deprecated: use "tunnel" instead. Enable TestMu Tunnel routing.

  • traceboolean

    Enable trace recording — produces a Playwright-compatible zip saved to .trace/ on close_session, playable at player.vibium.dev.

  • tunnelstring | boolean

    Enable local tunnel routing (cloud providers only, default: false). true = auto-start tunnel before session and stop on close. "external" = tunnel already running externally.

  • tunnelNamestring

    Tunnel identifier name. With tunnel: "external" this must match the running tunnel. With tunnel: true a unique name is auto-generated if not provided.

  • udidstring

    Unique Device Identifier for iOS real device

  • webdriverConfigobject

    Existing W3C WebDriver endpoint connection (provider: "external" only). Defaults to 127.0.0.1:4445/.

  • windowHeightnumber

    Browser window height

  • windowWidthnumber

    Browser window width

swipe

Выполняет жест смахивания на весь экран. Направление определяет движение контента: «вверх» прокручивает контент вверх (палец движется вниз). Для прокрутки в браузере используйте scroll; для перетаскивания конкретного элемента — drag_and_drop. Ошибка не возникает, если контент нельзя прокрутить дальше. Только для мобильных устройств.

Параметры
  • directionenumобязательный

    Swipe direction

  • durationnumber

    Swipe duration in milliseconds (default: 500)

  • percentnumber

    Percentage of screen to swipe (0-1, default: 0.5 for up/down, 0.95 for left/right)

switch_contextидемпотентный

Переключает контексты автоматизации между нативным и webview в гибридном мобильном приложении. В контексте NATIVE_APP используйте accessibility ID; в контексте WEBVIEW_* используйте CSS/XPath. Изменения сохраняются для всех последующих команд. Принимает имя контекста или индекс, начиная с 1. Используйте get_contexts, чтобы узнать доступные цели. Только для мобильных устройств.

Параметры
  • contextstringобязательный

    Context name to switch to (e.g., "NATIVE_APP", "WEBVIEW_com.example.app", or use index from wdio://session/current/contexts resource)

switch_frameидемпотентный

Переключает контекст фрейма WebDriver внутрь iframe по CSS/XPath селектору, или обратно на верхний уровень, если селектор не указан. Изменения сохраняются — все последующие вызовы click_element, set_value, get_elements работают внутри переключенного фрейма, пока вы не переключитесь обратно. Ожидает появления iframe до 5 секунд. Только для браузера.

Параметры
  • selectorstring

    CSS/XPath selector for the iframe element. Omit to switch back to the top-level frame.

switch_tabидемпотентный

Фокусирует вкладку браузера по её дескриптору (handle) или индексу, начиная с 0. Все последующие вызовы инструментов работают с активной вкладкой. Передавайте handle или индекс — используйте get_tabs, чтобы их получить. Только для браузера; для мобильных WebView используйте switch_context.

Параметры
  • handlestring

    Window handle to switch to

  • indexinteger

    0-based tab index to switch to

tap_element

Выполняет тап по найденному элементу через element.tap() или по абсолютным координатам экрана (x, y). Без прокрутки в область видимости или ожидания — элемент уже должен быть на экране. Используйте вместо click_element на iOS, где element.click() игнорируется. Укажите селектор ИЛИ оба значения x и y. Только для мобильных устройств.

Параметры
  • selectorstring

    Element selector (CSS, XPath, accessibility ID, or UiAutomator)

  • xnumber

    X coordinate for screen tap (if no selector provided)

  • ynumber

    Y coordinate for screen tap (if no selector provided)

upload_app

Загружает локальный .apk или .ipa в облачного провайдера (BrowserStack, Sauce Labs, TestMu, TestingBot или Digital.ai). Возвращает URL приложения для использования в start_session.

Параметры
  • customIdstring

    Optional custom ID for the app (used to reference it later)

  • pathstringобязательный

    Absolute path to the .apk or .ipa file

  • providerenumобязательный

    Cloud provider

  • regionenum

    Sauce Labs region (default: eu-central-1)

Похожие MCP-сервера

freema/firefox-devtools-mcp

freema/firefox-devtools-mcp

MCP-сервер от Mozilla для автоматизации Firefox через WebDriver BiDi. Позволяет ИИ-агентам (Claude, Cursor) управлять браузером: навигация, скриншоты и работа с консолью/сетью. Полезен разработчика...

TypeScript401
ofershap/real-browser-mcp

ofershap/real-browser-mcp

MCP-сервер и Chrome-расширение, которые подключают AI-агента к вашему реальному браузеру — с сохранёнными сессиями и куками. Разработчики могут поручать агенту клики, ввод текста, скриншоты и прове...

JavaScript50
achiya-automation/safari-mcp

achiya-automation/safari-mcp

Используйте Safari MCP сервер для AI-агентов на macOS - ваш реальный браузер с сессиями, куками и 96 инструментами. Работает без Chrome, на нативном WebKit, с низким нагревом.

JavaScript183
mobile-next/mobile-mcp

mobile-next/mobile-mcp

MCP сервер для мобильной автоматизации iOS и Android на симуляторах, эмуляторах и реальных устройствах. Взаимодействует с приложениями через accessibility-деревья и скриншоты. Подходит для тестирования, data-entry, агентных систем и LLM-сценариев.

TypeScript6638
todah-zg/codemagic-mcp

todah-zg/codemagic-mcp

AI-агенты полностью управляют CI/CD для мобильных iOS и Android: от подключения репозитория в Codemagic до сборки, подписания и публикации в App Store и Google Play. Всё через единый MCP-сервер.

TypeScript1
babelcloud/gru-sandbox

babelcloud/gru-sandbox

GBOX - MCP сервер, дающий ИИ-агентам возможность управлять Android и Linux окружениями для тестирования и автоматизации. Подключается к Claude Code, Cursor и другим агентам через MCP, расширяя их возможности.

Go181
© Каталог MCP, 2026. Все права защищены.
Проект не аффилирован с Anthropic и любыми упомянутыми продуктами.
Все названия и торговые марки принадлежат их владельцам.
Контакты для связи: hi@mcp-katalog.ru

Лука Никитин