Devicebase MCP Server
OfficialServer Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| DEVICEBASE_API_KEY | Yes | Your Devicebase API key | |
| DEVICEBASE_BASE_URL | No | Base URL for Devicebase API (optional) | https://api.devicebase.cn |
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_devicesA | List the devices accessible to the current API key. Start here: this is how you find the Args: keyword: Case-insensitive substring match across name, alias_name, brand, model, serialno, device_sn, type, os_type, os_version, location and operator. state: Filter by device state: busy, free, or offline. type: Filter by category ("mobile", "browser", "computer") or by system type ("android", "harmonyos", "ios", "macos", "windows", "linux", "chrome", "chromium", "edge", "other"). System types match the device's os_type, because a device row only carries the coarse type — a Chrome browser is type=browser with os_type=Chrome. limit: Maximum number of devices to return (default 10). Returns: JSON envelope whose data array holds the device rows. Each row carries serialno (the platform key), device_sn, type, os_type, state and name. |
| screenshotA | Capture a screenshot of a device, as a base64-encoded image. Works for any platform: the server dispatches the request by device type — computer gives a full-desktop capture, browser a CDP capture, otherwise the device image queue. Args: serialno: The device serialno, from list_devices. Returns:
JSON with |
| mobile_tapA | Tap once at the given screen coordinates. Args: serialno: The mobile device serialno, from list_devices. Mobile serials come from list_devices(type="mobile"). x: X coordinate in device pixels. y: Y coordinate in device pixels. Returns: JSON response from the API. |
| mobile_double_tapA | Double tap at the given screen coordinates. Args: serialno: The mobile device serialno, from list_devices. x: X coordinate in device pixels. y: Y coordinate in device pixels. Returns: JSON response from the API. |
| mobile_long_pressA | Press and hold at the given screen coordinates. Args: serialno: The mobile device serialno, from list_devices. x: X coordinate in device pixels. y: Y coordinate in device pixels. Returns: JSON response from the API. |
| mobile_swipeB | Swipe from one point to another. Args: serialno: The mobile device serialno, from list_devices. x1: Start X coordinate in device pixels. y1: Start Y coordinate in device pixels. x2: End X coordinate in device pixels. y2: End Y coordinate in device pixels. Returns: JSON response from the API. |
| mobile_backB | Press the device back button. Args: serialno: The mobile device serialno, from list_devices. Returns: JSON response from the API. |
| mobile_homeA | Press the device home button. Args: serialno: The mobile device serialno, from list_devices. Returns: JSON response from the API. |
| mobile_launch_appA | Launch an app on the device. Args: serialno: The mobile device serialno, from list_devices. app_name: Package name (Android/HarmonyOS) or bundle ID (iOS). Returns: JSON response from the API. |
| mobile_stop_appB | Stop an app on the device. Args: serialno: The mobile device serialno, from list_devices. app_name: Package name (Android/HarmonyOS) or bundle ID (iOS). Returns: JSON response from the API. |
| mobile_stop_current_appB | Stop the app currently in the foreground. Args: serialno: The mobile device serialno, from list_devices. Returns: JSON response from the API. |
| mobile_current_appA | Get the app currently in the foreground. Args: serialno: The mobile device serialno, from list_devices. Returns: JSON envelope whose data carries app_name and package_name. |
| mobile_bashA | Run a shell command on the device (adb/hdc platforms only). A non-zero command exit is reported in data.exitCode, not as a tool error — the API call itself succeeded. Args: serialno: The mobile device serialno, from list_devices. command: The shell command to run. Returns: JSON envelope whose data carries exitCode, stdout and stderr. |
| mobile_input_textA | Type text into the focused field. The device must already have a text field focused; tap it first. Args: serialno: The mobile device serialno, from list_devices. text: The text to type. Returns: JSON response from the API. |
| mobile_clear_textA | Clear the focused text field. Args: serialno: The mobile device serialno, from list_devices. Returns: JSON response from the API. |
| mobile_device_infoA | Get device information: status, hardware, OS version, screen size. Use this to learn the screen resolution before converting coordinates returned by a vision model. Args: serialno: The mobile device serialno, from list_devices. Returns: JSON envelope whose data carries the device detail. |
| mobile_dump_hierarchyA | Get the UI element tree, for finding coordinates instead of guessing. Args: serialno: The mobile device serialno, from list_devices. Returns: JSON envelope whose data.hierarchy holds the tree. |
| mobile_install_appA | Install a package on the device. The path is resolved on the agent host that owns the device, not locally. The install runs as a background task: poll it with mobile_install_status. Args: serialno: The mobile device serialno, from list_devices. app_path: Package path on the agent host, e.g. /tmp/app.apk. Returns: JSON envelope whose data carries the install id. |
| mobile_install_statusA | Query a background install task started by mobile_install_app. Args: serialno: The mobile device serialno, from list_devices. install_id: The install id returned by mobile_install_app. Returns: JSON envelope describing the install. |
| browser_navigateB | Navigate the current tab to a URL. Args: serialno: The browser device serialno, from list_devices. url: The destination URL. Returns: JSON response from the API. |
| browser_refreshA | Reload the current page. Args: serialno: The browser device serialno, from list_devices. Returns: JSON response from the API. |
| browser_go_backB | Navigate back in the browser history. Args: serialno: The browser device serialno, from list_devices. Returns: JSON response from the API. |
| browser_go_forwardA | Navigate forward in the browser history. Args: serialno: The browser device serialno, from list_devices. Returns: JSON response from the API. |
| browser_clickB | Click the element matching a CSS selector. Args: serialno: The browser device serialno, from list_devices. selector: A CSS selector. Returns: JSON response from the API. |
| browser_fillA | Clear an input and type a value into it. Args: serialno: The browser device serialno, from list_devices. selector: A CSS selector for the input. value: The value to type. Returns: JSON response from the API. |
| browser_selectB | Pick an option in a dropdown. Args: serialno: The browser device serialno, from list_devices. selector: A CSS selector for the select element. value: The option value to select. Returns: JSON response from the API. |
| browser_textA | Get an element's text content. Args: serialno: The browser device serialno, from list_devices. selector: A CSS selector. Returns: JSON envelope whose data carries the text. |
| browser_attributeA | Get one attribute of an element. Args: serialno: The browser device serialno, from list_devices. selector: A CSS selector. attribute: The attribute name, e.g. href. Returns: JSON envelope whose data carries the attribute value. |
| browser_existsB | Check whether an element is present. Args: serialno: The browser device serialno, from list_devices. selector: A CSS selector. Returns: JSON envelope whose data reports existence. |
| browser_executeA | Evaluate JavaScript in the page. Danger tier: the script runs with the page's own privileges, the same reach as shell access to the browser profile. Args: serialno: The browser device serialno, from list_devices. script: The JavaScript source to evaluate. Returns: JSON envelope whose data carries the script result. |
| browser_inputA | Insert text into the focused page element. Uses CDP Input.insertText, which is reliable for CJK unlike synthesised key events. Args: serialno: The browser device serialno, from list_devices. text: The text to insert. Returns: JSON response from the API. |
| browser_hotkeyA | Press keys together, e.g. ["Meta", "a"] to select all. Editing shortcuts (select-all, cut, copy, undo, redo) act on the page. Browser-chrome shortcuts such as Control+t are not reachable — CDP drives the page, not the browser UI. Args: serialno: The browser device serialno, from list_devices. keys: The keys to press together. Returns: JSON response from the API. |
| browser_stateA | Get the current URL, title, viewport and tab count. Args: serialno: The browser device serialno, from list_devices. Returns: JSON envelope whose data carries the browser state. |
| browser_tabsA | List the open tabs. Args: serialno: The browser device serialno, from list_devices. Returns: JSON envelope whose data carries the tabs, including their ids. |
| browser_tab_openA | Open a new tab at a URL. Args: serialno: The browser device serialno, from list_devices. url: The URL to open. Returns: JSON response from the API. |
| browser_tab_closeA | Close one tab. Args: serialno: The browser device serialno, from list_devices. tab_id: The tab id, from browser_tabs. Returns: JSON response from the API. |
| browser_tab_close_allA | Close every tab. Args: serialno: The browser device serialno, from list_devices. Returns: JSON response from the API. |
| browser_tab_switchC | Focus one tab. Args: serialno: The browser device serialno, from list_devices. tab_id: The tab id, from browser_tabs. Returns: JSON response from the API. |
| browser_launchC | Start the browser / CDP endpoint. Args: serialno: The browser device serialno, from list_devices. Returns: JSON response from the API. |
| browser_closeB | Stop the browser / CDP endpoint. Args: serialno: The browser device serialno, from list_devices. Returns: JSON response from the API. |
| computer_clickA | Click at absolute screen coordinates. Args: serialno: The computer device serialno, from list_devices. x: X coordinate in screen pixels. y: Y coordinate in screen pixels. button: "left", "right" or "middle". Omit it for the server default (left). Returns: JSON response from the API. |
| computer_double_clickA | Double click at absolute screen coordinates (left button). Args: serialno: The computer device serialno, from list_devices. x: X coordinate in screen pixels. y: Y coordinate in screen pixels. Returns: JSON response from the API. |
| computer_long_clickA | Press and hold the left button at the coordinates. Args: serialno: The computer device serialno, from list_devices. x: X coordinate in screen pixels. y: Y coordinate in screen pixels. duration: Hold duration in SECONDS. Omit or 0 for the driver default. Returns: JSON response from the API. |
| computer_moveA | Move the mouse without clicking. Args: serialno: The computer device serialno, from list_devices. x: X coordinate in screen pixels. y: Y coordinate in screen pixels. Returns: JSON response from the API. |
| computer_dragA | Press the left button at one point, move to another, and release. Args: serialno: The computer device serialno, from list_devices. x1: Start X coordinate in screen pixels. y1: Start Y coordinate in screen pixels. x2: End X coordinate in screen pixels. y2: End Y coordinate in screen pixels. Returns: JSON response from the API. |
| computer_scrollA | Scroll the mouse wheel. Args: serialno: The computer device serialno, from list_devices. direction: One of "up", "down", "left", "right". amount: Wheel steps. Omit or 0 for the driver default. Returns: JSON response from the API. |
| computer_type_textC | Type text at the current caret of the focused app. Args: serialno: The computer device serialno, from list_devices. text: The text to type. Returns: JSON response from the API. |
| computer_pressB | Press a single key. Args: serialno: The computer device serialno, from list_devices. key: The key name, e.g. Enter or F5. Returns: JSON response from the API. |
| computer_hotkeyB | Press keys together, e.g. ["Control", "Shift", "Escape"]. Args: serialno: The computer device serialno, from list_devices. keys: The keys to press together. Returns: JSON response from the API. |
| computer_positionA | Get the current mouse position. Args: serialno: The computer device serialno, from list_devices. Returns: JSON envelope whose data carries the position. |
| computer_screen_sizeA | Get the primary screen size. Use this to convert coordinates returned by a vision model before calling computer_click. Args: serialno: The computer device serialno, from list_devices. Returns: JSON envelope whose data carries the screen size. |
| computer_permissionsA | Get the desktop-control permission status. Args: serialno: The computer device serialno, from list_devices. Returns: JSON envelope whose data carries the permission status. |
| computer_launch_appB | Launch a desktop application. Args: serialno: The computer device serialno, from list_devices. app_name: The application name. Returns: JSON response from the API. |
| computer_waitA | Block for a duration, useful between steps in a script. Args: serialno: The computer device serialno, from list_devices. milliseconds: How long to block, in MILLISECONDS (1-300000). Note that computer_bash's timeout is in seconds. Returns: JSON response from the API. |
| computer_bashA | Run a shell command on the host machine that owns this device. Danger tier: the command runs as the desktop user, unsandboxed, under the platform default shell (/bin/sh on macOS/Linux, cmd.exe on Windows), so bash-only syntax such as [[ ]] may not work. Treat it as shell access. A non-zero command exit is reported in data.exitCode, not as a tool error — the API call itself succeeded. Args: serialno: The computer device serialno, from list_devices. command: The shell command to run. timeout: Command budget in SECONDS. Omit or 0 to let the server apply its 120s default. Returns: JSON envelope whose data carries exitCode, stdout and stderr. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 55 tools
Each tool targets a distinct platform and action (e.g., mobile_tap vs. mobile_long_press vs. mobile_swipe; browser_fill vs. browser_input; computer_click vs. computer_drag). The platform prefixes and action-specific verbs make tool boundaries immediately clear, with only extremely minor overlap that the descriptions resolve.
Naming follows a strict <platform>_<verb>[_<noun>] convention throughout (mobile_, browser_, computer_), with global tools (list_devices, screenshot) being the only unprefixed ones, which is natural given their cross-platform nature. Verb choice per action is consistent and predictable.
55 tools is large, but the server intentionally spans three distinct platform families (mobile, browser, computer), each with its own interaction primitives. The total count is justified by the breadth of scope, though it borders on heavy and could plausibly be split into separate per-platform servers.
Core lifecycle and interaction coverage is solid across all three platforms: navigation, input, state inspection, app/process control, and shell access. Minor gaps exist (e.g., no mobile app uninstall, no explicit browser element-wait primitive, limited window management on desktop), but agents can work around them with existing tools like mobile_bash, browser_exists, and computer_execute.