这是一个创新的Android设备控制和应用自学习框架,基于模型上下文协议(Model Context Protocol,简称MCP)。该框架能够通过自然语言指令控制Android设备,并能自动学习设备上的应用操作方式。
该框架主要包含以下功能模块:
- MCP 核心协议:定义了设备控制的基本数据结构和操作类型
- 设备通信接口:提供与Android设备的TCP通信功能
- 应用自学习引擎:能够自动学习和记忆Android应用的UI结构和操作方式
- 深度应用探索:提供更深入的应用UI探索和元素检测功能
- 自然语言理解:通过AI模型解析用户指令,转化为设备操作序列
- HTTP API:提供RESTful API接口,方便集成到其他系统
+----------------+
| HTTP APIs |
+-------+--------+
|
+----------------+v+----------------+
| Model Interface |
| (自然语言理解和操作生成) |
+----------------+-----------------+
|
+------------+ +----------v-----------+ +--------------+
| App Learner |<-| MCP Context |->| MCP Protocol |
+------^------+ +----------+-----------+ +--------------+
| |
| +----------v-----------+
+-------->| App Deep Explorer |
+----------------------+
|
+---------v----------+
| MCP Server |
+---------+----------+
|
+---------v----------+
| Android Device |
+--------------------+
- 后端:Python, Flask
- AI模型:支持OPEN AI sdk的任意模型
- 通信协议:自定义TCP协议,HTTP RESTful API
- 存储:JSON文件(应用知识库)
- Python 3.8+
- Flask
- OpenAI Python SDK (支持OPEN AI sdk的任意模型)
- Android设备或模拟器(需安装配套客户端应用)
- 克隆仓库到本地:
git clone https://github.com/lmee/mcp_for_android.git
cd mcp_for_android
- 创建并激活虚拟环境:
python -m venv venv
source venv/bin/activate # 在Windows上使用: venv\Scripts\activate
- 安装依赖包:
pip install -r requirements.txt
- 配置API密钥:
在main.py
中更新所使用模型的API密钥,或设置环境变量:
export DEEPSEEK_API_KEY="your-api-key-here"
启动MCP服务器和Flask应用:
python main.py
服务器将在以下端口上运行:
- MCP TCP服务器:8080
- HTTP API服务器:5000
POST /register_device
{
"device_id": "your-device-id",
"capabilities": ["click", "swipe", "type_text", ...]
}
POST /execute
{
"device_id": "your-device-id",
"command": "打开微信并发送消息给张三",
"session_id": "optional-session-id"
}
POST /learn_app
{
"device_id": "your-device-id",
"package_name": "com.example.app" // 可选,省略则学习所有应用
}
POST /analyze
{
"text": "打开微信发消息",
"device_id": "your-device-id" // 可选
}
GET /status
要使用此框架,您需要在Android设备上安装配套的MCP客户端应用。客户端负责:
- 连接到MCP服务器
- 接收并执行操作指令
- 提供设备UI状态信息
- 支持应用探索和学习
客户端安装步骤将在单独的文档中提供。
该框架的核心特性之一是能够自动学习设备上的应用操作方式。学习过程包括:
- 应用发现:扫描设备上已安装的应用
- UI探索:启动应用并探索其UI结构
- 元素识别:识别应用中的关键UI元素(按钮、输入框等)
- 操作学习:学习常见操作(搜索、播放、导航等)
- 知识存储:将学习到的知识保存到应用知识库
学习完成后,系统能够根据用户的自然语言指令,自动执行对应的应用操作。
import requests
api_url = "http://localhost:5000/execute"
data = {
"device_id": "my-android-phone",
"command": "打开微信发送'你好'给张三"
}
response = requests.post(api_url, json=data)
print(response.json())
import requests
api_url = "http://localhost:5000/learn_app"
data = {
"device_id": "my-android-phone",
"package_name": "com.tencent.mm" # 微信包名
}
response = requests.post(api_url, json=data)
print(response.json())
除了基本的应用学习功能外,系统还提供深度应用探索功能,可以:
- 等待应用完全加载
- 检测更多类型的UI元素
- 支持层次化探索,通过点击关键元素访问更多屏幕
- 生成更完整的应用知识图谱
通过深度探索,系统可以获取更全面的应用知识,提高控制精度。
android-mcp-framework/
├── mcp/
│ ├── mcp_protocol.py # 协议定义
│ ├── mcp_interface.py # MCP服务器实现
│ ├── model_interface.py # 模型接口
│ └── route_handler.py # API路由处理
├── app_learn/
│ ├── app_learner.py # 应用学习引擎
│ └── app_deep_explorer.py # 深度探索模块
├── main.py # 主程序
├── requirements.txt # 依赖包列表
└── README.md # 项目说明
- 本项目仅提供思路和方案,代码为示例代码,并不适合开箱即用
- 该框架需要配套的Android客户端才能工作
- 某些应用可能有反爬虫或安全机制,可能限制自动化操作
- 需要有效的DeepSeek AI API密钥
- 应用知识库会随着学习增长,确保有足够的存储空间
- 目前应用的学习精准程度还有待于提高
- 在设置了较多的提示词后,模型的推理速度非常慢
欢迎贡献代码或提出问题!请遵循以下步骤:
- Fork项目
- 创建功能分支 (
git checkout -b feature/amazing-feature
) - 提交更改 (
git commit -m 'Add some amazing feature'
) - 推送到分支 (
git push origin feature/amazing-feature
) - 创建Pull Request
该项目采用MIT许可证 - 详情请参阅LICENSE文件