MCP server
by hao-cyber
Phone Control (Android ADB): Remotely manage Android phones with ADB—make calls, send texts, launch apps, manage contact
Controls Android phones remotely through ADB to make calls, send texts, take screenshots, manage apps, and retrieve system information.
Phone Control (Android ADB) is a community-built MCP server published by hao-cyber that provides AI assistants with tools and capabilities via the Model Context Protocol. Phone Control (Android ADB): Remotely manage Android phones with ADB—make calls, send texts, launch apps, manage contact It is categorized under communication, developer tools. This server exposes 21 tools that AI clients can invoke during conversations and coding sessions.
You can install Phone Control (Android ADB) in your AI client of choice. Use the install panel on this page to get one-click setup for Cursor, Claude Desktop, VS Code, and other MCP-compatible clients. This server runs locally on your machine via the stdio transport.
Apache-2.0
Phone Control (Android ADB) is released under the Apache-2.0 license. This is a permissive open-source license, meaning you can freely use, modify, and distribute the software.
Add new capabilities to Claude beyond text generation
Example
Access external data sources, execute code, interact with tools and services
Transform Claude from chatbot to action-taking agent
Provide Claude with access to relevant context and data
Example
Load project documentation, access knowledge bases, query databases
Get more accurate, context-aware responses
Automate multi-step workflows combining AI and external tools
Example
Research → Summarize → Create document → Send notification
Complete complex tasks end-to-end without manual steps
Share your MCP server with the developer community
Phone Control (Android ADB) is among the better-indexed MCP projects we tried; the explainx.ai summary tracks the official description.
Useful MCP listing: Phone Control (Android ADB) is the kind of server we cite when onboarding engineers to host + tool permissions.
Strong directory entry: Phone Control (Android ADB) surfaces stars and publisher context so we could sanity-check maintenance before adopting.
According to our notes, Phone Control (Android ADB) benefits from clear Model Context Protocol framing — fewer ambiguous “AI plugin” claims.
Phone Control (Android ADB) is among the better-indexed MCP projects we tried; the explainx.ai summary tracks the official description.
We wired Phone Control (Android ADB) into a staging workspace; the listing’s GitHub and npm pointers saved time versus hunting across READMEs.
Useful MCP listing: Phone Control (Android ADB) is the kind of server we cite when onboarding engineers to host + tool permissions.
Phone Control (Android ADB) reduced integration guesswork — categories and install configs on the listing matched the upstream repo.
Strong directory entry: Phone Control (Android ADB) surfaces stars and publisher context so we could sanity-check maintenance before adopting.
We evaluated Phone Control (Android ADB) against two servers with overlapping tools; this profile had the clearer scope statement.
showing 1-10 of 48
🌟 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.
# Run directly with uvx (recommended, part of uv, no separate installation needed)
uvx phone-mcp
# Or install with uv
uv pip install phone-mcp
# Or install with pip
pip install phone-mcp
Configure in your AI assistant configuration (Cursor, Trae, Claude, etc.):
{
"mcpServers": {
"phone-mcp": {
"command": "uvx",
"args": [
"phone-mcp"
]
}
}
}
Alternatively, if you installed with pip:
{
"mcpServers": {
"phone-mcp": {
"command": "/usr/local/bin/python",
"args": [
"-m",
"phone_mcp"
]
}
}
}
Important: The path
/usr/local/bin/pythonin the configuration above is the path to the Python interpreter. You need to modify it according to the actual Python installation location on your system. Here's how to find the Python path on different operating systems:Linux/macOS: Run the following command in terminal:
which python3or
which pythonWindows: Run in Command Prompt (CMD):
where pythonOr in PowerShell:
(Get-Command python).PathMake sure to replace
/usr/local/bin/pythonin the configuration with the full path, for example on Windows it might beC:\Python39\python.exe
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 --watch-for text_disappears --text "Loading..."
Get detailed UI change reports:
# Get raw JSON data with all UI change information
phone-cli monitor-ui --raw
Tip: UI monitoring is especially useful for automation scripts to wait for loading screens to complete or confirm that actions have taken effect in the UI.
For complete documentation and configuration details, visit our GitHub repository.
The plugin provides a powerful screen interface with comprehensive APIs for interacting with the device. Below are the key functions and their parameters:
async def interact_wit
---
Prerequisites
Time Estimate
15-60 minutes depending on server complexity
Steps
Troubleshooting
✓ Do
✗ Don't
💡 Pro Tips
Architecture
Model Context Protocol standardizes how AI hosts (Claude, Cursor) communicate with external tools and data sources through server implementations.
Protocols
Compatibility
✓ Use when
Use when you need Claude to access external data, execute actions, or integrate with tools. Best for extending AI capabilities beyond conversation.
✗ Avoid when
Avoid when native integrations exist (use official APIs directly), for real-time critical systems, or when security/compliance requires zero external dependencies.