android-device-mcp
Provides tools for managing Android devices via ADB, including device control, app management, file operations, and system monitoring such as screenshots, screen recording, log capture, and shell commands.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@android-device-mcplist connected Android devices"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Android Device MCP
A Model Context Protocol (MCP) server that provides comprehensive Android device management capabilities through ADB (Android Debug Bridge). This tool allows you to interact with Android devices programmatically for device management, app management, file operations, and system monitoring.
Features
Device Management
List Devices: Get detailed information about all connected Android devices, including OS version, hardware specs, battery status, and network details
Device Control: Reboot and shut down devices with optional boot modes
Screenshots: Capture device screenshots and save them locally
Screen Recording: Record device screen activity for specified durations
Screen Dump: Export current screen layout as XML for UI automation
Network Information: Retrieve Wi-Fi details, IP addresses, and connection status
App Management
List Installed Apps: Get a complete list of installed applications with package names
App Details: Retrieve detailed information about specific apps (version, SDK, install dates)
Install Apps: Install APK files on connected devices
Uninstall Apps: Remove applications from devices
Launch Apps: Start applications on devices
File System Operations
List Files: Browse directories on Android devices
Pull Files: Copy files from devices to the local system
Push Files: Copy files from the local system to the devices
Remove Files: Delete files from devices
System Monitoring
Log Management: Clear and capture device logs (logcat)
Shell Commands: Execute arbitrary shell commands on devices
Real-time Logging: Collect logs for specified durations
Related MCP server: MSC MCP Server
Prerequisites
Python 3.13 or higher
ADB (Android Debug Bridge) installed and accessible in PATH
Android device(s) connected via USB with USB debugging enabled
Device(s) authorized for ADB access
UV is installed
Installation
Clone the repository:
git clone https://github.com/prashant1507/android-device-mcp.git
cd android-device-mcpInstall dependencies using uv (recommended) or pip:
# Using uv
uv syncConfigure your MCP client (LM Studio, CursorAI, Claude, etc.) to use the Android Device MCP server:
{
"mcpServers": {
"android-device-mcp": {
"command": "uv",
"args": [
"run",
"--with",
"mcp[cli]",
"mcp",
"run",
"./android-device-mcp-server.py"
],
"cwd": "/path/to/android-device-mcp"
}
}
}Note: Replace /path/to/android-device-mcp with the actual path to your project directory.
Error Handling
All functions include comprehensive error handling and will return descriptive error messages if operations fail. Common error scenarios include:
Device not connected or unauthorized
ADB server not running
Invalid file paths
Insufficient permissions
Timeout errors for long-running operations
Troubleshooting
Device Not Detected
Ensure USB debugging is enabled on the device
Check that the device is authorized for ADB access
Verify ADB is properly installed and in PATH
Try restarting the ADB server:
adb kill-server && adb start-server
Permission Errors
Ensure the device is unlocked and authorized
Check that the app has the necessary permissions
For file operations, verify the target directories are writable
Timeout Issues
Increase timeout values for slow devices or large file transfers
Check device performance and available storage
Ensure a stable USB connection
Contributing
Contributions are welcome! Please feel free to submit pull requests or open issues for bugs and feature requests.
Acknowledgments
This project leverages the Android Debug Bridge (ADB) for device communication and the Model Context Protocol (MCP) for tool integration.
Available Tools
18 toolsclear_device_logsClears LogsC
Clear logs from logcat on a specific Android device
| Name | Required | Description | Default |
|---|---|---|---|
| serial | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. The description implies a destructive action but does not disclose what exactly is cleared (e.g., all log buffers?), whether it affects running processes, or any required permissions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, which is concise and front-loaded with the action. However, it is too brief, sacrificing useful detail for brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter and no output schema, the description fails to explain the tool's effect, post-conditions, or how to obtain the required serial. Context from sibling tools is not leveraged.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage and no explanation in the tool description, the parameter 'serial' is left undefined. The agent cannot infer what value to provide.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('clear logs') and the target resource ('logcat on a specific Android device'), distinguishing it from siblings like 'get_device_logs' which retrieve logs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives (e.g., when to clear vs get logs), or any prerequisites such as requiring the device to be connected.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dump_screenDump screenC
Dump current screen of Android device.
| Name | Required | Description | Default |
|---|---|---|---|
| serial | Yes | ||
| local_file_path | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, and description does not disclose behavioral traits such as file format, storage location, permissions needed, or side effects. Simply states 'dump' without elaboration.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is too brief (only 6 words) and lacks structure. While concise, it sacrifices necessary detail, making it under-specified.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 0% schema coverage, no output schema, and no annotations, the description is far from complete. Fails to clarify output, behavior, or relationship to sibling tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description adds no meaning to the two parameters ('serial', 'local_file_path'). Relies entirely on parameter names, which are insufficient.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses 'dump' which is ambiguous; could mean screen capture or content extraction. It identifies the resource (screen) but does not differentiate from sibling tools like 'take_screenshot'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like 'take_screenshot' or 'screen_recording'. Lacks context for typical use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
execute_shell_commandExecute shell commandC
Execute shell command in an Android device.
| Name | Required | Description | Default |
|---|---|---|---|
| serial | Yes | ||
| command | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, and the description fails to disclose any behavioral traits such as potential destructive actions, need for root, output handling, or error conditions. For a shell command tool, this is a critical omission.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is overly terse (one sentence) and lacks structural elements like bullet points or context. While conciseness is valued, here it sacrifices essential information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's power (arbitrary shell command execution) and the absence of output schema, annotations, or parameter details, the description is severely incomplete. It does not inform the agent about return values, potential side effects, or required permissions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage and no textual elaboration, the description adds no meaning to the two parameters (serial and command). The agent receives no hints about valid values, formats, or constraints beyond type 'string'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it executes a shell command on an Android device, specifying the verb and resource. It is distinct from sibling tools which cover other ADB operations (e.g., clear logs, take screenshots). However, it could be more precise about the scope (e.g., any shell command).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like pulling files or installing apps. The description does not mention prerequisites, safety considerations, or context where this tool is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_app_detailsGet app detailsA
Retrieve detailed information about an installed app using its name or package name.
| Name | Required | Description | Default |
|---|---|---|---|
| serial | Yes | ||
| app_package_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must convey behavioral traits. It only states the action without mentioning that it is read-only, what happens if the app is not found, or any required permissions. The purely functional statement lacks behavioral depth.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no fluff, achieving maximum conciseness and front-loading the action and object.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description should hint at what 'detailed information' includes (e.g., version, permissions). It also omits explanation of the required 'serial' parameter, making the tool's input insufficiently clear.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description should explain parameters. It mentions 'name or package name' but the only identification parameter is 'app_package_name', causing ambiguity. The 'serial' parameter is unexplained, leaving agents to infer its purpose.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves detailed information about an installed app. It specifies using name or package name, differentiating it from siblings like list_installed_apps or install_app.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear context for when to use the tool (need detailed info on a specific app) but does not explicitly mention when not to use it or suggest alternatives like list_installed_apps for a list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_device_logsGet and Save LogsC
Get and save logs from logcat on a specific Android device
| Name | Required | Description | Default |
|---|---|---|---|
| serial | Yes | ||
| time_out | No | ||
| local_log_file_path | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description must carry the full burden. It does not disclose blocking behavior, file overwrite policy, or error handling for invalid serials.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence is concise, but front-loads no critical info and lacks structure beyond the basic action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 3 parameters, no output schema, and no annotations, the description fails to explain return values, side effects, or edge cases, leaving the agent underinformed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description adds no meaning to parameters: 'serial' is ambiguous, 'time_out' lacks units, and 'local_log_file_path' has no format or default behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses specific verb+resource ('get and save logs from logcat') and targets 'a specific Android device', clearly distinguishing it from sibling tools like clear_device_logs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like clear_device_logs or execute_shell_command. No prerequisites or context for proper invocation are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_network_detailsGet network detailsB
Retrieve network, Wi-Fi information for an Android device by serial number.
| Name | Required | Description | Default |
|---|---|---|---|
| serial | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits. It only states a read operation, but does not mention any side effects, permissions required, or performance characteristics. The description adds minimal insight beyond the purpose.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with no extraneous information. It is front-loaded and concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having only one parameter and no output schema, the description is too minimal. It does not specify what network information is returned (e.g., SSID, IP, signal strength) or any error conditions. An agent cannot fully understand the tool's behavior or output.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description should explain the 'serial' parameter meaning. It merely mentions 'by serial number' without format, source, or constraints. The schema already indicates it's a required string, so the description adds no value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves network/Wi-Fi information for an Android device by serial number. The verb 'Retrieve' and resource 'network, Wi-Fi information' are specific. It distinguishes from sibling tools like clear_device_logs or take_screenshot.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives, such as get_device_logs or get_app_details. It does not mention prerequisites or scenarios where it might be inappropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
install_appInstall appC
Install an APK file on an Android device.
| Name | Required | Description | Default |
|---|---|---|---|
| serial | Yes | ||
| apk_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description only says 'install', missing critical behavioral details like what happens if the app already exists, required permissions, or side effects on the device.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no wasted words, but it is too brief and lacks essential information, indicating under-specification rather than conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With two required parameters, no output schema, and no annotations, the description fails to provide enough context for an agent to invoke the tool correctly, missing details like device identification and file path requirements.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has no descriptions and 0% coverage, and the description does not explain the two required parameters (serial and apk_path), leaving the agent without any meaning beyond the parameter names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'install' and the resource 'APK file on an Android device', which is specific and distinct from sibling tools like uninstall_app or launch_app.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, such as when an APK needs to be installed vs. launching an existing app or uninstalling one.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
launch_appLaunch appC
Launch an APP in an Android device.
| Name | Required | Description | Default |
|---|---|---|---|
| serial | Yes | ||
| package_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations and a minimal description, there is no disclosure of side effects (e.g., whether it brings the app to foreground, starts a new process, or fails silently if app is missing). The agent cannot assess behavior like error states or resource consumption.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise (one sentence), but it sacrifices necessary detail. While brevity is valued, the lack of structure or additional context reduces its effectiveness. It could include parameter hints or usage notes without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has two required parameters, no output schema, and no annotations, the description fails to provide enough context for an agent to use it correctly. Missing information about return behavior, error handling, and parameter formats makes it incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description does not elaborate on the parameters (serial, package_name). The agent must infer their meaning from the property names alone, which is insufficient for correct invocation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (launch) and resource (APP on Android device), distinguishing it from sibling tools like get_app_details or list_installed_apps. However, it's somewhat redundant with the tool name and lacks specificity about what 'launch' entails (e.g., starting the main activity).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives, nor are there any prerequisites (e.g., app must be installed) or conditions for successful execution. The agent is left to infer usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_devicesList DevicesA
List all connected Android devices with their serial numbers and detailed info.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description accurately describes a non-destructive read operation. While annotations are absent, the description is straightforward and discloses no hidden side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded with key information, no unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple zero-parameter tool with no output schema, the description fully covers what the tool does and what it returns.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are no parameters, so the schema coverage is 100%. The description adds no parameter info, but none is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'list', the resource 'connected Android devices', and the output 'serial numbers and detailed info'. It distinguishes from sibling tools like get_app_details or get_device_logs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for discovering available devices, but does not provide explicit when-to-use or when-not-to-use guidance compared to sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_filesList FilesB
List all files in a given directory on an Android device using its serial number.
| Name | Required | Description | Default |
|---|---|---|---|
| serial | Yes | ||
| file_path_in_device | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It does not disclose whether listing is recursive, what metadata is returned, or if it is safe/read-only. These gaps reduce transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single clear sentence with no unnecessary words. Efficiently conveys the core action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 2 required params and no output schema, the description is adequate for a simple listing tool but omits details like error handling, return format, and recursive behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, yet the description only vaguely references 'serial number' and 'given directory', adding minimal meaning beyond parameter names. Does not explain format, constraints, or examples.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'List' and the resource 'files in a given directory on an Android device'. It uniquely identifies the tool among siblings like list_devices or list_installed_apps.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives like pull_file or push_file. The usage is implied but lacks exclusions or context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_installed_appsList Installed ApplicationsC
List all installed applications on a specific Android device
| Name | Required | Description | Default |
|---|---|---|---|
| serial | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. Description only says 'list', implying read-only, but doesn't confirm lack of side effects, rate limits, or required permissions. No mention of output format or error states.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is one sentence (10 words), concise and front-loaded. It earns its place by stating the core purpose, but could be slightly more informative without sacrificing brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 1 required parameter, no annotations, and no output schema, the description is incomplete. It does not mention prerequisites, return format, or potential errors. For a tool that lists data, agents need to know what output to expect.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 0% description coverage for parameter 'serial'. Description adds minimal value by implying serial identifies the device, but does not explain format, source (e.g., from list_devices), or that it is required.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states verb 'list' and resource 'installed applications' with context 'on a specific Android device'. It effectively distinguishes from sibling tools like get_app_details (details of one app) and install_app/uninstall_app (modifications).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. No prerequisites mentioned (e.g., device must be connected, serial from list_devices). The description only states the action without context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pull_fileCopy Files from DeviceB
Pull or copy files from a given directory on an Android device using its serial number.
| Name | Required | Description | Default |
|---|---|---|---|
| serial | Yes | ||
| file_path_in_device | Yes | ||
| local_folder | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavioral traits. It only describes the action but doesn't mention important aspects like overwrite behavior, error handling, permission requirements, or whether it supports directories. This is insufficient for a file operation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is concise but lacks structure. It could benefit from being broken into clearer statements or bullets to improve readability without adding length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given three parameters and no output schema, the description should specify what the tool returns, error scenarios, and constraints (e.g., file vs directory). It only mentions the basic action, leaving the agent unclear about behavior and results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must add meaning to parameters. It mentions 'directory' and 'serial number' but does not explain the parameters (serial, file_path_in_device, local_folder) in detail. The relationship between 'directory' and file_path_in_device is ambiguous, and the optional local_folder is not described.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb (copy/pull), the resource (files from a directory on an Android device), and the required identifier (serial number). It distinguishes from sibling tools like push_file and list_files.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for copying files from a device but provides no explicit guidance on when to use this tool versus alternatives (e.g., taking a screenshot or dumping screen). No exclusions or alternatives are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
push_fileCopy File to DeviceB
Push or copy files from a given directory on local machine to an Android device using its serial number.
| Name | Required | Description | Default |
|---|---|---|---|
| serial | Yes | ||
| local_file | Yes | ||
| folder_path_in_device | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must fully disclose behavior. It states the action but omits critical details: whether it overwrites existing files, handles directories recursively, requires specific permissions, or what happens on failure (e.g., file not found, invalid path).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that covers the core purpose efficiently. It is front-loaded and easily parsed, but could be slightly more structured (e.g., breaking out prerequisites) without harming conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool that modifies device storage with no output schema and no annotations, the description lacks completeness. It fails to mention return values (e.g., success indicator), error handling, or behavior for directories vs. files, leaving gaps for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description should compensate. It adds context for 'serial' (using serial number) and 'local_file' (from local directory), but 'folder_path_in_device' remains vague. No format hints (absolute/relative), constraints, or mutual dependencies are provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('push or copy'), source ('local machine'), destination ('Android device using its serial number'), and specific intent. It effectively distinguishes from sibling tools like pull_file, which does the reverse.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for transferring files to a device but provides no explicit guidance on when to use it versus alternatives like install_app or pull_file. No prerequisites (e.g., device connected, adb available) or exclusions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reboot_deviceReboot DeviceC
Reboot a specific Android device using its serial number.
| Name | Required | Description | Default |
|---|---|---|---|
| serial | Yes | ||
| mode | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries full burden. Only states 'reboot', lacking details on permissions, destructive nature, or behavior of the 'mode' parameter.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise but under-specified; a single sentence fails to provide necessary context. Additional detail would improve utility without sacrificing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Lacks output schema, annotations, and parameter details. Missing side effects, return values, and prerequisites. Severely incomplete for a reboot operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%. The description explains 'serial' but offers no clarification for 'mode', leaving its purpose and possible values ambiguous.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Reboot' and the resource 'Android device', and specifies the key parameter 'serial number'. It effectively distinguishes from siblings like shutdown_device.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use reboot vs. alternatives like shutdown_device or screen_recording. No prerequisites or consequences mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
screen_recordingScreen RecordingC
Record the screen of an Android device using its serial number.
| Name | Required | Description | Default |
|---|---|---|---|
| serial | Yes | ||
| time_limit | No | 5 | |
| local_file_path | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits. It only says 'Record the screen' without explaining whether recording starts immediately, the meaning of time_limit, what happens after time limit, or if it returns a file. This is insufficient for an agent to understand side effects or requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, which is concise but insufficiently informative for a tool with three parameters. It front-loads the core action but lacks structural completeness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has three parameters and no output schema, the description is incomplete. It does not explain the time_limit unit, local file path behavior, return type, or how it differs from take_screenshot. An agent would likely misuse parameters or miss prerequisites.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must supplement parameter meanings. It only implies 'serial' is needed but fails to explain 'time_limit' (default '5' - seconds? minutes? ), 'local_file_path' (destination format), or that 'serial' is required. No added meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Record the screen') and the resource ('screen of an Android device'). It also implies the use of a serial number, which is a required parameter. However, it does not explicitly differentiate from sibling tools like take_screenshot, leaving room for ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions using a serial number, implying a prerequisite, but gives no guidance on when to use this tool versus alternatives (e.g., for videos vs. static images). No exclusions or when-not-to-use information is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
shutdown_deviceShutdown DeviceB
Shut down a specific Android device using its serial number.
| Name | Required | Description | Default |
|---|---|---|---|
| serial | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description must convey behavioral traits. It only states the action without noting power-off effects, permission requirements, or error conditions. This is insufficient for safe invocation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, direct sentence with no extraneous words. Every word provides value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple, one-parameter tool, the description is incomplete. It omits usage context, permissions, and return behavior (no output schema). Gaps exist in guidelines and transparency.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description mentions 'using its serial number' but provides no additional semantics (e.g., format, validation, or source) beyond the schema. With 0% schema description coverage, the lack of detail hurts usability.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('shut down'), the resource ('specific Android device'), and the required input ('serial number'). It distinguishes from sibling tools like 'reboot_device'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use shutdown vs reboot, prerequisites (e.g., device must be connected), or serial number format. The description is functional but lacks decision-making support.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
take_screenshotTake ScreenshotC
Capture a screenshot from an Android device using its serial number.
| Name | Required | Description | Default |
|---|---|---|---|
| serial | Yes | ||
| local_file_path | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It fails to disclose key behaviors such as where the screenshot is saved (locally via local_file_path vs. returned as output), file format, permissions required, or whether it is destructive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence with no fluff. It is appropriately front-loaded but slightly under-specified.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, no annotations, and two parameters (one optional), the description is incomplete. It lacks essential context about return values, file handling, and operational constraints.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description should compensate. However, it only mentions the serial parameter by name ('serial number') and gives no explanation of local_file_path, its default behavior, or how the output is handled.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool captures a screenshot from an Android device using serial number. This is a specific verb and resource, and it effectively distinguishes from siblings like 'screen_recording' (video) and 'dump_screen' (UI dump).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives (e.g., screen_recording, dump_screen). There are no prerequisites, conditions, or exclusions mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
uninstall_appUninstall appC
Uninstall an APP from an Android device.
| Name | Required | Description | Default |
|---|---|---|---|
| serial | Yes | ||
| app_package_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, and the description does not disclose behavioral traits like irreversibility of uninstall, potential permission requirements, or what happens on failure. For a destructive tool, this is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, which is concise but underspecified. It wastes no words but fails to include necessary details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and no annotations, the description should provide more context about the uninstall process, required permissions, and device connection. It is incomplete for a practical use case.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description adds no meaning to the parameters. It does not explain that 'serial' identifies the device or that 'app_package_name' is the app identifier.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (uninstall), the resource (APP), and the context (Android device). It distinguishes from sibling tools like install_app and launch_app.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives, no prerequisites (e.g., device must be connected, app must be installed), and no exclusions provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
18 tool updates
v0.1.0- First observed
clear_device_logs - First observed
dump_screen - First observed
execute_shell_command - First observed
get_app_details - First observed
get_device_logs - First observed
get_network_details - First observed
install_app - First observed
launch_app - First observed
list_devices - First observed
list_files - First observed
list_installed_apps - First observed
pull_file - First observed
push_file - First observed
reboot_device - First observed
screen_recording - First observed
shutdown_device - First observed
take_screenshot - First observed
uninstall_app
TDQS
Each tool has a distinct purpose, covering different aspects of Android device management: logs, screen, shell, apps, devices, files, network, and power operations. Overlap is minimal and clarified by descriptions.
All tool names follow a consistent verb_noun pattern with snake_case, e.g., clear_device_logs, install_app, reboot_device. This makes the tool set predictable and easy to navigate.
With 18 tools, the set is well-scoped for comprehensive Android device management, covering device list, app lifecycle, file operations, logging, screen capture, and power control without being overwhelming.
The tool set covers most common tasks: device discovery, app install/uninstall, file transfer, logs, shell commands, screen operations, and reboot/shutdown. Minor gaps like device properties or UI interaction exist but are non-critical.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Control real Android and iOS devices with LLM agents — tap, swipe, type, automate flows.
Control Android TV from any AI. 38 MCP tools: playback, recap, recommend, smart-home, schedules.
Drive real Android & iOS devices and web browsers from natural language for mobile + web QA. 290+ tools across device control, app management, automation sessions, browser automation, and flow recording / replay. Bearer-auth — get a token at robotactions.com → Profile → API Tokens.
Melaya is a remote MCP server. It gives an assistant hands on your own Android phone and browser: it reads the screen through the accessibility tree, then taps, types and navigates inside the apps and sites you allow-list, with no per-app API. It also builds, schedules and runs agent pipelines across 6k+ connected tools. OAuth 2.1, nothing to install.
Related MCP Servers
- AlicenseBqualityBmaintenanceEnables control of Android devices via ADB for automation and testing. Supports app management, screen capture, UI analysis, and input simulation through natural language commands.913032MIT
- FlicenseNot gradedqualityDmaintenanceEnables control of Android devices through ADB, allowing users to list connected devices, capture screenshots using multiple methods (adb, droidcast, minicap, mumu), and retrieve device information.-
- AlicenseNot gradedqualityDmaintenanceEnables LLMs to control and manage Android devices via ADB, including app installation, UI interaction, and device monitoring.12GPL 3.0
- AlicenseBqualityCmaintenanceEnables Android device control via ADB and scrcpy, including device management, app management, file operations, shell commands, input simulation, screen mirroring, and UI element inspection.25Apache 2.0
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/prashant1507/android-device-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server