HarmonyOS MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_appA | Get all installed packages on the device Returns: A list of all installed packages on the device as a string |
| launch_appC | launch app accrodingt to the given package name. Args: package_name: the package name of the package. |
| stop_appD | – |
| current_appA | Get the current foreground application information. Returns: Tuple[str, str]: A tuple contain the package_name andpage_name of the foreground application. If no foreground application is found, returns (None, None). |
| media_play_pauseA | Play or pause media on the phone. Sends the media play/pause keycode to control any currently active media. Can be used to play music or videos that were recently playing. Returns: str: Success message if the command was sent, or an error message if the command failed. |
| media_nextC | play the next media |
| media_previousB | play the previous media |
| volume_upB | turn up the volume |
| volume_downB | turn down the volume |
| volume_muteC | mute the volume |
| get_uilayoutA | Retrieves information about clickable elements in the current UI. Returns a formatted string containing details about each clickable element, including its text, content description, bounds, and center coordinates. Returns: str: A formatted list of clickable elements with their properties |
| get_screenshotA | Takes a screenshot of the device and returns it. Returns: Image: the screenshot |
| clickB | click the given coordinate Args: center: a string like "(x, y)", sample: "(227, 168)" |
| long_clickB | long click the given coordinate Args: center: a string like "(x, y)", sample: "(227, 168)" |
| swipeD | – |
| input_textC | input text to the given coordinate Args: center: a string like "(x, y)", sample: "(227, 168)" text: the text to input |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| system_prompt | System prompt description |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 16 tools
Each tool has a clearly distinct purpose: UI interaction tools (click, long_click, swipe, input_text, get_screenshot, get_uilayout) are well-separated from app management (launch_app, stop_app, list_app, current_app) and media controls (media_*, volume_*). No two tools have overlapping functionality.
Tools follow a predictable pattern: UI tools use verb_noun (e.g., get_screenshot, launch_app) and media/volume tools use noun_verb (e.g., media_next, volume_down). While consistent within subdomains, the two patterns differ slightly, but overall naming is readable and logical.
16 tools is well-scoped for a server covering both UI automation and media control. Each tool serves a clear function without redundancy, and the number is appropriate for the domain.
The tool set covers core UI actions (click, input, screenshot, layout) and app lifecycle (launch, stop, list, current), plus media and volume controls. Minor gaps like missing swipe description and common UI actions (e.g., back, scroll) are present, but the set is largely complete for typical tasks.