使用说明
仿真器MCP服务器
模型上下文协议(MCP) 用于从任何支持MCP的客户端控制Android模拟器的服务器。使用ADB和Android模拟器CLI。控制AVD、安装APK、点击、滑动、打字、截图、阅读日志等等——所有这些都可以通过你的AI助手完成。
目录
先决条件
- Python 3.9+
- 安卓模拟器 与:
adb在你的路上emulator在PATH上(用于启动AVD)
- (可选)用于模拟器工具的Android虚拟设备(AVD)
检查:
adb version
emulator -list-avds
安装
-
克隆或复制 将此项目保存到文件夹中,例如。
android_emulator_mcp. -
安装依赖项:
cd android_emulator_mcp pip install -r requirements.txt -
验证服务器负载:
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中打开此文件夹时。
如果手动添加:
- 打开 光标设置 → 特性 → 主控程序.
- 点击 +添加新的MCP服务器.
- 设置:
- 姓名:
emulator(或任何名字)。 - 类型:
stdio. - 命令:
python(或完整路径python.exe). - Args: 通往
main.py例如。
C:\Users\User\Documents\android_emulator_mcp\main.py
- 姓名:
- 保存。如果新服务器未出现,请重新启动Cursor。
使用服务器启动模拟器:
- 重新启动光标(或重新加载窗口),使其拾取
mcp.json并启动仿真器MCP服务器。 - 打开 聊天 (作曲家/经纪人)。
- 确保 模拟器 (或其工具)显示在 可用工具如果没有,请检查 设置→ 特性→ MCP 并且服务器已启用。
- 请代理使用模拟器,例如:
- “列出我的Android AVD” → 它可以使用
list_avds. - “启动AVD的Android模拟器<name>” → 它可以使用
launch_emulatorAVD名称。 - “列出连接的设备” → 它可以使用
list_devices.
- “列出我的Android AVD” → 它可以使用
您可以在系统提示或启用时批准工具调用 自动运行 用于代理设置中的MCP工具。
VS代码和副本
VS Code 1.102+和Copilot支持MCP。配置可以是 工作区 (.vscode/mcp.json)或 用户 (通过 MCP:打开用户配置).
选项A-工作区(仅限项目)
- 创建
.vscode/mcp.json在你的项目中。 - 添加模拟器服务器:
{
"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–用户配置(所有项目)
- 命令面板 → MCP:打开用户配置.
- 在开放
mcp.json,添加相同内容servers.emulator如上所述(调整机器的路径)。
选项C–命令面板
- MCP:添加服务器 → 选择 标准.
- 命令:
python(或完整路径)。 - Args:路径
main.py. - 选择 工作区 或 全球.
添加后,使用 聊天 并确保在工具选择器中启用仿真器服务器(及其工具)。出现提示时,您可能需要信任服务器。
谷歌反重力
反重力使用自定义MCP配置(例如。 管理MCP服务器 → 查看原始配置 → mcp_config.json).为此服务器添加一个stdio条目。
- 在《反重力》中,打开 MCP商店 (例如,代理/侧面板顶部的“…”)。
- 点击 管理MCP服务器 → 查看原始配置.
- 编辑
mcp_config.json并为仿真器服务器添加一个条目。结构通常是服务器名称到配置的映射;在文件中使用与其他stdio服务器相同的模式。例子:
{
"emulator": {
"command": "python",
"args": ["C:\\Users\\User\\Documents\\android_emulator_mcp\\main.py"]
}
}
(或 "type": "stdio" 加 command / args 如果您的反重力模板使用该模板)。在Antigravity中保存并重新启动/重新加载MCP,使其能够启动新服务器。
克劳德桌面
- 打开Claude Desktop配置文件:
- 窗户:
%APPDATA%\Claude\claude_desktop_config.json - macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Linux:
~/.config/Claude/claude_desktop_config.json
或者: 设置→ 开发者→ 编辑配置 在克劳德桌面。
- 窗户:
- 在下面添加模拟器
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 SDKplatform-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"是典型的;避免将路径拆分为多个参数。
