ADB Screenshot MCP Server
Provides tools for connecting to Android devices over WiFi using ADB, taking screenshots, listing connected devices, retrieving device information, and managing device connections.
Used for package management and running the server, with commands for installation, building, and starting the MCP server.
Click on "Deploy 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., "@ADB Screenshot MCP Servertake a screenshot of my connected Android device"
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.
ADB Screenshot MCP Server
A Model Context Protocol (MCP) server that provides ADB tools for connecting to Android devices over WiFi and taking screenshots.
Features
WiFi Connection: Connect to Android devices over WiFi using ADB
Screenshot Capture: Take screenshots of connected devices
Device Management: List devices, get device info, and disconnect
Remote Access: Perfect for accessing devices on the same network
Related MCP server: Android ADB MCP Server
Prerequisites
ADB (Android Debug Bridge) installed and in your PATH
Android device with USB debugging enabled
For WiFi connection: Device and computer on the same network
Installation
npm install
npm run buildUsage
Enable WiFi ADB on your Android device:
Connect device via USB first
Run:
adb tcpip 5555Disconnect USB and find device IP address
Use the
adb_connect_wifitool with the IP address
Available Tools
adb_connect_wifi: Connect to device over WiFi
ip_address: Device IP address (required)port: Port number (default: 5555)
adb_screenshot: Take a screenshot
output_path: Save location (default: screenshot.png)device_id: Specific device (optional)
adb_list_devices: List all connected devices
adb_disconnect: Disconnect from WiFi device
ip_address: Device IP address (required)port: Port number (default: 5555)
adb_device_info: Get device information
device_id: Specific device (optional)
Running the Server
npm startExample Workflow
Enable WiFi ADB:
adb tcpip 5555Connect: Use
adb_connect_wifiwith device IPTake screenshot: Use
adb_screenshotDisconnect: Use
adb_disconnectwhen done
Available Tools
5 toolsadb_connect_wifiB
Connect to an Android device over WiFi using ADB
| Name | Required | Description | Default |
|---|---|---|---|
| ip_address | Yes | IP address of the Android device | |
| port | No | Port number (default: 5555) | 5555 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the action ('Connect') but does not describe what happens on success/failure, whether it persists connections, requires authentication, or has side effects like disconnecting other sessions. For a connectivity tool with zero annotation coverage, this leaves significant gaps in understanding its behavior.
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, efficient sentence with zero wasted words. It is front-loaded with the core purpose and uses precise terminology, making it easy to parse quickly without unnecessary elaboration.
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 complexity of a connectivity tool with no annotations and no output schema, the description is incomplete. It lacks details on behavioral outcomes, error handling, or return values, which are crucial for an agent to use it effectively. The high schema coverage does not compensate for these missing contextual elements.
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 100%, with clear documentation for both parameters (ip_address and port with default). The description adds no additional meaning beyond the schema, such as format examples or constraints. Since the schema does the heavy lifting, the baseline score of 3 is appropriate.
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 specific action ('Connect to an Android device over WiFi') and the technology used ('using ADB'), which distinguishes it from sibling tools like adb_disconnect (disconnection) or adb_screenshot (capturing screenshots). It precisely identifies both the verb and resource without 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 provides no guidance on when to use this tool versus alternatives. It does not mention prerequisites (e.g., needing ADB setup or device WiFi debugging enabled), exclusions, or comparisons to sibling tools like adb_connect_wired, if such existed. Usage context is implied but not explicitly stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_device_infoC
Get information about a connected device
| Name | Required | Description | Default |
|---|---|---|---|
| device_id | No | Device ID/serial (optional, uses first device if not specified) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It states it gets information but doesn't disclose behavioral traits such as what type of information is returned (e.g., device status, properties), whether it requires specific permissions, or if there are rate limits. This is a significant gap for a tool with no annotation coverage.
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, efficient sentence with zero waste. It's appropriately sized and front-loaded, clearly stating the tool's purpose without unnecessary elaboration.
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 lack of annotations and output schema, the description is incomplete. It doesn't explain what information is returned or any behavioral context, which is inadequate for a tool that interacts with devices. More detail is needed to compensate for the missing structured data.
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 schema description coverage is 100%, with the parameter 'device_id' fully documented in the schema. The description adds no additional meaning beyond the schema, such as examples or context for the optional parameter. Baseline 3 is appropriate when the schema does the heavy lifting.
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 ('Get') and resource ('information about a connected device'), making the purpose immediately understandable. It doesn't specifically differentiate from siblings like 'adb_list_devices' (which might list multiple devices versus getting detailed info about one), but it's not vague or tautological.
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. It doesn't mention siblings like 'adb_list_devices' for listing devices or 'adb_screenshot' for other device operations, nor does it specify prerequisites (e.g., device must be connected).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_disconnectC
Disconnect from a WiFi ADB device
| Name | Required | Description | Default |
|---|---|---|---|
| ip_address | Yes | IP address of the device to disconnect from | |
| port | No | Port number (default: 5555) | 5555 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It states the action but lacks behavioral details: it doesn't specify if this requires prior connection, what happens on success/failure (e.g., error if not connected), or side effects (e.g., device becomes unavailable). For a mutation tool with zero annotation coverage, this is a significant gap in 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?
The description is a single, clear sentence with zero waste—it directly states the tool's purpose without unnecessary words. It's front-loaded and appropriately sized for a simple tool, earning full marks for efficiency.
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 complexity (a mutation operation), lack of annotations, and no output schema, the description is incomplete. It doesn't cover behavioral aspects like success conditions, error handling, or dependencies (e.g., needing an active connection). For a disconnect tool, this leaves critical context gaps for an AI 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 description coverage is 100%, so the schema fully documents both parameters (ip_address and port with default). The description adds no parameter-specific information beyond what the schema provides, such as format examples or constraints. Baseline 3 is appropriate when the schema handles all parameter semantics.
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 ('Disconnect from') and target resource ('a WiFi ADB device'), making the purpose immediately understandable. It doesn't explicitly differentiate from siblings like 'adb_connect_wifi' or 'adb_list_devices', but the verb 'Disconnect' inherently contrasts with 'Connect' and 'List', so it's clear but not explicitly comparative.
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. It doesn't mention prerequisites (e.g., must be connected first), exclusions, or relationships with siblings like 'adb_connect_wifi' for reconnection or 'adb_list_devices' to check status. Usage is implied by the action but not explicitly stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_list_devicesB
List all connected ADB devices
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states what the tool does but doesn't describe behavioral traits such as output format (e.g., list of device IDs), error handling (e.g., if no devices are connected), or performance characteristics (e.g., real-time vs. cached data). This leaves significant gaps for a tool with zero annotation coverage.
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, efficient sentence with zero waste. It's front-loaded with the core purpose ('List all connected ADB devices'), making it easy to parse quickly. Every word earns its place, and there's no unnecessary elaboration.
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 simplicity (0 parameters, no output schema, no annotations), the description is minimally adequate. It states the purpose but lacks details on output format or behavioral context, which could be important for an agent to use it correctly. However, for a basic list operation, it meets the minimum viable threshold without being fully comprehensive.
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 tool has 0 parameters, and the schema description coverage is 100%, so there are no parameters to document. The description doesn't need to add parameter semantics, and it appropriately doesn't mention any. A baseline of 4 is applied since no parameters exist, and the description doesn't introduce confusion about inputs.
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 resource ('all connected ADB devices'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'adb_device_info' which might also provide device information, so it doesn't reach the highest score.
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 like 'adb_device_info' or 'adb_connect_wifi'. It lacks any context about prerequisites (e.g., needing devices to be connected) or exclusions, leaving the agent to infer usage from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adb_screenshotB
Take a screenshot of the connected Android device
| Name | Required | Description | Default |
|---|---|---|---|
| output_path | No | Local path to save the screenshot (default: screenshot.png) | screenshot.png |
| device_id | No | Device ID/serial (optional, uses first device if not specified) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It states the action but omits critical details: whether this requires specific permissions, if it's read-only or mutative, potential side effects (e.g., device interaction), error conditions, or output format. This leaves significant gaps in understanding the tool's behavior.
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, efficient sentence with zero wasted words. It is front-loaded with the core action and resource, making it immediately understandable without unnecessary elaboration.
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 annotations and no output schema, the description is incomplete for a tool that interacts with a device. It lacks details on behavioral traits, error handling, output format, and prerequisites, which are essential for safe and effective use. The simplicity of the tool doesn't compensate for these omissions.
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 100%, so the schema fully documents both parameters. The description adds no additional parameter semantics beyond what the schema provides, such as format examples or usage context. Baseline 3 is appropriate when the schema handles all parameter documentation.
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 specific action ('Take a screenshot') and target resource ('connected Android device'), distinguishing it from sibling tools like adb_device_info or adb_list_devices which serve different purposes. It uses precise language that leaves no ambiguity about the tool's function.
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, nor does it mention prerequisites like device connectivity. While it implies usage when a screenshot is needed, it lacks explicit context about timing, dependencies, or comparisons with other tools.
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.
5 tool updates
- First observed
adb_connect_wifi - First observed
adb_device_info - First observed
adb_disconnect - First observed
adb_list_devices - First observed
adb_screenshot
TDQS
Scored across 5 tools
Each tool has a clearly distinct purpose with no ambiguity: connecting, disconnecting, listing devices, getting device info, and taking screenshots. The actions and targets are well-defined and non-overlapping, making it easy for an agent to select the correct tool.
All tools follow a consistent 'adb_verb_noun' pattern (e.g., adb_connect_wifi, adb_device_info). The naming is uniform, using snake_case throughout, with clear verbs that describe the action and nouns specifying the target or resource.
With 5 tools, the server is well-scoped for its purpose of managing ADB connections and taking screenshots. Each tool earns its place, covering essential operations without being overly sparse or bloated, making it efficient for the domain.
The toolset covers core workflows for ADB device management and screenshot functionality, but there are minor gaps such as missing tools for advanced device interactions (e.g., adb_shell for commands) or file transfer. However, agents can likely work around these for basic use cases.
Maintenance
Related MCP Connectors
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
An authenticated remote MCP server for user-owned devices and one-shot capability invocation.
MCP server for static security analysis of Android source code
A Model Context Protocol (MCP) server for Selise Blocks Cloud integration
Related MCP Servers
- AlicenseAqualityCmaintenanceA Model Context Protocol (MCP) server that enables AI assistants to control and interact with Android devices, allowing for device management, app debugging, system analysis, and UI automation through natural language commands.8432Apache 2.0
- AlicenseNot gradedqualityDmaintenanceA Model Context Protocol server that enables AI assistants to interact with Android devices through ADB, allowing for automated device management, app installation, file transfers, and screenshot capture.568 npm38ISC
- AlicenseNot gradedqualityDmaintenanceA Model Context Protocol server that enables AI agents to control and automate Android devices through natural language, supporting actions like app management, UI interactions, and device monitoring.59MIT
- AlicenseBqualityDmaintenanceA Model Context Protocol server that provides Android Debug Bridge functionality for automating Android devices, enabling remote device management, screen operations, app management, file operations, and shell command execution.204 npm1MIT