Universal Device MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| UDMCP_POLICY | No | Path to a JSON file containing optional local communication restrictions. No policy is imposed by default. | |
| UDMCP_DATABASE | No | Override the SQLite database path. The default database lives in the operating system's per-user application data directory under UniversalDeviceMCP/devices.sqlite3. | |
| UDMCP_AUTO_MONITOR | No | Set to false to disable the automatic background monitor for USB, HID, serial and ADB devices. | true |
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
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| discover_devicesA | Discover connected devices using available USB, serial, BLE, Android ADB and iOS adapters. Optionally restrict transports to usb, hid, serial, bluetooth, adb, ios or network. Optional adapter dependencies and OS access errors are reported per transport without stopping other scans. |
| get_runtime_statusA | Report runtime, adapter, optional-library and host-tool availability without scanning hardware. |
| discover_wireless_devicesB | Discover BLE/local mDNS services, wireless Android ADB and paired iOS mobdev2 services. |
| pair_android_over_wifiA | Pair Android Wireless Debugging using a six-digit code shown by the owner on the device. The endpoint must currently be advertised by ADB mDNS as a TLS pairing service. The code is passed through stdin to adb and is not saved in device memory or experiment history. |
| connect_android_over_wifiB | Connect to an Android TLS ADB service currently advertised by ADB mDNS. |
| list_known_devicesA | List device profiles saved in the local knowledge database. |
| start_device_monitorC | Start automatic USB, HID, serial and ADB connect/disconnect monitoring in this server. |
| stop_device_monitorB | Stop automatic device connection monitoring. |
| get_device_eventsA | Read persistent connect/disconnect events; pass the last event id to fetch new events. |
| get_access_policyA | Show the optional local policy from UDMCP_POLICY; absent policy leaves operations unrestricted. |
| inspect_deviceB | Inspect known device details and transport-specific interfaces/services. |
| communicateA | Perform a generic transport operation. Payload bytes are supplied as hexadecimal. Serial supports read/write/send/receive. USB supports read/write plus control_read and control_write; endpoints, lengths and USB control setup fields belong in options. BLE supports read/write using a characteristic UUID. ADB supports execute with argv in options. iOS supports lockdown inspection and pymobiledevice3 commands through argv, with the selected UDID pinned by the adapter and no shell. Pass session_id from open_interface to reuse a persistent session. Transport access may change device state; target and payload must be deliberate. |
| open_interfaceC | Open a persistent USB, HID, serial, TCP or UDP interface and return its session id. |
| close_interfaceB | Close a previously opened interface session and release its operating-system handle. |
| remember_discoveryC | Append knowledge to a device profile with confidence='hypothesis' or 'confirmed'. |
| update_device_profileA | Edit a saved profile's name, identity, hardware metadata or interface list. Identity and hardware objects are merged with existing values; interfaces are replaced. Device fingerprint and transport cannot be edited because they identify the physical target. |
| get_device_knowledgeC | Read all retained discoveries and the recent communication experiment history. |
| analyze_payloadA | Inspect generic bytes and optionally compare a sample with a baseline. Returns common text and integer views, entropy, changed offsets, and cautious hypotheses. This is analysis, not protocol identification; save validated findings separately. |
| export_device_profileB | Export a complete device profile as JSON text for backup or sharing. |
| forget_deviceA | Permanently delete one device profile and its saved discoveries and experiments. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| Known device profiles | Local inventory and remembered technical profiles for discovered devices. |
TDQS
Scored across 20 tools
Most tools have clearly distinct targets: discovery, monitoring, profile management, interface sessions, and payload analysis are separable. The main overlap is between discover_devices and discover_wireless_devices, since discover_devices can also include wireless transports, and communicate/open_interface boundaries require reading descriptions carefully.
Names are consistently snake_case and mostly follow a verb_noun convention such as discover_devices, get_runtime_status, and update_device_profile. The only notable deviation is the verb-only name communicate, which is still understandable but breaks the pattern slightly.
Twenty tools is somewhat heavy but defensible for a universal device server spanning discovery, monitoring, Android wireless workflows, interface sessions, profile knowledge, and payload analysis. Each tool has a meaningful role, though the surface is larger than the typical 3-15 tool range.
The set covers the core lifecycle well: discovery, monitoring/events, device inspection, interface open/close, communication, profile CRUD/export, and knowledge retention. Minor gaps remain, such as policy mutation, granular deletion of discoveries/experiments, or a more generic device connection abstraction beyond Android wireless.