项目简介
本项目 'mcp_for_android' 仓库主要包含 ai_mcp_server 文件夹下的 MCP 服务器端实现,以及 AiAgentForAndroid 文件夹下的 Android 客户端示例代码。
MCP 服务器端 (ai_mcp_server) 基于 Python Flask 框架开发,旨在构建一个符合模型上下文协议 (MCP) 的后端服务,用于管理 Android 设备,并提供设备控制和应用自学习能力。服务器端通过 HTTP RESTful API 和自定义 TCP 协议与客户端通信,接收指令并控制 Android 设备执行相应操作。
Android 客户端 (AiAgentForAndroid) 作为一个示例应用,展示了如何与 MCP 服务器进行交互,接收服务器指令并控制 Android 设备。客户端需要安装在 Android 设备或模拟器上,并与服务器建立连接才能正常工作。
请注意,本仓库主要分析 MCP 服务器端实现,客户端代码仅作为辅助理解和演示用途。
主要功能点
- 设备注册与管理:支持客户端设备注册,声明设备能力。
- 指令执行:通过 HTTP API 接收自然语言指令,解析并转化为设备操作序列。
- 应用自学习:支持学习设备上已安装应用的操作方式,并将学习到的知识存储到知识库。
- UI 状态获取:能够获取 Android 设备的 UI 状态信息,为 LLM 提供上下文。
- TCP 通信:提供自定义 TCP 协议的 MCP 服务器,用于与客户端进行低延迟通信。
- HTTP API:提供 RESTful API 接口,方便集成到其他系统或 LLM 客户端。
- 模型集成:集成了模型接口 (Model Interface),可以与 OpenAI 等模型进行交互,提升自然语言理解和指令执行能力。
安装步骤 (MCP 服务器端 - ai_mcp_server)
-
克隆仓库到本地
git clone https://github.com/lmee/mcp_for_android.git cd mcp_for_android/ai_mcp_server -
创建并激活虚拟环境
python3 -m venv venv source venv/bin/activate # 或者使用 venv\Scripts\activate (Windows) -
安装依赖包
pip install -r requirements.txt -
配置 API 密钥
在 'main.py' 文件中,你需要配置 OpenAI API 密钥 (或者 DeepSeek API 密钥,根据实际使用的模型而定)。你可以直接修改 'main.py' 文件中的 'api_key' 和 'base_url' 参数,或者设置环境变量 'DEEPSEEK_API_KEY'。
# main.py 文件中,修改为你的 API 密钥和 Base URL model_interface = ModelInterface(api_key="your-api-key-here", base_url="your-api-base-url",app_learner=app_learner)或者设置环境变量:
export DEEPSEEK_API_KEY="your-api-key-here" -
运行服务器
python main.py服务器默认会在以下端口启动:
- MCP TCP 服务器:8080 端口
- HTTP API 服务器:5000 端口
服务器配置 (MCP 客户端配置)
MCP 客户端 (例如 'AiAgentForAndroid' 客户端) 需要配置以下信息才能连接到 MCP 服务器。以下是 JSON 格式的配置信息示例,你需要根据你的实际服务器地址和端口进行修改。
{ "server_name": "My MCP Server", // 服务器名称,可以自定义 "command": "python", // 启动 MCP 服务器的命令,通常是 python 或 python3 "args": [ // 启动命令的参数列表 "main.py" // 假设 main.py 是服务器主程序 ], "host": "192.168.0.25", // MCP 服务器的 IP 地址,替换为你的服务器 IP "port": 8080 // MCP 服务器的 TCP 端口,默认为 8080 }
参数注释:
- 'server_name': 服务器的名称,用于客户端显示,可以自定义。
- 'command': 启动 MCP 服务器的命令,通常是 Python 解释器,例如 "python" 或 "python3"。
- 'args': 启动命令的参数列表,这里假设服务器主程序是 'main.py',所以参数为 '["main.py"]'。
- 'host': 重要 MCP 服务器的 IP 地址。你需要将 '192.168.0.25' 替换为你实际部署 MCP 服务器的机器 IP 地址。如果客户端和服务器在同一台机器上,可以使用 '127.0.0.1' 或 'localhost'。
- 'port': 重要 MCP 服务器的 TCP 端口,默认为 '8080'。如果你的服务器配置了不同的端口,请修改此处。
请确保 Android MCP 客户端应用配置了正确的服务器 IP 地址 ('host') 和 TCP 端口 ('port'),才能成功连接到 MCP 服务器。
基本使用方法
- 启动 MCP 服务器:按照上述安装步骤运行 'main.py' 启动服务器。
- 安装并运行 Android MCP 客户端:在 Android 设备或模拟器上安装并运行 'AiAgentForAndroid' 客户端应用 (需要自行编译或构建)。
- 配置客户端连接:在 Android 客户端应用中,配置 MCP 服务器的连接信息,包括 IP 地址和端口 (参考上面的服务器配置)。
- 设备注册:客户端成功连接服务器后,设备会自动注册。
- 发送指令:通过 HTTP API 或 TCP 协议向 MCP 服务器发送指令,例如使用 POST 请求访问 '/execute' 接口,并传递包含 'device_id' 和 'command' 的 JSON 数据。你可以参考 'README.md' 中的 "示例用法" 部分,使用 'curl' 或 'requests' 等工具发送 HTTP 请求进行测试。
- 观察设备行为:服务器会解析指令,并将设备操作指令发送给 Android 客户端,客户端接收指令后会在 Android 设备上执行相应的操作。
示例 HTTP API 请求 (使用 curl):
设备注册:
curl -X POST -H "Content-Type: application/json" -d '{"device_id": "my-android-phone", "capabilities": ["click", "swipe", "type_text"]}' http://localhost:5000/register_device
执行指令:
curl -X POST -H "Content-Type: application/json" -d '{"device_id": "my-android-phone", "command": "打开微信发送 \'你好\' 给张三"}' http://localhost:5000/execute
学习应用:
curl -X POST -H "Content-Type: application/json" -d '{"device_id": "my-android-phone", "package_name": "com.tencent.mm"}' http://localhost:5000/learn_app
获取服务器状态:
curl http://localhost:5000/status
请注意: 'AiAgentForAndroid' 客户端代码可能需要您自行编译和部署到 Android 设备上,具体步骤请参考仓库中客户端相关的文档 (如有)。 本仓库提供的代码为示例代码,可能不适合直接用于生产环境,您可能需要根据实际需求进行修改和完善。
信息
分类
桌面与硬件