项目简介

本项目 '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)

  1. 克隆仓库到本地

    git clone https://github.com/lmee/mcp_for_android.git
    cd mcp_for_android/ai_mcp_server
  2. 创建并激活虚拟环境

    python3 -m venv venv
    source venv/bin/activate  # 或者使用 venv\Scripts\activate (Windows)
  3. 安装依赖包

    pip install -r requirements.txt
  4. 配置 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"
  5. 运行服务器

    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 服务器。

基本使用方法

  1. 启动 MCP 服务器:按照上述安装步骤运行 'main.py' 启动服务器。
  2. 安装并运行 Android MCP 客户端:在 Android 设备或模拟器上安装并运行 'AiAgentForAndroid' 客户端应用 (需要自行编译或构建)。
  3. 配置客户端连接:在 Android 客户端应用中,配置 MCP 服务器的连接信息,包括 IP 地址和端口 (参考上面的服务器配置)。
  4. 设备注册:客户端成功连接服务器后,设备会自动注册。
  5. 发送指令:通过 HTTP API 或 TCP 协议向 MCP 服务器发送指令,例如使用 POST 请求访问 '/execute' 接口,并传递包含 'device_id' 和 'command' 的 JSON 数据。你可以参考 'README.md' 中的 "示例用法" 部分,使用 'curl' 或 'requests' 等工具发送 HTTP 请求进行测试。
  6. 观察设备行为:服务器会解析指令,并将设备操作指令发送给 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 设备上,具体步骤请参考仓库中客户端相关的文档 (如有)。 本仓库提供的代码为示例代码,可能不适合直接用于生产环境,您可能需要根据实际需求进行修改和完善。

信息

分类

桌面与硬件