{"name":"io.github.Neverlow512/agent-droid-bridge","slug":"neverlow512-agent-droid-bridge","title":"Agent Droid Bridge","description":"MCP server giving AI agents eyes and hands inside Android devices via ADB","url":"https://mcp.market/server/neverlow512-agent-droid-bridge","rating":null,"grade":"A","score":88,"certified":false,"status":"active","category":"ai","tags":["ai"],"presence":{"score":23,"stars":22,"forks":3,"downloads_week":null,"last_push_at":"2026-06-30T22:04:44.000Z","license":"MIT"},"uptime":null,"claimed":false,"transport":"pypi","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/Neverlow512/agent-droid-bridge","website":null,"version":"0.6.1","remotes":[],"packages":[{"registryType":"pypi","registryBaseUrl":"https://pypi.org","identifier":"agent-droid-bridge","version":"0.6.1","runtimeHint":"uvx","transport":{"type":"stdio"},"environmentVariables":[{"description":"Security mode. 'unrestricted' allows all shell commands with an optional denylist. 'restricted' allows only commands in ADB_SHELL_ALLOWLIST.","default":"unrestricted","choices":["unrestricted","restricted"],"name":"ADB_EXECUTION_MODE"},{"description":"Set to 'false' to block all adb shell commands regardless of execution mode.","format":"boolean","default":"true","name":"ADB_ALLOW_SHELL"},{"description":"Path to the ADB binary. Use a full path if adb is not on your system PATH.","default":"adb","placeholder":"/usr/bin/adb or C:\\platform-tools\\adb.exe","name":"ADB_PATH"},{"description":"Comma-separated list of extra tool packs to load. Set to 'app_manager' to enable 9 additional app management tools.","placeholder":"app_manager","name":"ADB_EXTRA_TOOL_PACKS"},{"description":"Comma-separated list of tool names to hide from the agent at startup.","placeholder":"execute_adb_command,get_ui_hierarchy","name":"ADB_DENIED_TOOLS"},{"description":"Comma-separated list of shell commands permitted in restricted mode. Empty blocks all shell commands.","placeholder":"dumpsys,pm,am","name":"ADB_SHELL_ALLOWLIST"},{"description":"Comma-separated list of shell commands blocked in unrestricted mode.","placeholder":"rm,reboot,su","name":"ADB_SHELL_DENYLIST"},{"description":"Set to 'true' to enable session logging. Requires MCP_LOG_DIR.","format":"boolean","default":"false","name":"MCP_LOG_ENABLED"},{"description":"Absolute path to the directory where session logs are written. Required when MCP_LOG_ENABLED is true.","format":"filepath","placeholder":"/home/user/logs/agent-droid-bridge","name":"MCP_LOG_DIR"},{"description":"Server process log level.","default":"INFO","choices":["DEBUG","INFO","WARNING","ERROR","CRITICAL"],"name":"ADB_LOG_LEVEL"},{"description":"Maximum seconds to wait for any ADB command.","format":"number","default":"30","name":"ADB_COMMAND_TIMEOUT"},{"description":"Maximum seconds to wait for a screenshot capture.","format":"number","default":"60","name":"ADB_SCREENSHOT_TIMEOUT"},{"description":"Default timeout in seconds for detect_ui_change.","format":"number","default":"10","name":"ADB_UI_CHANGE_TIMEOUT"},{"description":"How often in seconds detect_ui_change polls the UI hierarchy.","format":"number","default":"0.5","name":"ADB_UI_CHANGE_POLL_INTERVAL"},{"description":"Maximum seconds to wait for aapt dump badging, used by the app_manager pack.","format":"number","default":"10","name":"ADB_AAPT_TIMEOUT"},{"description":"Set to 'yaml' to load configuration from adb_config.yaml instead of environment variables.","default":"env","choices":["env","yaml"],"name":"ADB_CONFIG_SOURCE"}]}],"tools":[{"name":"check_device_capabilities","description":"Device capabilities and hardware profile for the connected Android device.","write_action":false,"price_micros":0,"input_schema":null},{"name":"detect_ui_change","description":"Polls the UI hierarchy after an action and returns when the screen content changes or the timeout is reached. Returns changed status and elapsed time. By default, omits the XML hierarchy for efficiency — set return_hierarchy=True to receive the full hierarchy.","write_action":false,"price_micros":0,"input_schema":null},{"name":"execute_adb_command","description":"The output of an ADB command. Parsed safely via shlex and never passed to a system shell.","write_action":true,"price_micros":0,"input_schema":null},{"name":"get_app_info","description":"Full static metadata for a single installed app. Request only the sections you need. Use search to filter components or permissions by name.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_screen_elements","description":"Structured list of UI elements currently visible on the Android screen.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_screen_text","description":"Returns all visible text on the current Android screen, sorted top-to-bottom.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_ui_hierarchy","description":"Returns the current Android screen as an XML UI hierarchy.","write_action":false,"price_micros":0,"input_schema":null},{"name":"inject_intent","description":"","write_action":false,"price_micros":0,"input_schema":null},{"name":"install_app","description":"Install an APK from a host path onto the device. Returns the package name and version if aapt is available, or None for those fields if not. Returns the package manager error string on failure.","write_action":false,"price_micros":0,"input_schema":null},{"name":"launch_app","description":"An Android app launched by its component name (package/activity).","write_action":false,"price_micros":0,"input_schema":null},{"name":"launch_app_extra","description":"Launch an app by package name without requiring a component name. Resolves the launcher activity automatically using pm resolve-activity. Returns the resolved component, app name, and PID when available. PID is best-effort — it may be None on success if the process had not registered by the time of the check. If resolution fails, the error message will suggest using get_app_info with sections=['co","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_devices","description":"All Android devices currently visible to ADB, with their serial numbers, connection state, and model names.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_packages","description":"List installed packages on the device. Use search to narrow results before requesting detailed mode — detailed runs a separate dumpsys call per package and is expensive on large lists.","write_action":false,"price_micros":0,"input_schema":null},{"name":"manage_app","description":"Control app runtime state. Clear_data is irreversible — it permanently removes all user data for the app. Clear_cache requires root and reports requires_root=true when unavailable.","write_action":false,"price_micros":0,"input_schema":null},{"name":"manage_permission","description":"Grant, revoke, check, or list runtime permissions for an app. Use list to see all permissions without specifying one. Use check to verify grant status before acting.","write_action":false,"price_micros":0,"input_schema":null},{"name":"press_key","description":"A key event sent to the Android device using the given keycode integer.","write_action":false,"price_micros":0,"input_schema":null},{"name":"pull_apk","description":"Extract the installed APK from the device by package name. Returns the written file path(s) and sizes.","write_action":false,"price_micros":0,"input_schema":null},{"name":"snapshot_ui","description":"Takes a lightweight snapshot of the current UI state and returns a short token.","write_action":false,"price_micros":0,"input_schema":null},{"name":"swipe_screen","description":"A swipe gesture on the Android screen from (x1,y1) to (x2,y2) over the given duration.","write_action":false,"price_micros":0,"input_schema":null},{"name":"take_screenshot","description":"A PNG screenshot of the current Android device screen with width, height, and base64-encoded image data.","write_action":false,"price_micros":0,"input_schema":null},{"name":"tap_screen","description":"A tap gesture at the given pixel coordinates on the Android screen.","write_action":false,"price_micros":0,"input_schema":null},{"name":"type_text","description":"Text input into the currently focused Android input field.","write_action":false,"price_micros":0,"input_schema":null},{"name":"uninstall_app","description":"Remove an installed app by package name.","write_action":true,"price_micros":0,"input_schema":null}],"scan":{"score":88,"grade":"A","scanned_at":"2026-09-27T22:34:01.094Z","report":{"scannerVersion":"0.1.9","scannedAt":"2026-09-27T22:34:01.143Z","components":{"code":{"score":25,"max":25,"notes":["29 source files scanned"]},"reliability":{"score":-1,"max":20,"notes":["no gateway calls yet and no remote to probe"]},"poisoning":{"score":-1,"max":15,"notes":["tools not inspected (local package is not executed); not counted"]},"auth":{"score":12,"max":15,"notes":["local package, no credentials required"]},"maintenance":{"score":12,"max":15,"notes":["last push 89 days ago"]},"identity":{"score":8,"max":10,"notes":["registry namespace matches repository owner","GitHub account older than a year"]}},"findings":[],"inputs":{"packages":[{"registryType":"pypi","identifier":"agent-droid-bridge","version":"0.6.1","found":true,"license":"MIT","dependencyCount":4,"publishedAt":"2026-04-15T20:05:11.367204Z","repositoryUrl":"https://github.com/Neverlow512/agent-droid-bridge"}],"repo":{"found":true,"owner":"Neverlow512","repo":"agent-droid-bridge","archived":false,"pushedAt":"2026-06-30T22:04:44Z","stars":22,"forks":3,"openIssues":8,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/79411273?v=4","ownerCreatedAt":"2021-02-21T15:16:02Z","license":"MIT"},"icon":{"url":"https://avatars.githubusercontent.com/u/79411273?v=4&s=128","source":"github"},"presence":{"stars":22,"forks":3,"downloadsWeek":null,"license":"MIT","lastPushAt":"2026-06-30T22:04:44.000Z","score":23}}}},"grade_history":[],"reviews":[]}