移动设备控制服务

一个通过Appium使AI助手能够控制移动设备的MCP服务器,提供点击、输入、滑动、截图等功能。

  • by neural-surya
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 neural-surya/appium_mcp_server

使用说明

Appium MCP服务器

一 MCP(模型上下文协议) 服务器,让像克劳德这样的人工智能助手通过Appium控制移动设备。它将Appium的操作——点击、打字、滑动、截图等——作为MCP工具公开。

先决条件

  • Python 3.10+
  • 附件2.x 服务器已安装并正在运行
  • 安卓模拟器 (用于Android测试)或 Xcode (用于iOS测试)
  • 跑步 仿真器/模拟器 或已连接 物理设备

安装Appium

npm install -g appium

# Install the driver for your platform
appium driver install uiautomator2   # Android
appium driver install xcuitest       # iOS

设置

  1. 克隆存储库

    git clone <your-repo-url>
    cd appium_mcp_server
    
  2. 创建虚拟环境并安装依赖项

    python -m venv .venv
    source .venv/bin/activate        # macOS/Linux
    # .venv\Scripts\activate          # Windows
    pip install -r requirements.txt
    
  3. 配置您的设备和应用程序

    编辑 config/test_config.json:

    {
      "platform": "android",
    
      "android": {
        "app_package": "com.example.myapp",
        "app_activity": ".MainActivity",
        "device_name": "Android Emulator",
        "platform_version": "16",
        "app_path": ""
      },
    
      "ios": {
        "bundle_id": "com.example.myapp",
        "device_name": "iPhone 15",
        "platform_version": "17.0",
        "app_path": ""
      },
    
      "appium": {
        "url": "http://localhost:4723"
      }
    }
    
    字段 描述
    platform "android" 或 "ios"
    app_package / bundle_id 您的应用程序包名称或捆绑包标识符
    app_activity Android启动活动(例如。 ".MainActivity")
    device_name 仿真器/仿真器名称或物理设备名称
    platform_version 设备上的操作系统版本
    app_path 绝对路径 .apk/.ipa 文件(如果应用程序已安装,请留空)
    appium.url appium服务器URL(默认 http://localhost:4723)
  4. 启动Appium服务器

    appium
    
  5. 启动仿真器/模拟器或连接设备

    # Android — launch an AVD
    emulator -avd <avd_name>
    
    # iOS — open a simulator
    open -a Simulator
    

添加到您的MCP客户端

克劳德桌面版

将此添加到您的Claude Desktop配置中(~/Library/Application Support/Claude/claude_desktop_config.json 在macOS上):

{
  "mcpServers": {
    "appium": {
      "command": "/absolute/path/to/appium_mcp_server/.venv/bin/python",
      "args": ["/absolute/path/to/appium_mcp_server/server.py"]
    }
  }
}

克劳德代码(CLI)

claude mcp add appium /absolute/path/to/appium_mcp_server/.venv/bin/python /absolute/path/to/appium_mcp_server/server.py

重要提示: 使用内部Python二进制文件的绝对路径 .venv 以便获得正确的依赖关系。

可用工具

工具 说明
start_session 启动Appium会话(开始时调用一次)
close_session 关闭活动会话并释放设备
take_screenshot 捕获当前屏幕的屏幕截图
get_page_source 获取XML格式的UI层次结构(对于查找元素定位器很有用)
tap 按定位器策略和价值挖掘元素
tap_coordinates 点击屏幕绝对坐标(x,y)
type_text 在元素中键入文本
clear_text 清除元素的文本内容
swipe 向上/下/左/右方向滑动
press_back 按下Android后退按钮
press_home 按下主页按钮
hide_keyboard 关闭屏幕键盘

定位器策略

这 tap, type_text,以及 clear_text 工具接受a strategy 参数:

策略 示例值
id com.example:id/login_btn
xpath //android.widget.Button[@text='Login']
accessibility_id login_button
class_name android.widget.EditText
android_uiautomator new UiSelector().text("Login")
ios_predicate label == "Login"
ios_class_chain **/XCUIElementTypeButton[\label==“登录”`]`

示例提示

启动Appium会话。截取屏幕截图以查看当前屏幕。然后获取页面源以查找电子邮件和密码字段定位器。输入“user@example.com“作为电子邮件,“mypassword”作为密码,点击登录按钮,并对结果进行截图。

项目结构

appium_mcp_server/
├── server.py              # MCP server — defines all tools
├── appium_manager.py      # Appium session manager (singleton)
├── config/
│   ├── __init__.py        # Config loader
│   └── test_config.json   # Device and app configuration
├── requirements.txt
└── README.md

许可证

麻省理工学院

https://github.com/user-attachments/assets/3f1f563f-1e60-4291-abd6-27326304840e