Android模拟器控制服务器

通过MCP协议控制Android模拟器的服务器,支持AVD管理、APK安装、屏幕操作、日志读取等功能,适用于开发测试环境。

  • by Amm-ar
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 Amm-ar/android_emulator_mcp

使用说明

仿真器MCP服务器

模型上下文协议(MCP) 用于从任何支持MCP的客户端控制Android模拟器的服务器。使用ADB和Android模拟器CLI。控制AVD、安装APK、点击、滑动、打字、截图、阅读日志等等——所有这些都可以通过你的AI助手完成。


目录


先决条件

  • Python 3.9+
  • 安卓模拟器 与:
    • adb 在你的路上
    • emulator 在PATH上(用于启动AVD)
  • (可选)用于模拟器工具的Android虚拟设备(AVD)

检查:

adb version
emulator -list-avds

安装

  1. 克隆或复制 将此项目保存到文件夹中,例如。 android_emulator_mcp.

  2. 安装依赖项:

    cd android_emulator_mcp
    pip install -r requirements.txt
    
  3. 验证服务器负载:

    python main.py
    

    服务器运行超时 标准:它将启动并等待JSON-RPC消息。正常退出是当stdin关闭时(例如客户端断开连接)。使用 Ctrl+C 停止。使用Cursor、VS Code等时,您不需要自己“运行”它——它们会使用下面的配置自动启动它。


如何启动服务器

  • 当被客户端使用时(光标、VS代码、克劳德、反重力等):
    你做 不 自己启动服务器。客户端运行 command (例如。 python)与 args (例如,路径 main.py)您配置。服务器进程由客户端启动和停止。

  • 对于本地测试/调试:
    在终端中运行它,使其使用stdio并等待输入:

    cd /path/to/android_emulator_mcp
    python main.py
    

    然后关闭stdin(客户端断开连接)或按 Ctrl+C 停止。
    要测试协议,请使用官方MCP检查器或可以启动stdio服务器的其他MCP客户端。

  • Python之路:
    使用您的客户端将使用的相同可执行文件。示例:

    • python 或 python3 如果它在PATH上
    • 完整路径,例如。 C:\Users\User\AppData\Local\Programs\Python\Python310\python.exe (Windows)或 /usr/bin/python3 (Linux/macOS)

将以下任何路径替换为 你的 项目路径和Python路径。


添加到客户端

光标

模拟器服务器已添加到您的Cursor配置中:

  • 全局(所有工作区): ~/.cursor/mcp.json --包含具有此项目路径的仿真服务器。
  • 仅此项目: .cursor/mcp.json 在这个repo中--使用 ${workspaceFolder}/main.py 在Cursor中打开此文件夹时。

如果手动添加:

  1. 打开 光标设置 → 特性 → 主控程序.
  2. 点击 +添加新的MCP服务器.
  3. 设置:
    • 姓名: emulator (或任何名字)。
    • 类型: stdio.
    • 命令: python (或完整路径 python.exe).
    • Args: 通往 main.py例如。
      C:\Users\User\Documents\android_emulator_mcp\main.py
  4. 保存。如果新服务器未出现,请重新启动Cursor。

使用服务器启动模拟器:

  1. 重新启动光标(或重新加载窗口),使其拾取 mcp.json 并启动仿真器MCP服务器。
  2. 打开 聊天 (作曲家/经纪人)。
  3. 确保 模拟器 (或其工具)显示在 可用工具如果没有,请检查 设置→ 特性→ MCP 并且服务器已启用。
  4. 请代理使用模拟器,例如:
    • “列出我的Android AVD” → 它可以使用 list_avds.
    • “启动AVD的Android模拟器<name>” → 它可以使用 launch_emulator AVD名称。
    • “列出连接的设备” → 它可以使用 list_devices.

您可以在系统提示或启用时批准工具调用 自动运行 用于代理设置中的MCP工具。


VS代码和副本

VS Code 1.102+和Copilot支持MCP。配置可以是 工作区 (.vscode/mcp.json)或 用户 (通过 MCP:打开用户配置).

选项A-工作区(仅限项目)

  1. 创建 .vscode/mcp.json 在你的项目中。
  2. 添加模拟器服务器:
{
  "servers": {
    "emulator": {
      "type": "stdio",
      "command": "python",
      "args": ["C:\\Users\\User\\Documents\\android_emulator_mcp\\main.py"]
    }
  }
}

使用 ${workspaceFolder}/main.py 如果 main.py 位于工作空间内,例如:

"args": ["${workspaceFolder}/android_emulator_mcp/main.py"]

选项B–用户配置(所有项目)

  1. 命令面板 → MCP:打开用户配置.
  2. 在开放 mcp.json,添加相同内容 servers.emulator 如上所述(调整机器的路径)。

选项C–命令面板

  1. MCP:添加服务器 → 选择 标准.
  2. 命令: python (或完整路径)。
  3. Args:路径 main.py.
  4. 选择 工作区 或 全球.

添加后,使用 聊天 并确保在工具选择器中启用仿真器服务器(及其工具)。出现提示时,您可能需要信任服务器。


谷歌反重力

反重力使用自定义MCP配置(例如。 管理MCP服务器 → 查看原始配置 → mcp_config.json).为此服务器添加一个stdio条目。

  1. 在《反重力》中,打开 MCP商店 (例如,代理/侧面板顶部的“…”)。
  2. 点击 管理MCP服务器 → 查看原始配置.
  3. 编辑 mcp_config.json 并为仿真器服务器添加一个条目。结构通常是服务器名称到配置的映射;在文件中使用与其他stdio服务器相同的模式。例子:
{
  "emulator": {
    "command": "python",
    "args": ["C:\\Users\\User\\Documents\\android_emulator_mcp\\main.py"]
  }
}

(或 "type": "stdio" 加 command / args 如果您的反重力模板使用该模板)。在Antigravity中保存并重新启动/重新加载MCP,使其能够启动新服务器。


克劳德桌面

  1. 打开Claude Desktop配置文件:
    • 窗户: %APPDATA%\Claude\claude_desktop_config.json
    • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
    • Linux: ~/.config/Claude/claude_desktop_config.json
      或者: 设置→ 开发者→ 编辑配置 在克劳德桌面。
  2. 在下面添加模拟器 mcpServers:
{
  "mcpServers": {
    "emulator": {
      "command": "python",
      "args": ["C:\\Users\\User\\Documents\\android_emulator_mcp\\main.py"]
    }
  }
}

在路径中使用正斜杠或转义反斜杠;没有尾随逗号。完全重新启动Claude Desktop,以便加载新服务器。服务器连接时,应出现工具(例如锤子图标)。


其他MCP客户端

支持的大多数客户 标准 MCP服务器需要这样的配置:

  • 命令: 可执行运行(例如。 python, python3,或Python的完整路径)。
  • Args: 包含路径的列表 main.py.

通用模式:

{
  "mcpServers": {
    "emulator": {
      "command": "python",
      "args": ["/absolute/path/to/android_emulator_mcp/main.py"]
    }
  }
}

或与 type (如果客户要求):

{
  "emulator": {
    "type": "stdio",
    "command": "python",
    "args": ["C:\\Users\\User\\Documents\\android_emulator_mcp\\main.py"]
  }
}

用实际路径替换路径 android_emulator_mcp 路径。然后将您的客户端指向此配置(或将此块合并到其MCP配置中)。


可用工具

工具 说明
launch_emulator 在后台启动AVD
kill_emulator 关闭Android模拟器
restart_emulator_cold_boot 当模拟器挂起时使用: 杀死,等待25秒,然后冷启动(避免PC冻结)
list_avds 列出可用的Android虚拟设备
list_devices 列出连接的设备/模拟器
install_apk 在设备上安装APK
uninstall_app 按程序包名称卸载应用程序
launch_app 按包启动应用程序(可选活动)
tap_screen 点击(x,y)坐标
swipe 从一个点滑动到另一个点
type_text 在设备上键入文本
press_key 发送按键事件(返回、主页、回车等)
batched_input 在一次调用中执行多个输入操作
get_ui_hierarchy 获取UI XML树(边界、文本、ID)
click_element_by_text 通过可见文本查找并点击元素
start_activity_with_data 通过深度链接(URI)启动
set_gps_location 设置模拟器GPS(lat,lng)
get_screen_info 获取设备屏幕分辨率
take_screenshot 截图(可选比例0.1-1.0)
read_logs 读取日志(可选过滤器)
get_logcat_stream 最后N行,按标签筛选
clear_logs 清除日志缓冲区
check_network_condition 测试模拟器互联网接入
get_emulator_stats 内存/CPU使用率
record_screen 将屏幕录制为MP4
pull_file 将文件从设备拉到主机
push_file 将文件从主机推送到设备
shell_command 运行任意adb shell命令

故障排除

  • “adb:找不到命令”/“模拟器:找不到此命令”
    添加Android SDK platform-tools 和 emulator 将目录添加到PATH。

  • 终止/启动模拟器时,PC或Cursor挂起
    我们解决的问题: 服务器使用 超时 (8秒) adb emu kill。如果模拟器挂起,则命令将在8秒后停止,在Windows上为服务器 武力杀人 emulator.exe / qemu-system-*.exe 这样你的机器就不会卡住。 我们不解决的问题: 整个PC仍然会因负载而冻结。杀后立即冷孕穗很重;在16GB/i5上,这通常会导致挂起。 该怎么办: 使用 restart_emulator_cold_boot(avd_name) 只是——它会杀死人,等待25秒,然后一次呼叫就冷启动。不要分别调用kill_emulator和launch_emulator,否则电脑可能会死机。先在16 GB/i5上关闭其他应用程序。

  • 服务器未显示在游标中
    确认路径 main.py 在Args中是正确的,并且 python (或完整路径)运行 main.py 没有错误。重新启动游标并检查 特性→ MCP 对于服务器和任何错误状态。

  • VS代码:服务器未启动/不受信任
    跑 MCP:列出服务器,选择模拟器服务器,然后使用 显示输出 查看日志。使用 MCP:重置信任 如果你需要再次被提示信任。

  • 克劳德桌面:工具永远不会出现
    完全重新启动Claude Desktop(退出并重新打开)。确保配置JSON有效(没有尾随逗号)。检查一下 python 和路径在 args 是正确的。

  • 带空格的路径
    必要时在配置中使用引用路径。对于 args,一个类似的字符串 "C:\\Users\\User\\Documents\\android_emulator_mcp\\main.py" 是典型的;避免将路径拆分为多个参数。


参考文献