Skip to main content
Glama

MCP Appium Server

by Rahulec08

MCP Appium-сервер

Реализация сервера Model Context Protocol (MCP) для автоматизации мобильных приложений с использованием Appium.

Предпосылки

  1. Node.js (v14 или выше)
  2. Комплект разработчика Java (JDK)
  3. Android SDK (для тестирования Android)
  4. Xcode (для тестирования iOS, только macOS)
  5. Сервер Appium
  6. Устройство Android или эмулятор / Устройство iOS или симулятор

Настройка среды

Перед выполнением любых команд убедитесь, что переменные среды настроены правильно:

  1. Убедитесь, что ваш .bash_profile , .zshrc или другой файл конфигурации оболочки содержит необходимые переменные среды:
# Example environment variables in ~/.bash_profile export JAVA_HOME=/path/to/your/java export ANDROID_HOME=/path/to/your/android/sdk export PATH=$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools
  1. Перед запуском MCP-Appium создайте файл среды:
source ~/.bash_profile # For bash # OR source ~/.zshrc # For zsh

Примечание : система попытается автоматически получить ваш .bash_profile при инициализации драйвера, но рекомендуется вручную убедиться в правильности настройки среды перед запуском тестов в новом сеансе терминала.

Конфигурация инструментов командной строки Xcode

Для тестирования iOS необходима правильная настройка инструментов командной строки Xcode:

  1. Установите инструменты командной строки Xcode, если они еще не установлены:
xcode-select --install
  1. Проверьте установку и текущий путь Xcode:
xcode-select -p
  1. При необходимости укажите правильный путь Xcode (особенно если у вас несколько версий Xcode):
sudo xcode-select -s /Applications/Xcode.app/Contents/Developer
  1. Примите лицензионные соглашения Xcode:
sudo xcodebuild -license accept
  1. Для тестирования на реальном устройстве iOS убедитесь, что ваша учетная запись разработчика Apple правильно настроена в Xcode:
    • Открыть X-код
    • Перейдите в Настройки > Учетные записи.
    • Добавьте свой Apple ID, если вы еще этого не сделали.
    • Загрузите необходимые профили обеспечения
  2. Настройте переменные среды для разработки iOS:
# Add these to your ~/.bash_profile or ~/.zshrc export DEVELOPER_DIR="/Applications/Xcode.app/Contents/Developer" export PATH="$DEVELOPER_DIR/usr/bin:$PATH"
  1. Источник вашей обновленной конфигурации:
source ~/.bash_profile # For bash # OR source ~/.zshrc # For zsh

Настраивать

  1. Установить зависимости:
npm install
  1. Установите и запустите сервер Appium:
npm install -g appium appium
  1. Настройте Android-устройство/эмулятор:
    • Включите параметры разработчика на вашем Android-устройстве
    • Включить отладку по USB
    • Подключите устройство через USB или запустите эмулятор
    • Проверьте, подключено ли устройство с помощью adb devices
  2. Для тестирования iOS (только macOS):
    • Убедитесь, что установлены инструменты командной строки Xcode: xcode-select --install
    • Настройте симулятор iOS или подключите реальное устройство
    • Доверяйте компьютеру разработчика на устройстве iOS, если используете реальное устройство

Проведение тестов

  1. Создайте проект:
npm run build
  1. Запустите MCP-сервер:
npm run dev
  1. В новом терминале запустите тест:
npm test

Тестовая конфигурация

Конфигурация Android

В примере теста в качестве демо используется приложение Android Settings. Чтобы протестировать собственное приложение:

  1. Отредактируйте examples/appium-test.ts :
    • Обновите deviceName , чтобы он соответствовал вашему устройству.
    • Укажите путь app в вашем APK-файле или
    • Обновление appPackage и appActivity для установленного приложения
  2. Конфигурация общих возможностей:
const capabilities: AppiumCapabilities = { platformName: "Android", deviceName: "YOUR_DEVICE_NAME", automationName: "UiAutomator2", // For installing and testing an APK: app: "./path/to/your/app.apk", // OR for testing an installed app: appPackage: "your.app.package", appActivity: ".MainActivity", noReset: true, };

Конфигурация iOS

Для тестирования iOS с использованием новой поддержки командной строки Xcode:

  1. Пример конфигурации в examples/xcode-appium-example.ts :
const capabilities: AppiumCapabilities = { platformName: "iOS", deviceName: "iPhone 13", // Your simulator or device name automationName: "XCUITest", udid: "DEVICE_UDID", // Get this from XcodeCommands.getIosSimulators() // For installing and testing an app: app: "./path/to/your/app.app", // OR for testing an installed app: bundleId: "com.your.app", noReset: true, };

Доступные действия

Сервер MCP поддерживает различные действия Appium:

  1. Взаимодействие элементов:
    • Найти элементы
    • Элементы касания/щелчка с API действий W3C (см. раздел «Стандартные жесты W3C»)
    • Введите текст
    • Прокрутите до элемента с помощью W3C Actions API
    • Длительное нажатие
  2. Управление приложениями:
    • Запустить/закрыть приложение
    • Сбросить приложение
    • Получить текущий пакет/активность
  3. Элементы управления устройством:
    • Ориентация экрана
    • Управление клавиатурой
    • Блокировка/разблокировка устройства
    • Скриншоты
    • Информация о батарее
  4. Расширенные возможности:
    • Переключение контекста (Native/WebView)
    • Операции с файлами
    • Уведомления
    • Пользовательские жесты
  5. Инструменты командной строки Xcode (только для iOS):
    • Управление симуляторами iOS (загрузка, выключение)
    • Установка/удаление приложений на симуляторах
    • Запуск/завершение работы приложений
    • Делайте скриншоты
    • Запись видео
    • Создать/удалить симуляторы
    • Получить типы устройств и время выполнения

Стандартные жесты W3C

Библиотека MCP-Appium теперь реализует API W3C WebDriver Actions для сенсорных жестов, что является современным стандартом мобильной автоматизации.

Действия W3C для элементов Tap

Метод tapElement теперь использует API действий W3C с интеллектуальными резервными вариантами:

// The method will try in this order: // 1. Standard WebdriverIO click() // 2. W3C Actions API // 3. Legacy TouchAction API (fallback for backward compatibility) await appium.tapElement("//android.widget.Button[@text='OK']"); // or using the click alias await appium.click("//android.widget.Button[@text='OK']");

Действия W3C для прокрутки

Метод scrollToElement теперь использует API действий W3C:

// Uses W3C Actions API for more reliable scrolling await appium.scrollToElement( "//android.widget.TextView[@text='About phone']", // selector "down", // direction: "up", "down", "left", "right" "xpath", // strategy 10 // maxScrolls );

Пользовательские жесты W3C

Вы можете создать свои собственные жесты W3C, используя метод executeMobileCommand :

// Create custom W3C Actions API gesture const w3cActions = { actions: [ { type: "pointer", id: "finger1", parameters: { pointerType: "touch" }, actions: [ // Move to start position { type: "pointerMove", duration: 0, x: startX, y: startY }, // Press down { type: "pointerDown", button: 0 }, // Move to end position over duration milliseconds { type: "pointerMove", duration: duration, origin: "viewport", x: endX, y: endY, }, // Release { type: "pointerUp", button: 0 }, ], }, ], }; // Execute the W3C Actions using executeScript await appium.executeMobileCommand("performActions", [w3cActions.actions]);

Дополнительные примеры реализации жестов стандарта W3C см. в examples/w3c-actions-swipe-demo.ts

Использование инструментов командной строки Xcode

Новый класс XcodeCommands предоставляет мощные инструменты для тестирования iOS:

import { XcodeCommands } from "../src/lib/xcode/xcodeCommands.js"; // Check if Xcode CLI tools are installed const isInstalled = await XcodeCommands.isXcodeCliInstalled(); // Get available simulators const simulators = await XcodeCommands.getIosSimulators(); // Boot a simulator await XcodeCommands.bootSimulator("SIMULATOR_UDID"); // Install an app await XcodeCommands.installApp("SIMULATOR_UDID", "/path/to/app.app"); // Launch an app await XcodeCommands.launchApp("SIMULATOR_UDID", "com.example.app"); // Take a screenshot await XcodeCommands.takeScreenshot("SIMULATOR_UDID", "/path/to/output.png"); // Shutdown a simulator await XcodeCommands.shutdownSimulator("SIMULATOR_UDID");

Использование функции щелчка

Метод click() представляет собой более интуитивно понятную альтернативу tapElement() :

// Using the click method await appium.click("//android.widget.Button[@text='OK']"); // This is equivalent to: await appium.tapElement("//android.widget.Button[@text='OK']");

Поиск неисправностей

  1. Устройство не найдено:
    • Проверьте вывод adb devices
    • Убедитесь, что отладка по USB включена.
    • Попробуйте переподключить устройство.
  2. Приложение не устанавливается:
    • Проверьте правильность пути APK
    • Проверьте, достаточно ли на устройстве памяти.
    • Убедитесь, что приложение подписано для отладки
  3. Элементы не найдены:
    • Используйте Appium Inspector для проверки селекторов
    • Проверьте, видны ли элементы на экране.
    • Попробуйте разные стратегии поиска
  4. Проблемы с подключением:
    • Убедитесь, что сервер Appium запущен
    • Проверьте конфликты портов
    • Убедитесь, что установлены правильные возможности
  5. Проблемы с симулятором iOS:
    • Проверьте, установлены ли инструменты командной строки Xcode: xcode-select -p
    • Проверьте правильность UDID симулятора с помощью xcrun simctl list devices
    • Закройте и перезапустите симулятор, если он перестанет отвечать.

Внося вклад

Не стесняйтесь сообщать о проблемах и отправлять запросы на дополнительные функции или исправления ошибок.

Лицензия

Массачусетский технологический институт

You must be authenticated.

A
security – no known vulnerabilities
A
license - permissive license
A
quality - confirmed to work

local-only server

The server can only run on the client's local machine because it depends on local resources.

Сервер Model Context Protocol (MCP), который обеспечивает автоматизацию мобильных приложений с помощью Appium, поддерживая различные взаимодействия устройств, операции с элементами и управление приложениями через стандартизированный протокол.

  1. Предпосылки
    1. Настройка среды
      1. Конфигурация инструментов командной строки Xcode
    2. Настраивать
      1. Проведение тестов
        1. Тестовая конфигурация
          1. Конфигурация Android
          2. Конфигурация iOS
        2. Доступные действия
          1. Стандартные жесты W3C
            1. Действия W3C для элементов Tap
            2. Действия W3C для прокрутки
            3. Пользовательские жесты W3C
          2. Использование инструментов командной строки Xcode
            1. Использование функции щелчка
              1. Поиск неисправностей
                1. Внося вклад
                  1. Лицензия

                    Related MCP Servers

                    • -
                      security
                      F
                      license
                      -
                      quality
                      A Model Context Protocol (MCP) server implementation for interacting with Phabricator API. This server allows LLMs to interact with Phabricator through a standardized interface.
                      Last updated -
                      5
                      Python
                    • A
                      security
                      A
                      license
                      A
                      quality
                      A beginner-friendly Model Context Protocol (MCP) server that helps users understand MCP concepts, provides interactive examples, and lists available MCP servers. This server is designed to be a helpful companion for developers working with MCP. Also comes with a huge list of servers you can install.
                      Last updated -
                      3
                      9
                      36
                      JavaScript
                      Apache 2.0
                    • -
                      security
                      F
                      license
                      -
                      quality
                      This MCP server implementation allows users to manage and expose actions as tools from their Integration App workspace through the Model Context Protocol.
                      Last updated -
                      10
                      19
                      TypeScript
                    • -
                      security
                      -
                      license
                      -
                      quality
                      A Model Context Protocol (MCP) server that interacts with system APIs, allowing users to check connections, search employees, register breakfast, and update chemical information by shifts.
                      Last updated -
                      2

                    View all related MCP servers

                    MCP directory API

                    We provide all the information about MCP servers via our MCP API.

                    curl -X GET 'https://glama.ai/api/mcp/v1/servers/Rahulec08/appium-mcp'

                    If you have feedback or need assistance with the MCP directory API, please join our Discord server