Skip to main content
Glama

Android-MCP is a lightweight, open-source tool that bridge between AI agents and Android devices. Running as an MCP server, it lets LLM agents perform real-world tasks such as app navigation, UI interaction and automated QA testing without relying on traditional computer-vision pipelines or preprogramed scripts.

https://github.com/user-attachments/assets/cf9a5e4e-b69f-46d4-8487-0f61a7a86d67

✨ Features

  • Native Android Integration
    Interact with UI elements via ADB and the Android Accessibility API: launch apps, tap, swipe, input text, and read view hierarchies.

  • Bring Your Own LLM/VLM
    Works with any language model, no fine-tuned CV model or OCR pipeline required.

  • Rich Toolset for Mobile Automation
    Pre-built tools for gestures, keystrokes, capture, device state, shell commands execution.

  • Real-Time Interaction
    Typical latency between actions (e.g., two taps) ranges 2-4s depending on device specs and load.

Supported Operating Systems

  • Android 10+

Related MCP server: Android MCP Server

Installation

📦 Prerequisites

  • Python 3.13

  • ADB (Android Debug Bridge)

  • Android 10+ (Emulator/ Android Device)

📲 Testing ADB Connection

Before running the server, ensure your Android device is connected and recognized by ADB:

  1. Connect your Android device via USB or ensure your emulator is running.

  2. Open a terminal and run:

    adb devices
  3. You should see your device listed:

    List of devices attached
    R38M30XXXXX   device

    The serial number will differ per device. Emulators show serials like emulator-5554. If the list is empty or shows "unauthorized", check your USB debugging settings on the device.

For WiFi ADB, connect the device first:

adb connect 192.168.1.3:5555
adb devices

🏁 Getting Started

You can run the Android MCP server using UVX (recommended) or UV (for local development).

No need to install dependencies manually. Just configure Claude Desktop:

Windows note: Use Python 3.13 for uvx on Windows. Python 3.14 currently fails to resolve a transitive pywin32 dependency used by the MCP stack.

  1. Locate your config file

    • Windows: %APPDATA%\Claude\claude_desktop_config.json

    • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  2. Add the configuration

    {
      "mcpServers": {
        "android-mcp": {
          "command": "uvx",
          "args": [
            "--python",
            "3.13",
            "android-mcp"
          ]
        }
      }
    }

    Note: The server starts first and connects lazily when a tool runs. If no device is specified, it auto-detects connected devices and prefers physical devices over emulators. Use --device <serial> or the ANDROID_MCP_DEVICE environment variable to target a specific device.

    Configure a specific WiFi device with environment variables:

    {
      "mcpServers": {
        "android-mcp": {
          "command": "uvx",
          "args": [
            "--python",
            "3.13",
            "android-mcp"
          ],
          "env": {
            "ANDROID_MCP_CONNECTION": "wifi",
            "ANDROID_MCP_HOST": "192.168.1.3"
          }
        }
      }
    }

    Or pass explicit flags:

    {
      "mcpServers": {
        "android-mcp": {
          "command": "uvx",
          "args": [
            "--python",
            "3.13",
            "android-mcp",
            "--wifi",
            "192.168.1.3"
          ]
        }
      }
    }

Option 2: UV Mode (Local Development)

  1. Clone and Install

    git clone https://github.com/CursorTouch/Android-MCP.git
    cd Android-MCP
    uv sync
  2. Configure Claude Desktop

    {
      "mcpServers": {
        "android-mcp": {
          "command": "uv",
          "args": [
            "--directory",
            "</PATH/TO/Android-MCP>",
            "run",
            "android-mcp"
          ]
        }
      }
    }

    Note: Replace </PATH/TO/Android-MCP> with the full path to your cloned directory. You can also add "--device", "<YOUR_DEVICE_serial>", "--wifi", "192.168.1.3", or "--usb" to control device selection. uv sync follows the repo's .python-version, so local development uses Python 3.13 by default.

Option 3: OpenCode

You can also use Android-MCP with OpenCode. After cloning and installing the repo (see Option 2), add the server as a local MCP in your OpenCode config (opencode.json):

{
  "mcp": {
    "android-mcp": {
      "type": "local",
      "command": ["uv", "--directory", "</PATH/TO/Android-MCP>", "run", "android-mcp"]
    }
  }
}

Note: Replace </PATH/TO/Android-MCP> with the full path to your cloned directory. As with UV mode, you can append "--device", "--wifi", "--usb", etc. to the command array to control device selection.

🔌 Device Selection

Android-MCP resolves devices lazily when a tool is called, so the MCP server can start even if no device is available yet.

  • --device RFCN2013V8D: connect to a specific USB serial

  • --device 192.168.1.3:5555: connect to a specific WiFi ADB target

  • --wifi 192.168.1.3: use WiFi and auto-append port 5555

  • --usb: auto-detect the first USB-connected device

  • --usb RFCN2013V8D: use a specific USB device

  • --connection wifi: prefer the first available WiFi ADB device

  • --connection usb: prefer the first available USB device

Supported environment variables:

  • ANDROID_MCP_DEVICE: explicit serial or host:port

  • ANDROID_MCP_CONNECTION: auto, usb, or wifi

  • ANDROID_MCP_HOST: WiFi host, with :5555 added automatically when omitted

If nothing is configured, Android-MCP will use the first available ADB device reported by adb devices. If none are available, tool calls return a configuration error instead of crashing the MCP handshake.

  1. Restart the Claude Desktop

Restart your Claude Desktop. You should see "android-mcp" listed as an available integration. That's it, now you're ready to start controlling your Android device with natural language.

For troubleshooting tips (log locations, common ADB issues), see the MCP docs.


🛠️ Available Tools

Claude can access the following tools to interact with Windows:

  • State-Tool: To understand the state of the device.

  • Click-Tool: Click on the screen at the given coordinates.

  • Long-Click-Tool: Perform long click on the screen at the given coordinates.

  • Type-Tool: Type text on the specified coordinates (optionally clears existing text).

  • Swipe-Tool: Perform swipe from one location to other.

  • Drag-Tool: Drag from one point to another.

  • Press-Tool: To press the keys on the mobile device (Back, Volume Up, ...etc).

  • Wait-Tool: Pause for a defined duration.

  • State-Tool: Combined snapshot of active apps and interactive UI elements.

  • Notification-Tool: To access the notifications seen on the device.

  • Shell-Tool: To execute shell commands on the android device.

⚙️ Environment Variables

  • SCREENSHOT_QUANTIZED: Set to true to quantize the screenshot to reduce input tokens.

⚠️ Caution

Android-MCP can execute arbitrary UI actions on your mobile device. Use it in controlled environments (emulators, test devices) when running untrusted prompts or agents.

🪪 License

This project is licensed under the MIT License. See LICENSE for details.

🤝 Contributing

Contributions are welcome! Please read CONTRIBUTING for dev setup and PR guidelines.

Made with ❤️ by CursorTouch,

developers: Jeomon George, Muhammad Yaseen

Citation

@misc{
  author       = {cursortouch},
  title        = {Android-MCP},
  year         = {2025},
  publisher    = {GitHub},
  howpublished = {\url{https://github.com/CursorTouch/Android-MCP}},
  note         = {Lightweight open-source bridge between LLM agents and Android},
}

Available Tools

14 tools
ClickClickC
Destructive

Click on a specific cordinate

ParametersJSON Schema
NameRequiredDescriptionDefault
xYes
yYes

TDQS

C2.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations provide destructiveHint: true, but the description adds no additional behavioral context (e.g., timing, return values, or side effects). The description is redundant with the annotation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Extremely short, but too short to be informative. Front-loaded but at the expense of clarity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema and 2 required params, the description is incomplete. It does not explain what the tool returns or any side effects. The low complexity of a click action is not fully covered.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema has 0% description coverage for parameters x and y. The description does not explain what x and y represent (e.g., coordinates on screen, units, range). The tool name and schema type hint at integers, but meaning is missing.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states the verb 'click' and resource 'coordinate', but the typo 'cordinate' and lack of context (e.g., what is being clicked) make it vague. It distinguishes from siblings like ClickBySelector only by implication of using coordinates.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 like ClickBySelector. No context about prerequisites or when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ClickBySelectorClick By SelectorA
Destructive

Click on an element by selector (text, resourceId, className, description). More reliable than coordinate clicks — handles dynamic layouts and element reflow. At least one selector must be provided.

ParametersJSON Schema
NameRequiredDescriptionDefault
textNo
indexNo
timeoutNo
classNameNo
resourceIdNo
descriptionNo

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds behavioral context beyond annotations: it mentions handling dynamic layouts and reflow, and the constraint that at least one selector must be provided. While annotations already set destructiveHint=true, the description does not contradict it and provides additional positive traits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description consists of two concise sentences conveying purpose, advantage, and constraint. Every word serves a function, with no redundancy or unnecessary detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 6 parameters, no output schema, and typical selector-based clicking complexity, the description provides sufficient context: it explains the method, reliability advantage, and the need for at least one selector. It does not cover error handling or return values, but these are reasonable omissions given the tool's simplicity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema coverage, the description compensates by listing the selector types (text, resourceId, className, description) and stating the 'index' and 'timeout' implicitly via the schema. It clarifies that at least one selector must be provided, adding meaning to parameter usage. However, it does not detail format or constraints for each parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Click'), target ('element by selector'), and lists available selector types (text, resourceId, className, description). It distinguishes from coordinate clicks by highlighting reliability and dynamic layout handling, making the tool's purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use this tool ('More reliable than coordinate clicks') and references an alternative ('coordinate clicks'), likely the sibling 'Click' tool. However, it does not explicitly state when not to use or provide a direct comparison, leaving room for minor ambiguity.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ConnectDeviceConnect DeviceB

Connect to an ADB device by serial number

ParametersJSON Schema
NameRequiredDescriptionDefault
serialYes

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The tool description does not disclose behavioral traits like side effects on existing connections, authentication requirements, or confirmation of connection. Annotations provide no additional hints (no readOnlyHint or destructiveHint).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence, front-loaded with key information. No superfluous words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's function (connection) and lack of output schema or annotations, the description is incomplete. It omits prerequisites, return values, and error conditions, leaving the agent without sufficient context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%. The description minimally explains 'serial' as an identifier, but does not detail its format, source, or validation rules, which is essential for correct invocation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (connect), the resource (ADB device), and the method (by serial number). It is easily distinguishable from sibling tools like ListDevices.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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, such as prerequisite calls to ListDevices to obtain a serial number, or handling of already connected devices.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

DeviceDeviceC

Manage ADB devices (list, connect, or disconnect)

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYes
serialNo

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description does not disclose any behavioral traits beyond the basic actions. It fails to indicate side effects (e.g., disconnecting a device may interrupt operations), required permissions, or error handling. With no annotations providing safety hints, the description leaves the agent uninformed about consequences.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise, consisting of a single sentence that front-loads the core purpose. However, this brevity sacrifices necessary details about parameters and usage, making it less effective than a slightly longer but more informative description.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (2 parameters, no output schema) and lack of annotations, the description should cover parameter constraints and behavioral context. It does not explain when serial is needed or provide any usage guidance, resulting in significant gaps for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description must explain parameter meanings but does not. While the action parameter's enum values are self-explanatory, the serial parameter's role (required for connect/disconnect, optional for list) is not clarified, leaving ambiguity for the agent.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states that the tool manages ADB devices with three specific actions (list, connect, disconnect), providing a specific verb-resource pairing. However, it does not differentiate itself from sibling tools like ConnectDevice or ListDevices, which could cause confusion about which tool to use.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description offers no guidance on when to use this tool versus alternatives, nor does it provide any context about prerequisites or appropriate scenarios. With siblings like ConnectDevice and ListDevices, the lack of usage guidelines is a significant gap.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

DragDragC
Destructive

Drag from location and drop on another location

ParametersJSON Schema
NameRequiredDescriptionDefault
x1Yes
x2Yes
y1Yes
y2Yes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description doesn't add behavioral info beyond the annotation destructiveHint: true. It does not explain mutating effects, coordinate system, or any 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence with no extraneous words; appropriately concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and 4 required params, the description fails to explain coordinate units, screen origin, or any special behavior, making it insufficient for an agent to use correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema has 0% description coverage; the description implies x1,y1 are start and x2,y2 are end, but no clarification on units, origin, or order, leaving ambiguity.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states 'Drag from location and drop on another location', clearly indicating a drag-and-drop operation between two points, which distinguishes it from sibling tools like Click or Swipe.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 Swipe or LongClick; missing context about prerequisites or use cases.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ListDevicesList DevicesA
Read-only

List available ADB devices

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint: true. Description adds no behavioral context beyond the annotation, but does not contradict it.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Extremely concise, using only essential words. No unnecessary information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Adequate for a simple parameterless list operation. Could mention output format, but not essential given simplicity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema has no parameters (100% coverage), so baseline is 3. Description does not add parameter information but none is needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb 'List' and resource 'available ADB devices', clearly distinguishing it from sibling tools like ConnectDevice or Device.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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., ConnectDevice). No context about prerequisites or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

LongClickLong ClickC
Destructive

Long click on a specific cordinate

ParametersJSON Schema
NameRequiredDescriptionDefault
xYes
yYes

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotation includes destructiveHint: true, but the description adds no behavioral details beyond restating the name. It does not explain the duration of the click, potential side effects, or what 'destructive' means in this context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely short, which is concise but sacrifices clarity and usefulness. It has a typo and omits critical information, making it minimally acceptable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the domain (UI automation), the complexity of 'long click' (duration, expected result), and the lack of output schema or schema descriptions, the description is incomplete. It does not explain what happens post-click or error conditions.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 0% description coverage for the two integer parameters (x, y). The description merely mentions 'specific cordinate' without specifying units, valid ranges, or how coordinates are interpreted (e.g., screen relative). This fails to compensate for the lack of schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('long click') and target ('specific cordinate'), distinguishing it from siblings like 'Click' (short click) and 'ClickBySelector' (click by selector). The typo 'cordinate' slightly detracts but does not obscure the purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 'Click' or 'ClickBySelector'. There is no mention of prerequisites, context, or when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

NotificationNotificationB
DestructiveIdempotent

Access the notifications seen on the device

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description states 'Access' implying a read-only operation, while annotations set destructiveHint to true, indicating the tool may modify or delete state. This contradiction makes the behavior unclear and potentially misleading.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that conveys the tool's purpose without unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema and a contradictory annotation, the description fails to clarify what 'access' means in terms of return values or side effects. It is incomplete for a tool with no parameters and no output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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 does not add parameter-specific semantics, but with zero parameters no additional information is needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses the verb 'access' and specifies the resource 'notifications' with scope 'on the device', clearly distinguishing it from sibling tools like Click or Type which involve direct interaction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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, nor does it mention any prerequisites or contexts where it is appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

PressPressC
Destructive

Press on specific button on the device

ParametersJSON Schema
NameRequiredDescriptionDefault
buttonYes

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description does not mention any behavioral implications, such as the destructive nature indicated by the destructiveHint annotation. It merely states 'press' without elaborating on side effects or outcomes.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single short sentence with no unnecessary words, but it lacks detail to be fully useful. It is concise but under-specified.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the destructive hint and lack of output schema, the description should explain the effect of pressing (e.g., triggering an action, potential risk). It does not, leaving the agent without essential behavioral context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description only uses the parameter name 'button' without explaining valid values, format, or constraints. With 0% schema description coverage and no enums, the agent gets no additional meaning beyond the raw schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (Press) and the target (specific button on the device). It distinguishes from sibling tools like Click and LongClick by implying a standard press, but does not explicitly contrast them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 Click, LongClick, or other input actions. The description lacks context on prerequisites or scenarios.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

SnapshotSnapshotA
Read-only

Get the state of the device. Optionally includes visual screenshot when use_vision=True. The use_annotation parameter (default True) can be set to False to get a clean screenshot without bounding boxes.

ParametersJSON Schema
NameRequiredDescriptionDefault
use_visionNo
use_annotationNo

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, indicating a safe read operation. The description adds value by clarifying that the tool can optionally capture visual screenshots with or without bounding boxes. No contradictory behavior is mentioned, and additional traits (e.g., performance impact of vision) are not needed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences with zero filler. Front-loaded with main purpose ('Get the state of the device') followed by optional features. Every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter tool with no output schema, the description covers purpose and parameter semantics. It could briefly note what 'state' includes (e.g., device info, UI layout) but is otherwise complete enough for agent invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must explain parameter semantics. It does so effectively: use_vision triggers visual screenshots, use_annotation toggles bounding boxes. This provides clear meaning beyond the schema's type/default definitions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Get the state of the device.' It specifies optional visual screenshots via use_vision and annotation control via use_annotation. This distinguishes it from sibling tools, which are actions (Click, Type, etc.) rather than state retrieval.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains parameter usage (use_vision, use_annotation) but does not provide explicit guidance on when to use this tool over alternatives or when not to use it. It implies usage for visual context but lacks explicit context differentiation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

SwipeSwipeD
Destructive

Swipe on a specific cordinate

ParametersJSON Schema
NameRequiredDescriptionDefault
x1Yes
x2Yes
y1Yes
y2Yes

TDQS

D1.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations provide 'destructiveHint: true' but the description adds no further behavioral context, such as the effect of the swipe, duration, or coordinate system. Without annotations, this would be critical, but here it adds minimal value.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very short (5 words) but fails to convey essential information, making it under-specific rather than concise. It wastes the opportunity to add value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 4 required parameters, no output schema, and a destructive hint, the description is severely incomplete. It does not explain coordinate system, units, gesture behavior, or expected outcomes, leaving the agent with insufficient context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema has 0% description coverage for its 4 parameters (x1, y1, x2, y2), and the description does not explain what these parameters represent (e.g., start and end points). The agent cannot infer parameter meaning from the description alone.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states 'Swipe on a specific cordinate' which indicates the action but is vague and misspelled. It does not clarify that the swipe is between two coordinates or distinguish it from the sibling 'Drag' tool. The purpose is only partially clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

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 'Drag' or 'Click'. The description lacks any context about appropriate scenarios or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TypeTypeC
Destructive

Type on a specific cordinate

ParametersJSON Schema
NameRequiredDescriptionDefault
xYes
yYes
textYes
clearNo

TDQS

C2.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description only restates the basic action. Annotations indicate destructiveHint=true, but the description does not elaborate on what may be destroyed (e.g., overwritten text) or other behavioral traits like clearing existing content. The 'clear' parameter is not explained.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very short (one sentence), which is concise but omits necessary information. It could be restructured to include more detail without becoming verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With four parameters, no output schema, and a destructive hint, the description is severely inadequate. It fails to explain how coordinates work, the effect of the 'clear' parameter, or return behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

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 four parameters (x, y, text, clear). It only mentions 'coordinate' without specifying which properties map to coordinates.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states 'Type on a specific cordinate', specifying the action (type) and target (coordinate). This distinguishes it from sibling tools like Click (mouse click) and Press (key press without location). However, the typo 'cordinate' slightly detracts from clarity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 Press or Click. The description does not mention prerequisites, context, or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

WaitWaitB
DestructiveIdempotent

Wait for a specific amount of time

ParametersJSON Schema
NameRequiredDescriptionDefault
durationYes

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations provide idempotentHint and destructiveHint, but description adds no behavioral context beyond 'wait', leaving side effects unclear.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single concise sentence, no unnecessary words, effectively front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite simplicity, description lacks essential details like time units, behavior during wait, and any side effects, leaving gaps for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% for the required 'duration' parameter; description does not specify units (seconds, milliseconds) or range, adding minimal meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the verb 'Wait' and resource 'specific amount of time', distinguishing it from sibling 'WaitForElement' which waits for an element condition.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 like WaitForElement, or context for appropriate usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

WaitForElementWait For ElementA
Read-only

Wait for an element to appear on screen. Use this instead of Wait when content is loading dynamically. Returns element info when found or error on timeout.

ParametersJSON Schema
NameRequiredDescriptionDefault
textNo
timeoutNo
classNameNo
resourceIdNo
descriptionNo

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses that the tool returns element info on success or error on timeout, adding behavioral context beyond the readOnlyHint annotation. It doesn't contradict annotations and explains dynamic loading behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences long, front-loads the core purpose, and contains no irrelevant information. Every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 5 parameters, no output schema, and zero parameter descriptions, the description is insufficiently complete. It explains when to use and what happens on success/failure but does not cover how to specify the element or what 'element info' includes.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 5 parameters with zero schema descriptions, and the tool description provides no insight into their meaning or usage. The description doesn't clarify how parameters like text, className, or resourceId identify the element, leaving the agent guessing.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool waits for an element to appear on screen, using a specific verb and resource. It distinguishes itself from the sibling 'Wait' by specifying dynamic loading context.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly recommends using this tool over 'Wait' when content loads dynamically, providing clear usage context. However, it does not mention when not to use it or list alternatives beyond Wait.

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.

  1. 3 tool updatesv0.2.0
    • AddedClickBySelector
    • AddedDevice
    • AddedWaitForElement
  2. 11 tool updatesv0.1.0
    • First observedClick
    • First observedConnectDevice
    • First observedDrag
    • First observedListDevices
    • First observedLongClick
    • First observedNotification
    • First observedPress
    • First observedSnapshot
    • First observedSwipe
    • First observedType
    • First observedWait

TDQS

C2.7/5.0
Disambiguation2/5

Several tools have overlapping purposes. Coordinate-based actions (Click, LongClick, Type, Swipe, Drag) are all performed at coordinates, making it unclear when to use which. Device management tools (ConnectDevice, Device, ListDevices) also overlap. ClickBySelector and WaitForElement are distinct but the overall set causes confusion.

Naming Consistency3/5

All tool names use PascalCase, but the naming style is inconsistent. Some are single verbs (Click, Drag, Wait) while others are compound verbs (ClickBySelector, WaitForElement) or nouns (Device, Notification, Snapshot). There is no consistent verb_noun or action_object pattern.

Tool Count5/5

14 tools is well-scoped for an Android device interaction server. It covers device management, UI interactions, and screen capture, without overwhelming the agent. Each tool serves a distinct purpose and the count is appropriate for the domain.

Completeness3/5

The tool surface covers core Android automation tasks like clicking, typing, swiping, and device management. However, it lacks explicit scroll support, element property inspection, and text input by selector (only coordinate-based typing). These gaps may require workarounds.

Maintenance

ActivityStale
ResponsivenessSyncing

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

Related MCP Servers

  • A
    license
    B
    quality
    B
    maintenance
    Enables AI agents to control Android devices and emulators through direct UI interaction, allowing app navigation, automated testing, and real-world task execution via ADB without computer vision or scripts.
    18
    2
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Enables AI agents to fully control Android devices through over 30 tools for app management, UI automation, and vision-based analysis via ADB. It supports multi-device management, action recording, and smart execution strategies ranging from UI hierarchy parsing to coordinate-based interaction.
    37
    191
    1
    MIT

Latest Blog Posts

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/CursorTouch/Android-MCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server