Skip to main content
Glama

Phone MCP Plugin

by hao-cyber
Apache 2.0
165
  • Apple
  • Linux
README_zh.md12.2 kB
# 📱 Phone MCP Plugin ![Downloads](https://pepy.tech/badge/phone-mcp) 🌟 一个强大的 MCP 手机控制插件,让您轻松通过 ADB 命令控制 Android 手机。 [English Documentation](README.md) ## ⚡ 快速开始 ### 📥 安装 ```bash # 直接使用 uvx 运行(推荐,uvx 是 uv 的一部分,无需单独安装) uvx phone-mcp # 或使用 uv 安装 uv pip install phone-mcp # 或使用 pip 安装 pip install phone-mcp ``` ### 🔧 配置说明 #### AI 助手配置 在您的 AI 助手配置中添加(适用于 Cursor、Trae、Claude 等): ```json { "mcpServers": { "phone-mcp": { "command": "uvx", "args": [ "phone-mcp" ] } } } ``` 如果您使用 pip 安装,则配置如下: ```json { "mcpServers": { "phone-mcp": { "command": "/usr/local/bin/python", "args": [ "-m", "phone_mcp" ] } } } ``` > **重要提示**:上述配置中的 `/usr/local/bin/python` 是 Python 解释器的路径,您需要根据自己系统中 Python 的实际安装位置进行修改。以下是在不同操作系统中查找 Python 路径的方法: > > **Linux/macOS**: > 在终端中运行以下命令: > ```bash > which python3 > ``` > 或 > ```bash > which python > ``` > > **Windows**: > 在命令提示符(CMD)中运行: > ```cmd > where python > ``` > 或在 PowerShell 中运行: > ```powershell > (Get-Command python).Path > ``` > > 确保使用完整的路径替换配置中的 `/usr/local/bin/python`,例如 Windows 上可能是 `C:\Python39\python.exe` > **注意**:对于 Cursor,请将此配置放在 `~/.cursor/mcp.json` 文件中 使用方法: - 在 AI 助手对话中直接使用命令,例如: ``` 帮我给联系人hao打电话 ``` ⚠️ 使用前请确保: - ADB 已正确安装并配置 - Android 设备已启用 USB 调试 - 设备已通过 USB 连接到电脑 ## 🎯 主要功能 - 📞 **通话功能**:拨打电话、结束通话、接收来电 - 💬 **短信功能**:发送短信、接收短信、获取原始短信 - 👥 **联系人功能**:访问手机联系人、自动化创建联系人界面交互 - 📸 **媒体功能**:截屏、录屏、控制媒体播放 - 📱 **应用功能**:打开应用程序、通过Intent启动特定活动、列出已安装应用、关闭应用 - 🔧 **系统功能**:获取窗口信息、应用快捷方式 - 🗺️ **地图功能**:搜索周边带电话号码的POI信息 - 🖱️ **UI交互**:点击、滑动、输入文本、按键操作 - 🔍 **UI检查**:通过文本、ID、类名或描述查找元素 - 🤖 **UI自动化**:等待元素出现、滚动查找元素 - 🧠 **屏幕分析**:结构化屏幕信息和统一交互接口 - 🌐 **浏览器功能**:在设备默认浏览器中打开URL - 🔄 **UI监控**:监控UI变化,等待特定元素出现或消失 ## 🛠️ 系统要求 - Python 3.7+ - 启用 USB 调试的 Android 设备 - ADB 工具 ## 📋 基本命令 ### 设备与连接 ```bash # 检查设备连接 phone-cli check # 获取屏幕尺寸 phone-cli screen-interact find method=clickable ``` ### 通讯 ```bash # 拨打电话 phone-cli call 10086 # 结束当前通话 phone-cli hangup # 发送短信 phone-cli send-sms 10086 "你好" # 查看短信 phone-cli messages --limit 10 # 获取联系人(带分页) phone-cli contacts --limit 20 # 通过UI自动化创建新联系人 phone-cli create-contact "张三" "10086" ``` ### 媒体与应用 ```bash # 截屏 phone-cli screenshot # 录屏 phone-cli record --duration 30 # 打开应用(在某些设备上可能不工作) phone-cli app camera # 使用open_app命令打开应用(如果app命令不可用) phone-cli open_app camera # 关闭应用 phone-cli close-app com.android.camera # 列出已安装应用(基本信息,速度更快) phone-cli list-apps # 分页显示应用列表 phone-cli list-apps --page 1 --page-size 10 # 显示应用详细信息(速度较慢) phone-cli list-apps --detailed # 启动特定活动(所有设备上最可靠的方法) phone-cli launch com.android.settings/.Settings # 通过包名启动应用(在某些设备上可能不工作) phone-cli app com.android.contacts # 使用open_app命令通过包名启动应用(如果app命令不可用) phone-cli open_app com.android.contacts # 通过包名和活动名启动应用(最可靠的方法) phone-cli launch com.android.dialer/com.android.dialer.DialtactsActivity # 在默认浏览器中打开网页 phone-cli open-url google.com ``` ### 屏幕分析与UI交互 ```bash # 分析当前屏幕并提供结构化信息 phone-cli analyze-screen # 统一交互接口 phone-cli screen-interact <动作> [参数] # 通过坐标点击 phone-cli screen-interact tap x=500 y=800 # 通过文本内容点击元素 phone-cli screen-interact tap element_text="登录" # 通过内容描述点击元素 phone-cli screen-interact tap element_content_desc="日历" # 滑动手势(向下滚动) phone-cli screen-interact swipe x1=500 y1=1000 x2=500 y2=200 duration=300 # 按键操作 phone-cli screen-interact key keycode=back # 输入文本 phone-cli screen-interact text content="10086" # 查找元素 phone-cli screen-interact find method=text value="登录" partial=true # 等待元素出现 phone-cli screen-interact wait method=text value="成功" timeout=10 # 滚动查找元素 phone-cli screen-interact scroll method=text value="设置" direction=down max_swipes=5 # 监控UI变化 phone-cli monitor-ui --interval 0.5 --duration 30 # 监控直到特定文本出现 phone-cli monitor-ui --watch-for text_appears --text "欢迎" # 监控直到特定元素ID出现 phone-cli monitor-ui --watch-for id_appears --id "login_button" # 监控直到特定元素类型出现 phone-cli monitor-ui --watch-for class_appears --class-name "android.widget.Button" # 监控UI变化并输出原始JSON数据 phone-cli monitor-ui --raw ``` ### 位置与地图 ```bash # 搜索周边带电话号码的POI信息 phone-cli get-poi 116.480053,39.987005 --keywords 餐厅 --radius 1000 ``` ## 📚 高级用法 ### 应用和活动启动 插件提供了多种方式启动应用和活动: 1. **通过应用名称**(两种方法): ```bash # 方法1:使用app命令(在某些设备上可能不工作) phone-cli app camera # 方法2:使用open_app命令(如果app命令失败则使用此方法) phone-cli open_app camera ``` 2. **通过包名**(两种方法): ```bash # 方法1:使用app命令(在某些设备上可能不工作) phone-cli app com.android.contacts # 方法2:使用open_app命令(如果app命令失败则使用此方法) phone-cli open_app com.android.contacts ``` 3. **通过包名和活动名**(最可靠的方法): ```bash # 此方法在所有设备上都有效 phone-cli launch com.android.dialer/com.android.dialer.DialtactsActivity ``` > **注意**:如果您在使用`app`或`open_app`命令时遇到问题,请始终使用`launch`命令并指定完整的组件名称(包名/活动名),这是最可靠的操作方式。 ### 通过UI自动化创建联系人 插件提供了通过UI交互创建联系人的方式: ```bash # 通过UI自动化创建新联系人 phone-cli create-contact "张三" "10086" ``` 此命令将: 1. 打开联系人应用 2. 导航到联系人创建界面 3. 填写姓名和电话号码字段 4. 自动保存联系人 ### 基于屏幕的自动化 统一的屏幕交互接口使智能代理能够轻松: 1. **分析屏幕**:获取UI元素和文本的结构化分析 2. **做出决策**:基于检测到的UI模式和可用操作 3. **执行交互**:通过一致的参数系统 ### UI监控和自动化 插件提供强大的UI监控功能,可检测界面变化: 1. **基本UI监控**: ```bash # 以自定义间隔(秒)监控任何UI变化 phone-cli monitor-ui --interval 0.5 --duration 30 ``` 2. **等待特定元素出现**: ```bash # 等待文本出现(对自动化测试有用) phone-cli monitor-ui --watch-for text_appears --text "登录成功" # 等待特定ID出现 phone-cli monitor-ui --watch-for id_appears --id "confirmation_dialog" ``` 3. **监控元素消失**: ```bash # 等待文本消失 phone-cli monitor-ui --watch-for text_disappears --text "加载中..." ``` 4. **获取详细的UI变化报告**: ```bash # 获取包含所有UI变化信息的原始JSON数据 phone-cli monitor-ui --raw ``` > **提示**:UI监控对自动化脚本特别有用,可等待加载屏幕完成,或确认操作已在UI中生效。 ## 📚 详细文档 完整文档和配置说明请访问我们的 [GitHub 仓库](https://github.com/hao-cyber/phone-mcp)。 ## 🧰 工具文档 ### 屏幕接口 API 插件提供了功能强大的屏幕接口,包含与设备交互的全面 API。以下是主要函数及其参数: #### interact_with_screen ```python async def interact_with_screen(action: str, params: Dict[str, Any] = None) -> str: """执行屏幕交互操作""" ``` - **参数:** - `action`: 操作类型("tap"点击, "swipe"滑动, "key"按键, "text"文本输入, "find"查找, "wait"等待, "scroll"滚动) - `params`: 包含特定操作参数的字典 - **返回值:** 包含操作结果的JSON字符串 **示例:** ```python # 通过坐标点击 result = await interact_with_screen("tap", {"x": 100, "y": 200}) # 通过元素文本点击 result = await interact_with_screen("tap", {"element_text": "登录"}) # 向下滑动 result = await interact_with_screen("swipe", {"x1": 500, "y1": 300, "x2": 500, "y2": 1200, "duration": 300}) # 输入文本 result = await interact_with_screen("text", {"content": "你好世界"}) # 按返回键 result = await interact_with_screen("key", {"keycode": "back"}) # 通过文本查找元素 result = await interact_with_screen("find", {"method": "text", "value": "设置", "partial": True}) # 等待元素出现 result = await interact_with_screen("wait", {"method": "text", "value": "成功", "timeout": 10, "interval": 0.5}) # 滚动查找元素 result = await interact_with_screen("scroll", {"method": "text", "value": "隐私政策", "direction": "down", "max_swipes": 8}) ``` #### analyze_screen ```python async def analyze_screen(include_screenshot: bool = False, max_elements: int = 50) -> str: """分析当前屏幕并提供UI元素的结构化信息""" ``` - **参数:** - `include_screenshot`: 是否在结果中包含base64编码的截图 - `max_elements`: 要处理的最大UI元素数量 - **返回值:** 包含详细屏幕分析的JSON字符串 #### create_contact ```python async def create_contact(name: str, phone: str) -> str: """创建具有指定姓名和电话号码的新联系人""" ``` - **参数:** - `name`: 联系人的全名 - `phone`: 联系人的电话号码 - **返回值:** 包含操作结果的JSON字符串 - **位置:** 此函数位于 'contacts.py' 模块中,实现通过UI自动化创建联系人 #### launch_app_activity ```python async def launch_app_activity(package_name: str, activity_name: Optional[str] = None) -> str: """使用包名和可选的活动名称启动应用""" ``` - **参数:** - `package_name`: 要启动的应用的包名 - `activity_name`: 要启动的特定活动(可选) - **返回值:** 包含操作结果的JSON字符串 - **位置:** 此函数位于 'apps.py' 模块中 #### launch_intent ```python async def launch_intent(intent_action: str, intent_type: Optional[str] = None, extras: Optional[Dict[str, str]] = None) -> str: """使用Android意图系统启动活动""" ``` - **参数:** - `intent_action`: 要执行的操作 - `intent_type`: 意图的MIME类型(可选) - `extras`: 要与意图一起传递的额外数据(可选) - **返回值:** 包含操作结果的JSON字符串 - **位置:** 此函数位于 'apps.py' 模块中 ## 📄 许可证 Apache License, Version 2.0

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/hao-cyber/phone-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server