Agent Droid Bridge MCP
An MCP server that connects AI agents to Android devices and emulators over ADB. It exposes structured tools for mobile automation, app testing, dynamic analysis, and reverse engineering, allowing agents to perform UI interactions, app management, and device inspection.
Package and access
Local package with source-attributed installation metadata. Koskamo does not execute packages during review.
What you can do with it
- Automate UI flows across real devices and emulators
- Perform app testing and dynamic analysis
- Extract APKs and manage app packages
- Interact with device settings and contacts
Source and maintenance
- Maintenance checked
Packages and installation
Source-provided package data. Koskamo has not executed or live-probed this package.
agent-droid-bridge 0.6.1
{
"version": "0.6.1",
"transport": "stdio",
"identifier": "agent-droid-bridge",
"runtimeHint": "uvx",
"registryType": "pypi",
"registryBaseUrl": "https://pypi.org",
"environmentVariables": [
{
"name": "ADB_EXECUTION_MODE",
"choices": [
"unrestricted",
"restricted"
],
"default": "unrestricted",
"description": "Security mode. 'unrestricted' allows all shell commands with an optional denylist. 'restricted' allows only commands in ADB_SHELL_ALLOWLIST."
},
{
"name": "ADB_ALLOW_SHELL",
"format": "boolean",
"default": "true",
"description": "Set to 'false' to block all adb shell commands regardless of execution mode."
},
{
"name": "ADB_PATH",
"default": "adb",
"description": "Path to the ADB binary. Use a full path if adb is not on your system PATH.",
"placeholder": "/usr/bin/adb or C:\\platform-tools\\adb.exe"
},
{
"name": "ADB_EXTRA_TOOL_PACKS",
"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_DENIED_TOOLS",
"description": "Comma-separated list of tool names to hide from the agent at startup.",
"placeholder": "execute_adb_command,get_ui_hierarchy"
},
{
"name": "ADB_SHELL_ALLOWLIST",
"description": "Comma-separated list of shell commands permitted in restricted mode. Empty blocks all shell commands.",
"placeholder": "dumpsys,pm,am"
},
{
"name": "ADB_SHELL_DENYLIST",
"description": "Comma-separated list of shell commands blocked in unrestricted mode.",
"placeholder": "rm,reboot,su"
},
{
"name": "MCP_LOG_ENABLED",
"format": "boolean",
"default": "false",
"description": "Set to 'true' to enable session logging. Requires MCP_LOG_DIR."
},
{
"name": "MCP_LOG_DIR",
"format": "filepath",
"description": "Absolute path to the directory where session logs are written. Required when MCP_LOG_ENABLED is true.",
"placeholder": "/home/user/logs/agent-droid-bridge"
},
{
"name": "ADB_LOG_LEVEL",
"choices": [
"DEBUG",
"INFO",
"WARNING",
"ERROR",
"CRITICAL"
],
"default": "INFO",
"description": "Server process log level."
},
{
"name": "ADB_COMMAND_TIMEOUT",
"format": "number",
"default": "30",
"description": "Maximum seconds to wait for any ADB command."
},
{
"name": "ADB_SCREENSHOT_TIMEOUT",
"format": "number",
"default": "60",
"description": "Maximum seconds to wait for a screenshot capture."
},
{
"name": "ADB_UI_CHANGE_TIMEOUT",
"format": "number",
"default": "10",
"description": "Default timeout in seconds for detect_ui_change."
},
{
"name": "ADB_UI_CHANGE_POLL_INTERVAL",
"format": "number",
"default": "0.5",
"description": "How often in seconds detect_ui_change polls the UI hierarchy."
},
{
"name": "ADB_AAPT_TIMEOUT",
"format": "number",
"default": "10",
"description": "Maximum seconds to wait for aapt dump badging, used by the app_manager pack."
},
{
"name": "ADB_CONFIG_SOURCE",
"choices": [
"env",
"yaml"
],
"default": "env",
"description": "Set to 'yaml' to load configuration from adb_config.yaml instead of environment variables."
}
]
}Tools
Reported by the attributed source; not independently observed by Koskamo.
Connect from your client
Each snippet configures the same source-provided package; replace placeholders before use.
Cursor
{
"mcpServers": {
"agent-droid-bridge-mcp": {
"command": "uvx",
"args": [
"agent-droid-bridge==0.6.1"
],
"env": {
"ADB_EXECUTION_MODE": "<YOUR_ADB_EXECUTION_MODE>",
"ADB_ALLOW_SHELL": "<YOUR_ADB_ALLOW_SHELL>",
"ADB_PATH": "<YOUR_ADB_PATH>",
"ADB_EXTRA_TOOL_PACKS": "<YOUR_ADB_EXTRA_TOOL_PACKS>",
"ADB_DENIED_TOOLS": "<YOUR_ADB_DENIED_TOOLS>",
"ADB_SHELL_ALLOWLIST": "<YOUR_ADB_SHELL_ALLOWLIST>",
"ADB_SHELL_DENYLIST": "<YOUR_ADB_SHELL_DENYLIST>",
"MCP_LOG_ENABLED": "<YOUR_MCP_LOG_ENABLED>",
"MCP_LOG_DIR": "<YOUR_MCP_LOG_DIR>",
"ADB_LOG_LEVEL": "<YOUR_ADB_LOG_LEVEL>",
"ADB_COMMAND_TIMEOUT": "<YOUR_ADB_COMMAND_TIMEOUT>",
"ADB_SCREENSHOT_TIMEOUT": "<YOUR_ADB_SCREENSHOT_TIMEOUT>",
"ADB_UI_CHANGE_TIMEOUT": "<YOUR_ADB_UI_CHANGE_TIMEOUT>",
"ADB_UI_CHANGE_POLL_INTERVAL": "<YOUR_ADB_UI_CHANGE_POLL_INTERVAL>",
"ADB_AAPT_TIMEOUT": "<YOUR_ADB_AAPT_TIMEOUT>",
"ADB_CONFIG_SOURCE": "<YOUR_ADB_CONFIG_SOURCE>"
}
}
}
}Cline
{
"mcpServers": {
"agent-droid-bridge-mcp": {
"command": "uvx",
"args": [
"agent-droid-bridge==0.6.1"
],
"env": {
"ADB_EXECUTION_MODE": "<YOUR_ADB_EXECUTION_MODE>",
"ADB_ALLOW_SHELL": "<YOUR_ADB_ALLOW_SHELL>",
"ADB_PATH": "<YOUR_ADB_PATH>",
"ADB_EXTRA_TOOL_PACKS": "<YOUR_ADB_EXTRA_TOOL_PACKS>",
"ADB_DENIED_TOOLS": "<YOUR_ADB_DENIED_TOOLS>",
"ADB_SHELL_ALLOWLIST": "<YOUR_ADB_SHELL_ALLOWLIST>",
"ADB_SHELL_DENYLIST": "<YOUR_ADB_SHELL_DENYLIST>",
"MCP_LOG_ENABLED": "<YOUR_MCP_LOG_ENABLED>",
"MCP_LOG_DIR": "<YOUR_MCP_LOG_DIR>",
"ADB_LOG_LEVEL": "<YOUR_ADB_LOG_LEVEL>",
"ADB_COMMAND_TIMEOUT": "<YOUR_ADB_COMMAND_TIMEOUT>",
"ADB_SCREENSHOT_TIMEOUT": "<YOUR_ADB_SCREENSHOT_TIMEOUT>",
"ADB_UI_CHANGE_TIMEOUT": "<YOUR_ADB_UI_CHANGE_TIMEOUT>",
"ADB_UI_CHANGE_POLL_INTERVAL": "<YOUR_ADB_UI_CHANGE_POLL_INTERVAL>",
"ADB_AAPT_TIMEOUT": "<YOUR_ADB_AAPT_TIMEOUT>",
"ADB_CONFIG_SOURCE": "<YOUR_ADB_CONFIG_SOURCE>"
}
}
}
}VS Code
{
"servers": {
"agent-droid-bridge-mcp": {
"type": "stdio",
"command": "uvx",
"args": [
"agent-droid-bridge==0.6.1"
],
"env": {
"ADB_EXECUTION_MODE": "<YOUR_ADB_EXECUTION_MODE>",
"ADB_ALLOW_SHELL": "<YOUR_ADB_ALLOW_SHELL>",
"ADB_PATH": "<YOUR_ADB_PATH>",
"ADB_EXTRA_TOOL_PACKS": "<YOUR_ADB_EXTRA_TOOL_PACKS>",
"ADB_DENIED_TOOLS": "<YOUR_ADB_DENIED_TOOLS>",
"ADB_SHELL_ALLOWLIST": "<YOUR_ADB_SHELL_ALLOWLIST>",
"ADB_SHELL_DENYLIST": "<YOUR_ADB_SHELL_DENYLIST>",
"MCP_LOG_ENABLED": "<YOUR_MCP_LOG_ENABLED>",
"MCP_LOG_DIR": "<YOUR_MCP_LOG_DIR>",
"ADB_LOG_LEVEL": "<YOUR_ADB_LOG_LEVEL>",
"ADB_COMMAND_TIMEOUT": "<YOUR_ADB_COMMAND_TIMEOUT>",
"ADB_SCREENSHOT_TIMEOUT": "<YOUR_ADB_SCREENSHOT_TIMEOUT>",
"ADB_UI_CHANGE_TIMEOUT": "<YOUR_ADB_UI_CHANGE_TIMEOUT>",
"ADB_UI_CHANGE_POLL_INTERVAL": "<YOUR_ADB_UI_CHANGE_POLL_INTERVAL>",
"ADB_AAPT_TIMEOUT": "<YOUR_ADB_AAPT_TIMEOUT>",
"ADB_CONFIG_SOURCE": "<YOUR_ADB_CONFIG_SOURCE>"
}
}
}
}Claude Desktop
{
"mcpServers": {
"agent-droid-bridge-mcp": {
"command": "uvx",
"args": [
"agent-droid-bridge==0.6.1"
],
"env": {
"ADB_EXECUTION_MODE": "<YOUR_ADB_EXECUTION_MODE>",
"ADB_ALLOW_SHELL": "<YOUR_ADB_ALLOW_SHELL>",
"ADB_PATH": "<YOUR_ADB_PATH>",
"ADB_EXTRA_TOOL_PACKS": "<YOUR_ADB_EXTRA_TOOL_PACKS>",
"ADB_DENIED_TOOLS": "<YOUR_ADB_DENIED_TOOLS>",
"ADB_SHELL_ALLOWLIST": "<YOUR_ADB_SHELL_ALLOWLIST>",
"ADB_SHELL_DENYLIST": "<YOUR_ADB_SHELL_DENYLIST>",
"MCP_LOG_ENABLED": "<YOUR_MCP_LOG_ENABLED>",
"MCP_LOG_DIR": "<YOUR_MCP_LOG_DIR>",
"ADB_LOG_LEVEL": "<YOUR_ADB_LOG_LEVEL>",
"ADB_COMMAND_TIMEOUT": "<YOUR_ADB_COMMAND_TIMEOUT>",
"ADB_SCREENSHOT_TIMEOUT": "<YOUR_ADB_SCREENSHOT_TIMEOUT>",
"ADB_UI_CHANGE_TIMEOUT": "<YOUR_ADB_UI_CHANGE_TIMEOUT>",
"ADB_UI_CHANGE_POLL_INTERVAL": "<YOUR_ADB_UI_CHANGE_POLL_INTERVAL>",
"ADB_AAPT_TIMEOUT": "<YOUR_ADB_AAPT_TIMEOUT>",
"ADB_CONFIG_SOURCE": "<YOUR_ADB_CONFIG_SOURCE>"
}
}
}
}Let your agent find its tools
Find servers like Agent Droid Bridge MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.