Перейти до основного вмісту

Конфігурація

Ця сторінка документує всі параметри конфігурації для WebdriverIO MCP сервера.

Конфігурація MCP Сервера​

MCP сервер налаштовується через конфігураційні файли Claude Desktop або Claude Code.

Базова конфігурація​

macOS​

Відредагуйте ~/Library/Application Support/Claude/claude_desktop_config.json:

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

Windows​

Відредагуйте %APPDATA%\Claude\claude_desktop_config.json:

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

Claude Code​

Відредагуйте файл .claude/settings.json вашого проєкту:

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

Змінні середовища​

Налаштуйте з'єднання з сервером Appium та інші параметри через змінні середовища.

З'єднання з Appium​

ЗміннаТипЗа замовчуваннямОпис
APPIUM_URLstring127.0.0.1Хост Appium сервера
APPIUM_URL_PORTnumber4723Порт Appium сервера
APPIUM_PATHstring/Шлях Appium сервера

Приклад із змінними середовища​

{
"mcpServers": {
"wdio-mcp": {
"command": "npx",
"args": ["-y", "@wdio/mcp"],
"env": {
"APPIUM_URL": "192.168.1.100",
"APPIUM_URL_PORT": "4724",
"APPIUM_PATH": "/wd/hub"
}
}
}
}

Параметри сесії браузера​

Опції, доступні при запуску сесії браузера через інструмент start_browser.

headless​

  • Тип: boolean
  • Обов'язково: Ні
  • За замовчуванням: false

Запускає Chrome у режимі без графічного інтерфейсу (без видимого вікна браузера). Корисно для CI/CD середовищ або коли не потрібно бачити браузер.

windowWidth​

  • Тип: number
  • Обов'язково: Ні
  • За замовчуванням: 1920
  • Діапазон: 400 - 3840

Початкова ширина вікна браузера в пікселях.

windowHeight​

  • Тип: number
  • Обов'язково: Ні
  • За замовчуванням: 1080
  • Діапазон: 400 - 2160

Початкова висота вікна браузера в пікселях.

  • Тип: string
  • Обов'язково: Ні

URL для переходу одразу після запуску браузера. Це ефективніше, ніж викликати start_browser, а потім окремо navigate.

Приклад: Запустити браузер і перейти одним викликом:

Start Chrome and navigate to https://webdriver.io

Параметри мобільної сесії​

Опції, доступні при запуску сесії мобільного додатку через інструмент start_app_session.

Параметри платформи​

platform​

  • Тип: string
  • Обов'язково: Так
  • Значення: iOS | Android

Мобільна платформа для автоматизації.

platformVersion​

  • Тип: string
  • Обов'язково: Ні

Версія ОС пристрою/симулятора/емулятора (наприклад, 17.0 для iOS, 14 для Android).

automationName​

  • Тип: string
  • Обов'язково: Ні
  • Значення: XCUITest (iOS), UiAutomator2 | Espresso (Android)

Драйвер автоматизації для використання. За замовчуванням XCUITest для iOS та UiAutomator2 для Android.

Параметри пристрою​

deviceName​

  • Тип: string
  • Обов'язково: Так

Назва пристрою, симулятора або емулятора для використання.

Приклади:

  • iOS Simulator: iPhone 15 Pro, iPad Air (5th generation)
  • Android Emulator: Pixel 7, Nexus 5X
  • Реальний пристрій: Назва пристрою, як показано у вашій системі

udid​

  • Тип: string
  • Обов'язково: Ні (Обов'язково для реальних пристроїв iOS)

Унікальний ідентифікатор пристрою. Обов'язковий для реальних пристроїв iOS (40-символьний ідентифікатор) і рекомендований для реальних пристроїв Android.

Як знайти UDID:

  • iOS: Підключіть пристрій, відкрийте Finder/iTunes, натисніть на пристрій → Серійний номер (натисніть, щоб показати UDID)
  • Android: Виконайте adb devices в терміналі

Параметри додатку​

appPath​

  • Тип: string
  • Обов'язково: Ні*

Шлях до файлу додатку для встановлення та запуску.

Підтримувані формати:

  • iOS Simulator: директорія .app
  • iOS Real Device: файл .ipa
  • Android: файл .apk

*Або має бути надано appPath, або noReset: true для підключення до вже запущеного додатку.

appWaitActivity​

  • Тип: string
  • Обов'язково: Ні (тільки для Android)

Activity, яку слід очікувати при запуску додатку. Якщо не вказано, використовується основна/стартова activity додатку.

Приклад: com.example.app.MainActivity

Параметри стану сесії​

noReset​

  • Тип: boolean
  • Обов'язково: Ні
  • За замовчуванням: false

Зберігає стан додатку між сесіями. Коли true:

  • Дані додатку зберігаються (стан входу, налаштування тощо)
  • Сесія буде відʼєднана замість закриття (додаток продовжує працювати)
  • Корисно для тестування сценаріїв користувача через кілька сесій
  • Може використовуватися без appPath для підключення до вже запущеного додатку

fullReset​

  • Тип: boolean
  • Обов'язково: Ні
  • За замовчуванням: true

Повністю скидає додаток перед сесією. Коли true:

  • iOS: Видаляє та перевстановлює додаток
  • Android: Очищує дані та кеш додатку
  • Корисно для початку з чистого стану

Встановіть fullReset: false з noReset: true, щоб повністю зберегти стан додатку.

Таймаут сесії​

newCommandTimeout​

  • Тип: number
  • Обов'язково: Ні
  • За замовчуванням: 60

Скільки часу (в секундах) Appium чекатиме на нову команду, перш ніж припустити, що клієнт вийшов, і завершити сесію. Збільште це значення для довших сесій налагодження.

Приклади:

  • 60 - За замовчуванням, підходить для більшості автоматизацій
  • 300 - 5 хвилин, для налагодження або повільніших операцій
  • 600 - 10 хвилин, для дуже довгих тестів

Параметри автоматичної обробки​

autoGrantPermissions​

  • Тип: boolean
  • Обов'язково: Ні
  • За замовчуванням: true

Автоматично надає дозволи додатку при встановленні/запуску. Коли true:

  • Дозволи для камери, мікрофона, місцезнаходження тощо надаються автоматично
  • Не потрібна ручна обробка діалогів дозволів
  • Спрощує автоматизацію, уникаючи спливаючих вікон дозволів
Тільки для Android

Ця опція в основному впливає на Android. Дозволи iOS повинні оброблятися інакше через системні обмеження.

autoAcceptAlerts​

  • Тип: boolean
  • Обов'язково: Ні
  • За замовчуванням: true

Автоматично приймає системні сповіщення (діалоги), що з'являються під час автоматизації.

Приклади автоматично прийнятих сповіщень:

  • "Дозволити сповіщення?"
  • "Додаток хоче отримати доступ до вашого місцезнаходження"
  • "Дозволити додатку доступ до фотографій?"

autoDismissAlerts​

  • Тип: boolean
  • Обов'язково: Ні
  • За замовчуванням: false

Відхиляє (скасовує) системні сповіщення замість прийняття. Має пріоритет над autoAcceptAlerts, якщо встановлено на true.

Перевизначення Appium сервера​

Ви можете перевизначити з'єднання з Appium сервером окремо для кожної сесії:

appiumHost​

  • Тип: string
  • Обов'язково: Ні

Хост Appium сервера. Перевизначає змінну середовища APPIUM_URL.

appiumPort​

  • Тип: number
  • Обов'язково: Ні

Порт Appium сервера. Перевизначає змінну середовища APPIUM_URL_PORT.

appiumPath​

  • Тип: string
  • Обов'язково: Ні

Шлях Appium сервера. Перевизначає змінну середовища APPIUM_PATH.


Параметри виявлення елементів​

Опції для інструменту get_visible_elements.

elementType​

  • Тип: string
  • Обов'язково: Ні
  • За замовчуванням: interactable
  • Значення: interactable | visual | all

Тип елементів для повернення:

  • interactable: Кнопки, посилання, поля введення та інші клікабельні елементи
  • visual: Зображення, SVG та візуальні елементи
  • all: Як інтерактивні, так і візуальні елементи

inViewportOnly​

  • Тип: boolean
  • Обов'язково: Ні
  • За замовчуванням: true

Повертати лише елементи, видимі в поточному області перегляду. Коли false, повертає всі елементи в ієрархії перегляду (корисно для пошуку елементів за межами екрану).

includeContainers​

  • Тип: boolean
  • Обов'язково: Ні
  • За замовчуванням: false

Включає елементи-контейнери/макети в результати. Коли true:

Включені контейнери Android:

  • ViewGroup, FrameLayout, LinearLayout
  • RelativeLayout, ConstraintLayout
  • ScrollView, RecyclerView

Включені контейнери iOS:

  • View, StackView, CollectionView
  • ScrollView, TableView

Корисно для налагодження проблем з макетом або розуміння ієрархії перегляду.

includeBounds​

  • Тип: boolean
  • Обов'язково: Ні
  • За замовчуванням: false

Включає межі/координати елементів (x, y, ширина, висота) у відповідь. Встановіть на true для:

  • Взаємодії на основі координат
  • Налагодження макету
  • Позиціонування візуальних елементів

Параметри пагінації​

Для великих сторінок з багатьма елементами використовуйте пагінацію для зменшення використання токенів:

limit​

  • Тип: number
  • Обов'язково: Ні
  • За замовчуванням: 0 (необмежено)

Максимальна кількість елементів для повернення.

offset​

  • Тип: number
  • Обов'язково: Ні
  • За замовчуванням: 0

Кількість елементів, які слід пропустити перед поверненням результатів.

Приклад: Отримати елементи 21-40:

Get visible elements with limit 20 and offset 20

Параметри дерева доступності​

Опції для інструменту get_accessibility (тільки для браузера).

limit​

  • Тип: number
  • Обов'язково: Ні
  • За замовчуванням: 100

Максимальна кількість вузлів для повернення. Використовуйте 0 для необмеженої кількості (не рекомендується для великих сторінок).

offset​

  • Тип: number
  • Обов'язково: Ні
  • За замовчуванням: 0

Кількість вузлів, які слід пропустити для пагінації.

roles​

  • Тип: string[]
  • Обов'язково: Ні
  • За замовчуванням: Усі ролі

Фільтрувати за конкретними ролями доступності.

Поширені ролі: button, link, textbox, checkbox, radio, heading, img, listitem

Приклад: Отримати тільки кнопки та посилання:

Get accessibility tree filtered to button and link roles

namedOnly​

  • Тип: boolean
  • Обов'язково: Ні
  • За замовчуванням: true

Повертає лише вузли, які мають імʼя/мітку. Фільтрує анонімні контейнери та зменшує шум у результатах.


Параметри знімку екрану​

Опції для інструменту take_screenshot.

outputPath​

  • Тип: string
  • Обов'язково: Ні

Шлях, куди зберегти файл знімка екрану. Якщо не вказано, повертає зображення в кодуванні base64.

Автоматична оптимізація​

Знімки екрану автоматично обробляються для оптимізації споживання LLM:

ОптимізаціяЗначенняОпис
Макс. розмір2000пксЗображення більші за 2000пкс масштабуються
Макс. розмір файлу1МБЗображення стискаються до розміру менше 1МБ
ФорматPNG/JPEGPNG з максимальним стисненням; JPEG якщо потрібно для розміру

Ця оптимізація гарантує, що знімки екрану можуть бути ефективно оброблені без перевищення лімітів токенів.


Поведінка сесії​

Типи сесій​

MCP сервер відстежує типи сесій для надання відповідних інструментів і поведінки:

ТипОписАвто-відʼєднання
browserСесія браузера ChromeНі
iosСесія iOS додаткуТак (якщо noReset: true або немає appPath)
androidСесія Android додаткуТак (якщо noReset: true або немає appPath)

Модель одиночної сесії​

MCP сервер працює за моделлю одиночної сесії:

  • Одночасно може бути активною лише одна сесія браузера АБО додатку
  • Запуск нової сесії закриє/від'єднає поточну сесію
  • Стан сесії підтримується глобально для всіх викликів інструментів

Відʼєднання vs Закриття​

Діяdetach: false (Закрити)detach: true (Відʼєднати)
БраузерПовністю закриває ChromeЗалишає Chrome запущеним, від'єднує WebDriver
Мобільний додатокЗавершує додатокЗалишає додаток запущеним в поточному стані
Випадок використанняЧистий стан для наступної сесіїЗбереження стану, ручна інспекція

Міркування щодо продуктивності​

MCP сервер оптимізований для ефективного спілкування з LLM з використанням формату TOON (Token-Oriented Object Notation), що мінімізує використання токенів при надсиланні даних до Claude.

Автоматизація браузера​

  • Режим без інтерфейсу працює швидше, але не відображає візуальні елементи
  • Менші розміри вікна зменшують час захоплення знімків екрану
  • Виявлення елементів оптимізоване за допомогою одноразового виконання скрипта
  • Оптимізація знімків екрану тримає зображення менше 1МБ для ефективної обробки
  • inViewportOnly: true (за замовчуванням) фільтрує до видимих елементів

Мобільна автоматизація​

  • Аналіз XML вихідного коду сторінки використовує лише 2 HTTP виклики (проти 600+ для традиційних запитів елементів)
  • Селектори Accessibility ID найшвидші та найнадійніші
  • Селектори XPath найповільніші - використовуйте лише як останній варіант
  • inViewportOnly: true (за замовчуванням) значно зменшує кількість елементів
  • Пагінація (limit та offset) зменшує використання токенів для екранів з багатьма елементами
  • includeBounds: false (за замовчуванням) пропускає дані про координати, якщо вони не потрібні

Поради щодо використання токенів​

НалаштуванняВплив
inViewportOnly: trueФільтрує елементи за межами екрану, зменшуючи розмір відповіді
includeContainers: falseВиключає елементи макету (ViewGroup тощо)
includeBounds: falseОпускає дані x/y/ширина/висота
limit з пагінацієюОбробка елементів групами замість усіх одразу
namedOnly: true (доступність)Фільтрує анонімні вузли

Налаштування Appium сервера​

Перед використанням мобільної автоматизації переконайтеся, що Appium правильно налаштований.

Базове налаштування​

# Встановіть Appium глобально
npm install -g appium

# Встановіть драйвери
appium driver install xcuitest # iOS
appium driver install uiautomator2 # Android

# Запустіть сервер
appium

Налаштування користувацького сервера​

# Запуск з користувацьким хостом та портом
appium --address 0.0.0.0 --port 4724

# Запуск з логуванням
appium --log-level debug

# Запуск з конкретним базовим шляхом
appium --base-path /wd/hub

Перевірка встановлення​

# Перевірте встановлені драйвери
appium driver list --installed

# Перевірте версію Appium
appium --version

# Перевірте з'єднання
curl http://localhost:4723/status

Усунення проблем з конфігурацією​

MCP сервер не запускається​

  1. Перевірте, чи встановлено npm/npx: npm --version
  2. Спробуйте запустити вручну: npx @wdio/mcp
  3. Перевірте логи Claude Desktop на наявність помилок

Проблеми з підключенням до Appium​

  1. Перевірте, чи запущений Appium: curl http://localhost:4723/status
  2. Перевірте, чи змінні середовища відповідають налаштуванням сервера Appium
  3. Переконайтеся, що брандмауер дозволяє підключення на порт Appium

Сесія не запускається​

  1. Браузер: Переконайтеся, що встановлено Chrome
  2. iOS: Перевірте, чи доступні Xcode та симулятори
  3. Android: Перевірте ANDROID_HOME та чи запущений емулятор
  4. Перегляньте логи сервера Appium для детальних повідомлень про помилки

Таймаути сесії​

Якщо сесії перевищують час очікування під час налагодження:

  1. Збільште newCommandTimeout при запуску сесії
  2. Використовуйте noReset: true для збереження стану між сесіями
  3. Використовуйте detach: true при закритті, щоб додаток продовжував працювати

Welcome! How can I help?

WebdriverIO AI Copilot