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.
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
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
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.
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_screenUses 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_elementUses 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_actionsUses 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_diffCompares 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_tapFinds 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_typeFinds 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_textUses 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_screenUses 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_settleWaits 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_elementWaits 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_popupDetects 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_formFill 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_appsList 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_appGet 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_appLaunch 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_appForce-stop a running application by its package name. This immediately terminates the app process. Useful for resetting app state or freeing resources.
install_appInstall 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_appUninstall 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_devicesList 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_infoGet 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_sizeGet the screen resolution of a connected Android device. Returns the width and height in pixels.
flutter_connectflutter_disconnectDisconnect from the currently connected Flutter app and clean up resources.
flutter_get_widget_treeflutter_get_widget_detailsflutter_find_widgetflutter_get_source_mapflutter_screenshot_widgetflutter_hot_reloadflutter_hot_restartflutter_debug_painttapPerform 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_tapPerform a double tap at the given (x, y) screen coordinates. Useful for zooming into maps/images or selecting text.
long_pressPerform 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.
swipePerform 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_textType 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_keyPress 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_simulatorsios_boot_simulatorBoot an iOS simulator by its UDID. Get the UDID from ios_list_simulators.
ios_shutdown_simulatorShutdown a running iOS simulator by its UDID.
ios_screenshotTake a screenshot of a running iOS simulator. Returns the image as base64.
get_logsRetrieve 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_recordingstop_test_recordingget_recorded_actionstake_screenshotCapture 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_elementsRetrieve 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_screenstop_recordingDisclosed vulnerabilities in this server's declared npm dependencies (via OSV). Whether each is reachable depends on the installed versions.
ws: Memory exhaustion DoS from tiny fragments and data chunks
ws: Uninitialized memory disclosure
ADB_PATHANDROID_HOMEANDROID_SDK_ROOTANTHROPIC_API_KEYAnthropic API key for Claude vision --GEMINI_API_KEYGOOGLE_API_KEY or Google API key for Gemini vision (recommended) --GOOGLE_API_KEYor GEMINI_API_KEY Google API key for Gemini vision (recommended) --MCP_ADB_PATHAuto-discoveredMCP_AI_API_KEYMCP_AI_MAX_TOKENSMCP_AI_MODELgemini-2.5-flash / claude-sonnet-4-20250514MCP_AI_PROVIDERAuto-detectedMCP_AI_SCREENSHOTMCP_AI_UITREEMCP_DEFAULT_DEVICEAuto-discoveredMCP_SCREENSHOT_FORMATjpegMOBILE_MCP_LICENSE_KEYLicense key to unlock Pro tools --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.
[](https://m8ven.ai/mcp/saranshbamania/mobile-device-mcp)?variant=verified from the URL.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