list_devicesLABSCO SUMMARY
The free half is enough to see whether it fits.
Screenshots, the UI tree, taps and logcat cost nothing and already close the loop mobile developers are missing — the agent sees the screen instead of waiting for you to paste a picture. What the licence buys is the layer above: naming an element in words instead of coordinates, and reading a Flutter widget tree back to its source location. Check the licence itself before commercial use.
What it is
A Node server that drives an Android device or emulator over ADB, plus iOS simulators on macOS. 14 tools are free; the rest — AI visual analysis, Flutter inspection, iOS simulators, video and test generation — need a Pro licence key.
What you get
- Free: devices, device and screen info, screenshots, the accessibility tree as JSON, taps, double taps, long presses, swipes, typing, key presses, installed and foreground apps, and filtered logcat —
list_devices,get_device_info,get_screen_size,take_screenshot,get_ui_elements,tap,double_tap,long_press,swipe,type_text,press_key,list_apps,get_current_app,get_logs - Pro, visual analysis: describe the screen, find an element by description, tap or type into it in one step, plan actions toward a goal, diff two screens, extract text, verify an assertion, wait for the screen to settle or an element to appear, dismiss popups, fill a form —
analyze_screen,find_element,smart_tap,smart_type,suggest_actions,visual_diff,extract_text,verify_screen,wait_for_settle,wait_for_element,handle_popup,fill_form - Pro, Flutter: connect to a running app over the Dart VM Service, read the widget tree, map every widget to its source location, screenshot one widget, toggle debug paint, hot reload and hot restart —
flutter_connect,flutter_get_widget_tree,flutter_find_widget,flutter_get_source_map,flutter_screenshot_widget,flutter_debug_paint,flutter_hot_reload,flutter_hot_restart - Pro, iOS simulators on macOS, screen recording, and test scripts generated from your tool calls in TypeScript, Python or JSON —
ios_list_simulators,ios_boot_simulator,ios_screenshot,record_screen,stop_recording,start_test_recording,stop_test_recording,get_recorded_actions - App management: launch, force stop, install an APK, uninstall —
launch_app,stop_app,install_app,uninstall_app
Requirements
Node.js 18+, ADB installed, and an Android device or emulator connected. Run it with npx mobile-device-mcp; nothing is installed globally. GOOGLE_API_KEY or GEMINI_API_KEY supplies Gemini vision for the AI tools, ANTHROPIC_API_KEY uses Claude instead, and MOBILE_MCP_LICENSE_KEY unlocks the Pro tools at ₹499/mo. MCP_ADB_PATH and MCP_DEFAULT_DEVICE override auto-detection; screenshots are tuned with MCP_SCREENSHOT_FORMAT, MCP_SCREENSHOT_QUALITY and MCP_SCREENSHOT_MAX_WIDTH. Licensed under Business Source License 1.1 — free for individuals and non-commercial use, commercial use requires a paid licence, converting to Apache 2.0 on March 23, 2030. iOS physical devices are on the roadmap, not shipped.
Setup effort
One command — npx mobile-device-mcp
USE CASES
Debugging a screen without screenshotting by hand
Have the agent capture the screen and the element tree, then act on what it sees.
Driving a flow in plain language
Describe the button and the field rather than working out coordinates, then verify the result.
Finding which widget draws a broken row
Read the Flutter widget tree and map the widget back to its file and line before editing.
Turning a manual run into a test
Record the tool calls you made and export them as a TypeScript or Python test script.
49 tools
Listed in project docs. Your client may show a different list.
get_device_infoget_screen_sizetake_screenshotget_ui_elementstapdouble_taplong_pressswipetype_textpress_keylist_appsget_current_appget_logsanalyze_screenfind_elementsmart_tapsmart_typesuggest_actionsvisual_diffextract_textverify_screenwait_for_settlewait_for_elementhandle_popupfill_formflutter_connectflutter_disconnectflutter_get_widget_treeflutter_get_widget_detailsflutter_find_widgetflutter_get_source_mapflutter_screenshot_widgetflutter_debug_paintflutter_hot_reloadflutter_hot_restartios_list_simulatorsios_boot_simulatorios_shutdown_simulatorios_screenshotrecord_screenstop_recordingstart_test_recordingstop_test_recordingget_recorded_actionslaunch_appstop_appinstall_appuninstall_appBEFORE YOU INSTALL
What to know first
Tools you get
49 tools named in the project's documentation.
Requires
- npx on PATH
- Node.js 18+
Optional
- GOOGLE_API_KEY in your environment
- MOBILE_MCP_LICENSE_KEY in your environment
Where it runs
All 5 documented clients run the server on your machine.
INSTALLATION
Connect your client
Server setup
npx mobile-device-mcpMCP Clients
Claude Code, Cursor, Windsurf
{
"mcpServers": {
"mobile-device": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"mobile-device-mcp"
],
"env": {
"GOOGLE_API_KEY": "<YOUR_GOOGLE_API_KEY>"
}
}
}
}MOBILE_MCP_LICENSE_KEY is only for the Pro tools. After you buy a licence the key arrives by email; add it to the env block above, next to GOOGLE_API_KEY, as the README's Pro example does: "MOBILE_MCP_LICENSE_KEY": "your-license-key".
VS Code
{
"servers": {
"mobile-device": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"mobile-device-mcp"
],
"env": {
"GOOGLE_API_KEY": "<YOUR_GOOGLE_API_KEY>"
}
}
}
}MOBILE_MCP_LICENSE_KEY is only for the Pro tools. After you buy a licence the key arrives by email; add it to the env block above, next to GOOGLE_API_KEY, as the README's Pro example does: "MOBILE_MCP_LICENSE_KEY": "your-license-key".
Any MCP client — Windows
{
"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 is only for the Pro tools. After you buy a licence the key arrives by email; add it to the env block above, next to GOOGLE_API_KEY, as the README's Pro example does: "MOBILE_MCP_LICENSE_KEY": "your-license-key".