Mobile Device Mcp (saranshbamania/mobile-device-mcp) is an MCP server listed on the M8ven Trust Index. It scores 74 out of 100, grade C. It declares 49 tools. No publisher has claimed this listing.

C
Caution
74/100

Mobile Device Mcp

MCP server that gives AI coding assistants the ability to see and interact with mobile devices. 49 tools for Android/iOS — AI-powered visual analysis (Claude + Gemini), smart tap/type by description, Flutter widget tree inspection, video recording, and test script generation. 4-tier element search with <1ms local matching. Free tier included, zero setup via npx.\r\n

Caution. Specific findings reduced this grade. They are listed on the page. Grades reflect the full trust pyramid: code, verification depth, and reputation. New projects cap at C until adoption is earned.

How we verified

Code Verified⚡ Live Monitored: not connected

Verified is a snapshot. Live keeps it current, and builds your track record.

⚡ Connect GitHub → continuous verification on every pushwhy connect →

Who stands behind it

saranshbamania

Source: mcp.so · also listed on Glama

Is this your MCP?

Claim it to get a verified publisher badge, a free copy of our full audit findings, and direct contact for any high-priority issues we find. Or connect your repo for our deepest verification, Live Monitored: read-only, revoke anytime. What we access →

Install from

The grade above is for the source repository. Registries can serve a different version, so we mark the ones we were not able to read.

// key findings
⚠️
Known vulnerabilities in dependencies: 1 high
Affects packages this MCP installs at runtime. Upgrade or remove the affected dependency.
No credential exfiltration, no sensitive file access, no obfuscation
Static analysis found nothing flowing your secrets to unexpected places.
Open source with a license and README
Anyone can audit the code, the license is declared, and the publisher documents what it does.
🔐
You'll be asked for 5 credentials: ANTHROPIC_API_KEY, GEMINI_API_KEY, GOOGLE_API_KEY, MCP_AI_API_KEY, MOBILE_MCP_LICENSE_KEY
These are read from process.env at runtime. Make sure you trust where they’ll be sent.
// tools this server exposes49 tools

These names and descriptions are the publisher's own, read from the source code. We print them as written. Our assessment is the findings above, not this list.

analyze_screen

Uses AI vision to analyze the current screen of a mobile device. Returns a structured analysis including app name, screen type, interactive elements with coordinates, visible text, and suggested next actions. This is the primary tool for understanding what is currently displayed on the device.

find_element

Uses AI vision to find a specific UI element by natural language description. Returns the element's coordinates, type, and confidence score. Use this when you need to locate a specific button, field, or other UI element. Example queries: 'the login button', 'email input field', 'the red error messag

suggest_actions

Uses AI to analyze the current screen and suggest a sequence of actions to achieve a specified goal. Returns step-by-step instructions with exact coordinates for each action. Example goals: 'log into the app', 'navigate to settings', 'add an item to cart'.

visual_diff

Compares the current screen with a previous screenshot to identify what changed. Provide a base64 PNG screenshot as the 'before' image — the tool captures the current screen as the 'after' image. Returns a list of changes with descriptions and regions. Useful for verifying that an action had the exp

smart_tap

Finds a UI element by natural language description and taps it. Combines element finding and tapping into a single action. Example: smart_tap('the Sign In button') will locate the button and tap its center coordinates. Returns whether the tap succeeded and which element was tapped.

smart_type

Finds an input field by natural language description, taps it to focus, and types the specified text. Example: smart_type('email field', 'user@example.com') will find the email input, tap it, and type the email address.

extract_text

Uses AI vision to extract all visible text from the current screen. Returns text in reading order (top to bottom, left to right). Useful for reading content, checking labels, or getting text that isn't in the accessibility tree.

verify_screen

Uses AI to verify whether a specific assertion about the current screen is true. Returns a boolean result with confidence score and evidence. Example assertions: 'the login was successful', 'an error message is displayed', 'the cart has 3 items'.

wait_for_settle

Waits for the screen to stop changing after a navigation or action. Polls the UI tree until two consecutive snapshots are identical, indicating animations and loading have completed. Use this after tapping navigation buttons or triggering screen transitions to ensure the new screen is ready for inte

wait_for_element

Waits for a specific UI element to appear on screen by polling the UI tree. More reliable and faster than wait_for_settle — returns as soon as the target element is found. Use after navigation to wait for a specific button, text, or field to appear. Example: wait_for_element('Find Routes') after sel

handle_popup

Detects and handles system dialogs and popups (permission requests, update prompts, system alerts). Can automatically dismiss or accept the dialog. Use 'dismiss' to decline/skip, 'accept' to allow/confirm, or 'auto' to handle it automatically.

fill_form

Fill multiple form fields in a single operation. Provide a map of field descriptions to values. Each field is found by natural language description, cleared, and filled with the specified value. More efficient than calling smart_type multiple times.

list_apps

List all installed applications on the device. By default only user-installed (non-system) apps are returned. Set include_system to true to also include system apps. Each entry contains the package name, display name, version, and whether it is a system app.

get_current_app

Get the package name and activity name of the app that is currently in the foreground on the device. Useful for determining what the user is currently looking at.

launch_app

Launch an installed application by its package name (e.g. 'com.android.chrome'). The app will be started with its default/main activity. Use list_apps to discover available package names.

stop_app

Force-stop a running application by its package name. This immediately terminates the app process. Useful for resetting app state or freeing resources.

install_app

Install an Android application from an APK file on the host machine. Provide the full path to the .apk file. The APK will be pushed to the device and installed.

uninstall_app

Uninstall an application from the device by its package name. This removes the app and all its data. System apps cannot be uninstalled without root access.

list_devices

List all connected Android devices and emulators. Returns an array of DeviceInfo objects including id, model, manufacturer, Android version, connection status, and whether the device is an emulator.

get_device_info

Get detailed information about a specific Android device, including model, manufacturer, Android version, SDK version, connection status, screen size, and whether it is an emulator.

get_screen_size

Get the screen resolution of a connected Android device. Returns the width and height in pixels.

flutter_connect
flutter_disconnect

Disconnect from the currently connected Flutter app and clean up resources.

flutter_get_widget_tree
flutter_get_widget_details
flutter_find_widget
flutter_get_source_map
flutter_screenshot_widget
flutter_hot_reload
flutter_hot_restart
flutter_debug_paint
tap

Perform a single tap at the given (x, y) screen coordinates. Use get_ui_elements first to find the centerX/centerY of the element you want to tap.

double_tap

Perform a double tap at the given (x, y) screen coordinates. Useful for zooming into maps/images or selecting text.

long_press

Perform a long press (touch and hold) at the given (x, y) screen coordinates. Commonly used to open context menus, start drag operations, or trigger secondary actions.

swipe

Perform a swipe gesture from (start_x, start_y) to (end_x, end_y). Use this to scroll through lists, dismiss notifications, navigate between pages, or pull down the notification shade. A shorter duration makes the swipe faster (flick), while a longer duration makes it slower (drag).

type_text

Type text into the currently focused input field on the device. Make sure an input field is focused first (tap on it). Special characters and Unicode are supported.

press_key

Press a hardware or system key on the device. Accepts friendly key names such as 'home', 'back', 'enter', 'volume_up', 'volume_down', 'power', 'tab', 'delete', 'menu', 'search', 'app_switch', 'dpad_up', 'dpad_down', 'dpad_left', 'dpad_right', 'camera', 'escape', 'space', 'media_play_pause', 'media_n

ios_list_simulators
ios_boot_simulator

Boot an iOS simulator by its UDID. Get the UDID from ios_list_simulators.

ios_shutdown_simulator

Shutdown a running iOS simulator by its UDID.

ios_screenshot

Take a screenshot of a running iOS simulator. Returns the image as base64.

get_logs

Retrieve recent Android logcat entries from the device. You can filter by minimum log level (V=Verbose, D=Debug, I=Info, W=Warning, E=Error, F=Fatal) and/or by tag name. Returns structured JSON with timestamp, PID, TID, level, tag, and message for each entry.

start_test_recording
stop_test_recording
get_recorded_actions
take_screenshot

Capture a screenshot of the device screen. Returns the image with metadata (width, height, file size). Supports PNG (lossless, larger) and JPEG (compressed, smaller). Use format='jpeg' with quality and max_width to reduce image size for AI analysis.

get_ui_elements

Retrieve the current UI element tree from the device screen. Each element includes its index, text, content description, class name, resource ID, bounding box with center coordinates (useful for tap targets), and boolean states (clickable, scrollable, focusable, enabled, selected, checked). By defau

record_screen
stop_recording
// known CVEs in dependencies1 high1 low

Disclosed vulnerabilities in this server's declared npm dependencies (via OSV). Whether each is reachable depends on the installed versions.

highws@8.19.0GHSA-96hv-2xvq-fx4p

ws: Memory exhaustion DoS from tiny fragments and data chunks

ws: Uninitialized memory disclosure

Depend on this server? Get alerted when its CVEs change.Watch this server free →
// environment variables
To run this server yourself, you supply these values. They go in your own MCP client configuration and stay on your machine. The secret label means the value is sensitive, not that the server mishandles it.
configADB_PATH
configANDROID_HOME
configANDROID_SDK_ROOT
🔐 secretANTHROPIC_API_KEYAnthropic API key for Claude vision --
🔐 secretGEMINI_API_KEYGOOGLE_API_KEY or Google API key for Gemini vision (recommended) --
🔐 secretGOOGLE_API_KEYor GEMINI_API_KEY Google API key for Gemini vision (recommended) --
configMCP_ADB_PATHAuto-discovered
🔐 secretMCP_AI_API_KEY
configMCP_AI_MAX_TOKENS
configMCP_AI_MODELgemini-2.5-flash / claude-sonnet-4-20250514
configMCP_AI_PROVIDERAuto-detected
configMCP_AI_SCREENSHOT
configMCP_AI_UITREE
configMCP_DEFAULT_DEVICEAuto-discovered
configMCP_SCREENSHOT_FORMATjpeg
🔐 secretMOBILE_MCP_LICENSE_KEYLicense key to unlock Pro tools --
// quality suggestions

Tool annotations

No tools have read-only/destructive annotations

Add readOnlyHint or destructiveHint annotations to every tool so hosts can warn users before invoking.

All four hints declared on every tool

49/49 tools missing one or more hints — analyze_screen (missing: readOnlyHint, destructiveHint, idempotentHint, openWorldHint); find_element (missing: readOnlyHint, destructiveHint, idempotentHint, openWorldHint); suggest_actions (missing: readOnlyHint, destructiveHint, idempotentHint, openWorldHint), +46 more. OpenAI's directory rejects tools where any of the four hints are missing or non-boolean.

For every tool, set all four hints (readOnlyHint, destructiveHint, idempotentHint, openWorldHint) to explicit true/false values that match the handler’s actual behaviour.

Tests exist

No test files found

Add tests that exercise each declared tool.

Production dependencies are patched

0 critical, 1 high severity in production deps — ws@8.19.0 (high), ws@8.19.0 (low)

Run npm audit fix, or upgrade the affected packages to a non-vulnerable version.

Dependency freshness

2/7 production deps stale: jpeg-js@2022-10-31 (3.9y), pngjs@2023-02-20 (3.6y)

Claim the listing to review these findings one by one and send us a correction where you disagree, straight to the team. Claiming also means we tell you when the grade moves, and reach you first if we find anything urgent.

// full audit trail
The findings above are the summary. The full trail, every check we ran, each deduction, the network hosts observed and the dependency advisories, goes to verified publishers, along with an alert whenever a new one lands. Verified publishers can also review each finding and dispute it in one click. Publisher corrections have sharpened several of our checks this month, because the maintainer knows the codebase better than any scanner.
// improvement guidance — verified publishers only
We have 4 concrete improvements we can share with the publisher of this MCP. Each comes with specific guidance to raise the trust score.
// embed badge in your README
[![M8ven Verified](https://m8ven.ai/badge/mcp/saranshbamania/mobile-device-mcp?variant=verified)](https://m8ven.ai/mcp/saranshbamania/mobile-device-mcp)
Shows verification status without the grade. Want the grade badge instead? Remove ?variant=verified from the URL.
commit: 0c753ba9a657f4d32302f45c55a4c656e45964c3
code hash: ac2e687c7bd5018df4ad03ecfc4b0ddf46f2590ece19c51f133b853e5110b326
view raw JSON →
Check MCPs from inside your assistant
Tool Check · MCP

Vetting this one by hand? Tool Check is an MCP that scores other MCPs. Add it once and ask Claude, ChatGPT, or any MCP client to grade a server, surface CVEs, check the publisher, and suggest safer alternatives — before you install.

https://m8ven.ai/api/mcp/tool-check
check_toolsearch_toolscompare_toolsrecommend_alternativescheck_publisherreport_concern
How to add it →Free · no account needed · works in any MCP client