移动设备自动化服务

一个基于Appium的MCP服务器,为iOS模拟器和Android模拟器/设备提供标准化的移动自动化能力,支持会话管理、应用控制、元素交互、屏幕捕获和设备交互等功能。

  • by gavrix
  • JavaScript
  • 本地部署
  • 22 星标
  • 更新于
在 GitHub 查看 gavrix/appium-mcp

使用说明

@gavrix/appiumcp

Appium MCP(模型上下文协议)服务器,为iOS模拟器和Android模拟器/设备提供移动自动化功能,作为MCP客户端的工具。实现与移动设备的标准化控制和交互。

该服务器充当桥梁,允许MCP客户端(如大型语言模型或自动化脚本)通过Appium与移动应用程序进行交互。

概述

这个项目的主要目标是通过模型上下文协议提供一组可调用的工具。这些工具抽象了Appium用于移动应用程序测试和自动化的功能。

该服务器支持iOS模拟器和Android模拟器/设备,具有自动设备检测和特定于平台的优化功能。

服务器设计为通过以下方式运行 npx 为了便于使用。

安装

将此服务器用作项目中的依赖项(尽管通常它是通过以下方式独立运行的 npx):

npm install @gavrix/appium-mcp

或者,如果你使用Yarn:

yarn add @gavrix/appium-mcp

用法

运行服务器最常见的方法是使用 npx:

npx @gavrix/appium-mcp

这将启动MCP服务器,然后MCP服务器将监听来自MCP客户端的传入连接(例如,通过stdio)。

用于MCP客户端配置

如果您正在配置MCP客户端(如Cursor)以使用此服务器,则通常会按如下方式设置命令(假设该包是全局安装的或 npx 使用):

{
  "command": "npx",
  "args": ["@gavrix/appium-mcp"],
  "env": {}
}

可用工具

服务器向MCP客户端公开以下工具:

会话管理

  • start_session:使用自动检测到的设备(iOS模拟器或Android模拟器/设备)启动Appium会话。支持平台选择和设备定位。
    • 参数: platform (可选):“ios”、“android”或“auto”(默认)
    • 参数: deviceName (可选):要定位的特定设备名称
  • end_session:结束当前Appium会话并清理资源。

应用程序控制

  • launch_app:使用其标识符(iOS的捆绑包ID,Android的包名称)启动应用程序。

元素交互

  • find_element:使用指定的策略和选择器在当前屏幕上查找UI元素。
  • tap_element:点击或点击由其唯一元素ID标识的元素。
  • enter_text:将文本输入到特定元素中,如输入字段。
  • get_element_text:从元素获取文本内容。

屏幕截图与分析

  • get_page_source:检索当前屏幕的XML源层次结构。
  • get_page_source_file:将页面源XML保存到指定的文件路径。
  • get_screenshot:捕获屏幕截图并将其作为base64编码数据返回。
  • get_screenshot_file:捕获屏幕截图并将其保存到指定的文件路径。

设备交互

  • simulate_gesture:使用W3C WebDriver Actions API和标准化坐标(0.0-1.0)模拟自定义手势。
  • press_home_button:模拟按下主页按钮将应用程序发送到后台(iOS和Android)。
  • get_device_logs:从连接的设备/模拟器检索控制台日志。

平台特定功能

iOS支持:

  • 自动检测已启动的iOS模拟器
  • 使用特定于iOS的日志捕获 xcrun simctl
  • 支持iOS特定的元素查找策略(-ios class chain, -ios predicate string)

Android支持:

  • 自动检测连接的Android设备和模拟器
  • Android日志捕获
  • 支持Android特定的元素查找策略(-android uiautomator)

请参阅MCP客户端或服务器源代码中的工具定义(tools/ 目录)以获取每个工具的详细模式和描述。

先决条件

iOS支持

  • 安装了Xcode和Xcode命令行工具的macOS
  • iOS模拟器正在运行
  • Appium服务器在端口4723上运行

Android支持

  • 安装了ADB的Android SDK,可在PATH中使用
  • Android模拟器正在运行或物理设备已连接
  • Appium服务器在端口4723上运行

贡献

欢迎投稿、问题和功能请求! 请随时查看 问题页面.

许可证

这个项目是 国际协调委员会 得到许可的。

作者:谢尔盖·加夫里柳克 sergey.gavrilyuk@gmail.com