by hao-cyber
A phone control plugin for MCP that allows you to control your Android phone through ADB commands to connect any human
# Add to your Claude Code skills
git clone https://github.com/hao-cyber/phone-mcpLast scanned: 5/30/2026
{
"issues": [],
"status": "PASSED",
"scannedAt": "2026-05-30T15:28:30.899Z",
"npmAuditRan": true,
"pipAuditRan": false
}See how phone-mcp compares with popular alternatives.
phone-mcp is an open-source ai agents skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by hao-cyber. A phone control plugin for MCP that allows you to control your Android phone through ADB commands to connect any human. It has 246 GitHub stars.
Yes. phone-mcp passed SkillsLLM's automated security scan — a dependency vulnerability audit plus prompt-injection heuristics — with no high-severity issues. You can read the full report in the Security Report section on this page.
Clone the repository with "git clone https://github.com/hao-cyber/phone-mcp" and add it to your Claude Code skills directory (see the Installation section above).
phone-mcp is primarily written in Python. It is open-source under hao-cyber on GitHub, so you can review or fork the full source.
Yes. SkillsLLM lists many other AI Agents skills you can browse and compare side by side. Open the AI Agents category from the badge at the top of this page, or use the Related Skills and comparison links further down to weigh phone-mcp against similar tools.
No comments yet. Be the first to share your thoughts!
⚠️ Third-Party Software Notice
This skill is third-party open-source software developed and hosted independently on GitHub. SkillsLLM is an informational directory and does not control or maintain the underlying repository.
Any security checks, ratings, or warnings displayed by SkillsLLM are automated and limited in scope. They do not constitute a security certification or guarantee that the software is safe, error-free, or free from malicious code, vulnerabilities, compromised dependencies, or prompt-injection risks.
Review the source code, permissions, dependencies, and configuration before installing or running any third-party skill. Use is at your own risk. To the maximum extent permitted by applicable law, SkillsLLM is not liable for losses arising from third-party software.
🌟 A powerful MCP plugin that lets you control your Android phone with ease through ADB commands.
Based on today's weather by browser, automatically select and play netease music, no confirmation needed
Call Hao from the contacts. If he doesn't answer, send a text message telling him to come to Meeting Room 101.
Use Python 3.10+ and uv to run in an isolated environment:
uvx --with "mcp<2" --with requests phone-mcp
The extra dependencies keep existing PyPI releases compatible with the MCP v1 API and provide requests, which the maps module imports. They are declared in the updated source package but are needed for older releases.
For a persistent installation with uv:
uv venv --python 3.11 .venv
uv pip install --python .venv/bin/python phone-mcp "mcp<2" requests
.venv/bin/phone-cli --help
Or use Python's built-in virtual environment and pip on Linux/macOS:
python3 -m venv .venv
.venv/bin/python -m pip install phone-mcp "mcp<2" requests
.venv/bin/phone-cli --help
On Windows, create the environment with py -3 -m venv .venv, then use .venv\Scripts\python.exe and .venv\Scripts\phone-cli.exe instead of the .venv/bin/ paths above.
On Debian/Ubuntu, an externally-managed-environment error means the system Python is managed by the OS. Use uvx or a virtual environment; do not bypass it with sudo pip or --break-system-packages. If venv is unavailable, install python3-venv with your system package manager first.
Configure in your AI assistant configuration (Cursor, Trae, Claude, etc.):
{
"mcpServers": {
"phone-mcp": {
"command": "uvx",
"args": [
"--with", "mcp<2",
"--with", "requests",
"phone-mcp"
]
}
}
}
Alternatively, if you installed with pip:
{
"mcpServers": {
"phone-mcp": {
"command": "/absolute/path/to/.venv/bin/python",
"args": [
"-m",
"phone_mcp"
]
}
}
}
Important: Use the absolute path to Python inside the virtual environment where you installed phone-mcp, not the system Python. On Linux/macOS this is
/absolute/path/to/.venv/bin/python; on Windows useC:\path\to\.venv\Scripts\python.exe(escape backslashes as\\in JSON). You do not need to activate the environment before launching your AI assistant.
Note: For Cursor, place this configuration in
~/.cursor/mcp.json
Usage:
Please call contact hao
⚠️ Before using, ensure:
# Check device connection
phone-cli check
# Get screen size
phone-cli screen-interact find method=clickable
# Make a call
phone-cli call 1234567890
# End current call
phone-cli hangup
# Send SMS
phone-cli send-sms 1234567890 "Hello"
# Get received messages (with pagination)
phone-cli messages --limit 10
# Get sent messages (with pagination)
phone-cli sent-messages --limit 10
# Get contacts (with pagination)
phone-cli contacts --limit 20
# Create a new contact with UI automation
phone-cli create-contact "John Doe" "1234567890"
# Take screenshot
phone-cli screenshot
# Record screen
phone-cli record --duration 30
# Launch app (may not work on all devices)
phone-cli app camera
# Alternative app launch method using open_app (if app command doesn't work)
phone-cli open_app camera
# Close app
phone-cli close-app com.android.camera
# List installed apps (basic info, faster)
phone-cli list-apps
# List apps with pagination
phone-cli list-apps --page 1 --page-size 10
# List apps with detailed info (slower)
phone-cli list-apps --detailed
# Launch specific activity (reliable method for all devices)
phone-cli launch com.android.settings/.Settings
# Launch app by package name (may not work on all devices)
phone-cli app com.android.contacts
# Alternative launch by package name (if app command doesn't work)
phone-cli open_app com.android.contacts
# Launch app by package and activity (most reliable method)
phone-cli launch com.android.dialer/com.android.dialer.DialtactsActivity
# Open URL in default browser
phone-cli open-url google.com
# Analyze current screen with structured information
phone-cli analyze-screen
# Unified interaction interface
phone-cli screen-interact <action> [parameters]
# Tap at coordinates
phone-cli screen-interact tap x=500 y=800
# Tap element by text
phone-cli screen-interact tap element_text="Login"
# Tap element by content description
phone-cli screen-interact tap element_content_desc="Calendar"
# Swipe gesture (scroll down)
phone-cli screen-interact swipe x1=500 y1=1000 x2=500 y2=200 duration=300
# Press key
phone-cli screen-interact key keycode=back
# Input text
phone-cli screen-interact text content="Hello World"
# Find elements
phone-cli screen-interact find method=text value="Login" partial=true
# Wait for element
phone-cli screen-interact wait method=text value="Success" timeout=10
# Scroll to find element
phone-cli screen-interact scroll method=text value="Settings" direction=down max_swipes=5
# Monitor UI for changes
phone-cli monitor-ui --interval 0.5 --duration 30
# Monitor UI until specific text appears
phone-cli monitor-ui --watch-for text_appears --text "Welcome"
# Monitor UI until specific element ID appears
phone-cli monitor-ui --watch-for id_appears --id "login_button"
# Monitor UI until specific element class appears
phone-cli monitor-ui --watch-for class_appears --class-name "android.widget.Button"
# Monitor UI changes with output as raw JSON
phone-cli monitor-ui --raw
# Search nearby POIs with phone numbers
phone-cli get-poi 116.480053,39.987005 --keywords restaurant --radius 1000
The plugin provides multiple ways to launch apps and activities:
By App Name (Two Methods):
# Method 1: Using app command (may not work on all devices)
phone-cli app camera
# Method 2: Using open_app command (alternative if app command fails)
phone-cli open_app camera
By Package Name (Two Methods):
# Method 1: Using app command (may not work on all devices)
phone-cli app com.android.contacts
# Method 2: Using open_app command (alternative if app command fails)
phone-cli open_app com.android.contacts
By Package and Activity (Most Reliable Method):
# This method works on all devices
phone-cli launch com.android.dialer/com.android.dialer.DialtactsActivity
Note: If you encounter issues with the
apporopen_appcommands, always use thelaunchcommand with the full component name (package/activity) for the most reliable operation.
The plugin provides a way to create contacts through UI interaction:
# Create a new contact with UI automation
phone-cli create-contact "John Doe" "1234567890"
This command will:
The unified screen interaction interface allows intelligent agents to easily:
The plugin provides powerful UI monitoring capabilities to detect interface changes:
Basic UI monitoring:
# Monitor any UI changes with custom interval (seconds)
phone-cli monitor-ui --interval 0.5 --duration 30
Wait for specific elements to appear:
# Wait for text to appear (useful for automated testing)
phone-cli monitor-ui --watch-for text_appears --text "Login successful"
# Wait for specific ID to appear
phone-cli monitor-ui --watch-for id_appears --id "confirmation_dialog"
Monitor elements disappearing:
# Wait for text to disappear
phone-cli monitor-ui