mobile-device-mcp

general MCP Server

MCP server for AI-powered mobile device control — 26 tools for screenshots, UI inspection, touch interaction, and AI visual analysis. Supports Anthropic Claude & Google Gemini.

VerifiedInstall Ready
generalgeneralgcp
5 views1 stars0 forksv0.2.9NOASSERTION

Why This Matters

Discovered via list:awesome-mcp-servers-punkpeye and last synced 3mo ago.

VerifiedInstall Ready
Source
list:awesome-mcp-servers-punkpeye
Stars
1
Last synced
3mo ago
Install
Instructions detected

Install

1. Install the package

npx -y mobile-device-mcp

2. Add to claude_desktop_config.json

{
  "mcpServers": {
    "mobile-device-mcp": {
      "command": "npx",
      "args": [
        "mobile-device-mcp"
      ]
    }
  }
}

Config file location: ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) / %APPDATA%\Claude\claude_desktop_config.json (Windows)

69
Tools
0
Resources
0
Prompts
Standard I/O
Transport

Available Tools (69)

None

50-80%

MCP_DEFAULT_DEVICE

Default device serial

20

~15

tap

Tap at coordinates

wait_for_settle

Wait until the screen stops changing

suggest_actions

Plan actions to achieve a goal: *"log into the app"*, *"add item to cart"*

flutter_hot_restart

Hot restart Flutter app (resets state)

Variable

Description

No

Java/TestNG only

get_screen_size

Screen resolution in pixels

flutter_debug_paint

Toggle debug paint overlay (shows widget boundaries & padding)

install_app

Install an APK

MCP_SCREENSHOT_FORMAT

`"png"` or `"jpeg"`

get_logs

Get logcat entries with filtering

get_recorded_actions

Get recorded actions as TypeScript, Python, or JSON

MCP_AI_PROVIDER

Force AI provider: `"anthropic"` or `"google"`

flutter_get_source_map

Map every widget to its source code location (file:line:column)

ios_screenshot

Take a screenshot of a simulator

launch_app

Launch an app by package name

uninstall_app

Uninstall an app

MCP_SCREENSHOT_QUALITY

JPEG quality (1-100)

list_apps

List installed apps

flutter_disconnect

Disconnect from the Flutter app and clean up resources

flutter_get_widget_tree

Get the full widget tree (summary or detailed)

MOBILE_MCP_LICENSE_KEY

License key to unlock Pro tools

flutter_find_widget

Search the widget tree by type, text, or description

ios_shutdown_simulator

Shut down a running simulator

MCP_AI_MODEL

Override AI model

stop_recording

Stop recording and save the video

analyze_screen

AI describes the screen: app name, screen type, interactive elements, visible text, suggestions

Tool

What it does

smart_type

Find an input field by description, focus it, and type text

extract_text

Extract all visible text from the screen (AI-powered OCR)

verify_screen

Verify an assertion: *"the login was successful"*, *"error message is showing"*

Feature

mobile-device-mcp

Planned

Yes

get_ui_elements

Get the accessibility/UI element tree as structured JSON

double_tap

Double tap at coordinates

press_key

Press a key (home, back, enter, volume, etc.)

fill_form

Fill multiple form fields in one step

ios_list_simulators

List available iOS simulators

start_test_recording

Start recording your MCP tool calls

get_device_info

Model, manufacturer, Android version, SDK level

Free

## The Problem Web developers have browser DevTools, Playwright, and Puppeteer -- AI assistants can click around, take screenshots, and verify fixes. Mobile developers? They're stuck manually screenshotting, copying logs, and describing what's on screen. They're **human middleware** between the AI and the device. ## What This Does ``` Developer: "The login button doesn't work" Without this tool: With this tool: 1. Manually screenshot 1. AI calls take_screenshot -> sees the screen 2. Paste into AI chat 2. AI calls smart_tap("login button") -> taps it 3. AI guesses what's wrong 3. AI calls verify_screen("error message shown") -> sees result 4. Apply fix, rebuild 4. AI calls visual_diff -> confirms fix worked 5. Repeat 4-5 times 5. Done. ``` ## Quick Start ### Install ```bash npx mobile-device-mcp ``` No global install needed. Runs directly via npx. ### Prerequisites - Node.js 18+ - Android device/emulator connected via ADB - ADB installed ([Android SDK Platform Tools](https://developer.android.com/tools/releases/platform-tools)) ### Setup (One-time, 30 seconds) 1. **Get a Google AI key** (free tier available): [aistudio.google.com/apikey](https://aistudio.google.com/apikey) 2. **Add `.mcp.json` to your project root:** **macOS / Linux:** ```json { "mcpServers": { "mobile-device": { "type": "stdio", "command": "npx", "args": ["-y", "mobile-device-mcp"], "env": { "GOOGLE_API_KEY": "your-google-api-key" } } } } ``` **Windows:** ```json { "mcpServers": { "mobile-device": { "type": "stdio", "command": "cmd", "args": ["/c", "npx", "-y", "mobile-device-mcp"], "env": { "GOOGLE_API_KEY": "your-google-api-key" } } } } ``` **With Pro license key** (after [purchasing Pro](https://rzp.io/rzp/r4ijQsJY)): <details> <summary>macOS / Linux (Pro)</summary> ```json { "mcpServers": { "mobile-device": { "type": "stdio", "command": "npx", "args": ["-y", "mobile-device-mcp"], "env": { "GOOGLE_API_KEY": "your-google-api-key", "MOBILE_MCP_LICENSE_KEY": "MDMCP-XXXXX-XXXXX-XXXXX-XXXXX" } } } } ``` </details> <details> <summary>Windows (Pro)</summary> ```json { "mcpServers": { "mobile-device": { "type": "stdio", "command": "cmd", "args": ["/c", "npx", "-y", "mobile-device-mcp"], "env": { "GOOGLE_API_KEY": "your-google-api-key", "MOBILE_MCP_LICENSE_KEY": "MDMCP-XXXXX-XXXXX-XXXXX-XXXXX" } } } } ``` </details> 3. **Open your AI coding assistant** from that directory. That's it. The server starts and stops automatically -- you never run it manually. Your AI assistant manages it as a background process via the MCP protocol. ### Verify It Works **Claude Code:** type `/mcp` -- you should see `mobile-device: Connected` **Cursor:** check MCP panel in settings Then just talk to your phone: ``` You: "Open my app, tap the login button, type [email protected] in the email field" AI: [takes screenshot -> sees the screen -> smart_tap("login button") -> smart_type("email field", "[email protected]")] You: "Find all the bugs on this screen" AI: [analyze_screen -> inspects layout, checks for overflow, missing labels, broken states] You: "Navigate to settings and verify dark mode works" AI: [smart_tap("settings") -> take_screenshot -> smart_tap("dark mode toggle") -> visual_diff -> reports result] ``` No test scripts. No manual screenshots. Just describe what you want in plain English. ### Works with Any AI Coding Assistant

swipe

Swipe between two points

find_element

Find a UI element by description: *"the login button"*, *"email input field"*

wait_for_element

Wait for a specific element to appear on screen

flutter_hot_reload

Hot reload Flutter app (preserves state)

record_screen

Start recording the device screen

stop_app

Force stop an app

MCP_ADB_PATH

Custom ADB binary path

get_current_app

Get the foreground app

visual_diff

Compare current screen with a previous screenshot -- what changed?

flutter_connect

Discover and connect to a running Flutter app on the device

flutter_screenshot_widget

Screenshot a specific widget in isolation

ios_boot_simulator

Boot a simulator by name or UDID

stop_test_recording

Stop recording and generate a test script

ANTHROPIC_API_KEY

Anthropic API key for Claude vision

MCP_SCREENSHOT_MAX_WIDTH

Resize screenshots to this max width

take_screenshot

Capture screenshot (PNG or JPEG, configurable quality & resize)

Setup

`npx` (30 sec)

Price

Free + Pro (₹499/mo)

long_press

Long press at coordinates

flutter_get_widget_details

Get detailed properties of a specific widget by ID

Yes

Yes

list_devices

List all connected Android devices/emulators

type_text

Type text into the focused field

smart_tap

Find an element by description and tap it in one step

handle_popup

Detect and dismiss popups, dialogs, permission prompts