名称: aster
版本: 0.1.13
描述: 您的移动 AI 副驾驶 —— 或为您的 AI 配备专属手机。通过 MCP 实现通话、发送短信、TTS 扬声器语音、自动化 UI、管理文件、搜索媒体等 40 多种工具。开源、自托管、隐私优先。
主页: https://aster.theappstack.in
元数据: {"aster":{"category":"device-control","requires":{"bins":["node"]},"mcp":{"type":"http","url":"http://localhost:5988/mcp"}}}
基于 MCP(模型上下文协议)的 Android 设备 AI 副驾驶 —— 或为您的 AI 配备一部专属手机,让它能自主拨打电话、发送短信并执行操作。完全开源且隐私优先 —— 您的数据永不离开您的网络。
官网: aster.theappstack.in | GitHub: github.com/satyajiit/aster-mcp
如需查看 Android 应用和网页控制台的截图,请访问 aster.theappstack.in。
安装并启动服务器:
bash
npm install -g aster-mcp
aster start
在任意 Android 设备上安装 Aster 应用(可以是您的日常手机,也可以是 AI 的备用机),从 Releases 下载,并根据终端显示的服务器地址进行连接。
在 .mcp.json 中配置 MCP:
json
{
"mcpServers": {
"aster": {
"type": "http",
"url": "http://localhost:5988/mcp"
}
}
}
Aster 采用 安全优先、隐私优先 的架构设计:
aster_list_devices - 列出已连接的设备aster_get_device_info - 获取设备详情(电池、存储、规格)aster_take_screenshot - 截取屏幕截图aster_get_screen_hierarchy - 获取 UI 无障碍树aster_input_gesture - 点击、滑动、长按aster_input_text - 在聚焦的输入框中输入文本aster_click_by_text - 通过文本点击元素aster_click_by_id - 通过视图 ID 点击元素aster_find_element - 查找 UI 元素aster_global_action - 返回、主页、最近任务等aster_launch_intent - 启动应用或 Intentaster_list_packages - 列出已安装的应用aster_read_notifications - 读取通知aster_read_sms - 读取短信aster_send_sms - 向电话号码发送短信aster_get_location - 获取 GPS 位置aster_execute_shell - 在 Android 应用沙箱中运行 shell 命令(无需 Root,仅限于应用数据目录和用户可访问的存储空间,30 秒超时,1MB 输出限制)aster_list_files - 列出目录内容aster_read_file - 读取文件内容aster_write_file - 写入文件aster_delete_file - 删除文件aster_analyze_storage - 存储空间分析aster_find_large_files - 查找大文件aster_search_media - 使用自然语言搜索照片/视频aster_get_battery - 电池信息aster_get_clipboard / aster_set_clipboard - 剪贴板访问aster_show_toast - 显示 Toast 消息aster_speak_tts - 文本转语音aster_vibrate - 振动设备aster_play_audio - 播放音频aster_post_notification - 发布通知aster_make_call - 拨打电话aster_make_call_with_voice - 拨打电话,接通后启用扬声器并通过 TTS 说出 AI 文本aster_show_overlay - 在设备上显示网页叠加层aster_index_media_metadata - 提取照片/视频的 EXIF 元数据aster_search_media - 使用自然语言查询搜索照片/视频Aster 可以通过 Webhook 将手机的实时事件推送到您的 AI 智能体。启用后,这些事件将以 HTTP POST 负载的形式送达 —— 您的智能体无需轮询,手机会主动告知发生了什么。
可通过控制台的 /settings/openclaw 或 CLI 命令 aster set-openclaw-callbacks 进行配置。
事件通过 HTTP POST 发送到配置的 OpenClaw 端点(默认为 /hooks/agent)。AI 读取 message 字段。所有事件上下文都使用标准化的 [key] value 标签打包到 message 中。
通知事件的原始 HTTP POST 负载示例:
{
"message": "[skill] aster\n[event] notification\n[device_id] 6241e40fb71c0cf7\n[model] samsung SM-S938B, Android 16\n[data-app] messaging\n[data-package] com.google.android.apps.messaging\n[data-title] John\n[data-text] Hey, are you free tonight?",
"wakeMode": "now",
"deliver": true,
"channel": "whatsapp",
"to": "+1234567890"
}
message —— 包含标准头的结构化事件文本(这是 AI 读取的内容)wakeMode —— 始终为 "now"(立即唤醒智能体)deliver —— 真实事件始终为 true,测试 ping 为 falsechannel / to —— 传递通道和接收者,在控制台中配置每个事件都遵循标准化的结构,包含 4 个固定头字段和 [data-*] 字段:
[skill] aster
[event] <事件名称>
[device_id] <设备 UUID>
[model] <制造商 型号, Android 版本>
[data-key] 值
[data-key] 值
[skill] —— 始终为 aster[event] —— 事件名称:sms、notification、device_online、device_offline、pairing[device_id] —— 设备的 UUID(使用此 ID 通过 Aster 工具定位设备)[model] —— 设备制造商、型号和操作系统[data-*] —— 事件特定字段,每个都以 data- 为前缀(例如 [data-app]、[data-sender])sms —— 收到短信
[skill] aster
[event] sms
[device_id] a1b2c3d4-5678-90ab
[model] samsung SM-S938B, Android 15
[data-sender] +1234567890
[data-body] Hey are you free tonight?
notification —— 应用通知(与短信去重)
[skill] aster
[event] notification
[device_id] a1b2c3d4-5678-90ab
[model] samsung SM-S938B, Android 15
[data-app] whatsapp
[data-package] com.whatsapp
[data-title] John
[data-text] Meeting moved to 3pm
device_online —— 已批准的设备上线
[skill] aster
[event] device_online
[device_id] a1b2c3d4-5678-90ab
[model] samsung SM-S938B, Android 15
[data-status] connected
device_offline —— 设备离线
[skill] aster
[event] device_offline
[device_id] a1b2c3d4-5678-90ab
[model] samsung SM-S938B, Android 15
[data-status] disconnected
pairing —— 新设备需要批准(使用 [device_id] 进行批准)
[skill] aster
[event] pairing
[device_id] e5f6g7h8-9012-cdef
[model] Samsung SM-S924B, Android 15
[data-status] pending_approval
[data-action] approve this device from the Aster dashboard or via aster devices approve
当您收到带有 [skill] aster 的消息时,解析 [event] 和 [device_id] 以确定发生了什么以及要对哪个设备进行操作。
短信 —— 回复、提取信息或升级处理:
[event] sms | [device_id] a1b2c3d4 | 发件人: +1234567890 | 内容: 要晚点到,大约 20 分钟后
→ 使用 aster_send_sms (deviceId: a1b2c3d4) 向 +1234567890 发送:"没关系,一会儿见!"
[event] sms | [device_id] a1b2c3d4 | 发件人: +1800555 | 内容: 您的验证码是 482913
→ 提取验证码 "482913",使用 aster_input_text (deviceId: a1b2c3d4) 输入
通知 —— 监控并代表用户操作:
[event] notification | [device_id] a1b2c3d4 | 应用: driver | 文本: 您的司机即将到达
→ 使用 aster_speak_tts (deviceId: a1b2c3d4) 说出:"您的 Uber 快到了"
[event] notification | [device_id] a1b2c3d4 | 应用: mShop | 文本: 您的包裹已送达
→ 使用 aster_send_sms (deviceId: a1b2c3d4) 向用户发送:"您的亚马逊包裹刚刚送达"
设备生命周期 —— 管理连接:
[event] device_offline | [device_id] a1b2c3d4
→ 暂停设备 a1b2c3d4 的待处理自动化任务
[event] device_online | [device_id] a1b2c3d4
→ 恢复排队的任务,使用 aster_read_notifications (deviceId: a1b2c3d4) 获取最新通知
配对 —— 批准或告警:
[event] pairing | [device_id] e5f6g7h8 | 型号: Samsung SM-S924B
→ 如果是预期设备:通过控制台 API 批准设备 e5f6g7h8
→ 如果是非预期设备:提醒用户 "未知设备 SM-S924B 正尝试连接"
您的移动副驾驶:
"打开 YouTube 并搜索烹饪视频"
→ aster_launch_intent → aster_click_by_id → aster_input_text
"查找我上个月去孟买的照片"
→ 使用 aster_search_media,查询词为 "photos from Mumbai last month"
"截屏并告诉我屏幕上有什么"
→ aster_take_screenshot → aster_get_screen_hierarchy
AI 的专属手机 —— 让它为您代劳:
"给我打电话,告诉我我的航班延误了"
→ 使用 aster_make_call_with_voice,指定号码和文本 "您的航班延误 45 分钟,新登机口 B12",等待 8 秒
"我的快递到了发短信告诉我"
→ aster_read_notifications → aster_send_sms,指定号码和消息
"回复快递员:谢谢,我会在家"
→ aster_send_sms,指定号码和消息
aster start # 启动服务器
aster stop # 停止服务器
aster status # 显示服务器和设备状态
aster dashboard # 打开网页控制台
aster devices list # 列出已连接的设备
aster devices approve # 批准待处理的设备
aster devices reject # 拒绝设备
aster devices remove # 移除设备
aster set-openclaw-callbacks # 配置事件转发到 OpenClaw
官网: aster.theappstack.in | GitHub: github.com/satyajiit/aster-mcp