使用说明
@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