Skip to main content
Glama
manymids

ARCL CYD Desktop MCP bridge

by manymids

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
CYD_MCP_LAYERSNoComma-separated capability layers to expose (e.g. 'L0,L1'). If not set, all layers are exposed.
CYD_DESKTOP_PORTNoSerial port for the CYD device e.g. 'COM6'. If not set, the system auto-detects a CH340 (VID 1a86 / PID 7523).
CYD_DESKTOP_APPS_ROOTNoRoot folder for MCP app deployment. If not set, defaults to 'examples/' in the repository.

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

CapabilityDetails
tools
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
arcl_statusA

Common (arcl). Control, any layer. Report the machine id, enabled layers, current view and foreground app, and the MicroPython app runtime. time_control is "none": the board runs in real time and has no frame counter, so frame is null.

cyd_ui_treeA

Machine-specific (cyd). Observation, L0. Read the detailed currently visible UI tree with ids, roles, labels, bounds, and enabled state.

cyd_apps_listA

Machine-specific (cyd). Observation, L1. List the ids of the built-in views and native apps, as a fixed list kept in the firmware. Installed MicroPython apps are listed by cyd_installed_apps_list.

cyd_installed_apps_listB

Machine-specific (cyd). Observation, L1. List MicroPython apps installed on the microSD, including Home pin state.

cyd_launchA

Machine-specific (cyd). Action, L1. Open a built-in view (clock, calendar, scripts, settings, editor), a native app, or an installed MicroPython app by id. A MicroPython app is queued: success means it will start, not that it has.

cyd_activateC

Machine-specific (cyd). Action, L1. Same as cyd_launch. Kept for clients written against the older name.

cyd_homeB

Machine-specific (cyd). Action, L1. Return the foreground application to Home.

cyd_runB

Machine-specific (cyd). Control, any layer. Pause the cooperative MicroPython app and grant a bounded number of cyd.update() frames.

cyd_runtime_statusC

Machine-specific (cyd). Control, any layer. Read cooperative MicroPython runtime pause and frame state.

cyd_pauseB

Machine-specific (cyd). Control, any layer. Cooperatively pause the foreground MicroPython app at its next cyd.update().

cyd_resumeB

Machine-specific (cyd). Control, any layer. Resume a cooperatively paused MicroPython app.

cyd_stepA

Machine-specific (cyd). Control, any layer. Advance a cooperatively paused MicroPython app by one cyd.update() frame.

cyd_tapA

Machine-specific (cyd). Action, L0. Queue a synthetic tap at an absolute 320x240 display coordinate.

cyd_input_stateA

Machine-specific (cyd). Observation, L0. Read physical touch state, last coordinate, and queued synthetic tap count.

cyd_input_macroC

Machine-specific (cyd). Action, L0. Queue a short sequence of coordinate taps with optional delays between steps.

cyd_input_readA

Machine-specific (cyd). Observation, L0. Read the most recent input event, such as tap.home or tap., without clearing it.

cyd_input_clearB

Machine-specific (cyd). Action, L0. Read the most recent input event and clear it.

cyd_diagnosticsA

Machine-specific (cyd). Observation, L2. Read desktop transport and health diagnostics. fingerprint: 1 starts summing the CRC-32 of everything sent to the LCD (spi_fingerprint, from zero), 0 stops it; two firmware builds that paint identically produce the same change over the same actions.

cyd_logsB

Machine-specific (cyd). Observation, L2. Read the retained recent UI, input, and application event log.

cyd_screen_mirrorA

Machine-specific (cyd). Observation, L0. Render a lightweight logical 320x240 PNG mirror from the retained UI tree. This is not an LCD pixel readback.

cyd_settings_getA

Machine-specific (cyd). Observation, L1. Read brightness, color theme, animation speed, and Bluetooth keyboard layout settings.

cyd_settings_setB

Machine-specific (cyd). Action, L1. Persist one or more settings. Omitted settings remain unchanged. keyboard_layout is the key layout of a Bluetooth keyboard.

cyd_touch_calibrate_startA

Machine-specific (cyd). Action, L3. Show the first of three touch-calibration crosshairs. Tap each crosshair once to save the corrected mapping.

cyd_radio_statusA

Machine-specific (cyd). Observation, L3. Read the radio mode of this boot (off, wifi or bluetooth) and the mode stored for the next boot. Wi-Fi and Bluetooth are exclusive.

cyd_radio_setA

Machine-specific (cyd). Action, L3. Store the radio mode (off, wifi or bluetooth) for the next boot. It applies after a restart; restart true restarts the device right after replying, which fails while a foreground app is running.

cyd_key_pressA

Machine-specific (cyd). Action, L0. Press one key as a hardware keyboard would: the editor edits with it and a running app reads it with cyd.key(). Names: a character ("a", "A"), ENTER, BACKSPACE, DELETE, TAB, ESC, UP, DOWN, LEFT, RIGHT, HOME, END, PAGEUP, PAGEDOWN, INSERT, F1-F12, with CTRL+, ALT+ or SHIFT+ in front (CTRL+S). CTRL+C interrupts a running app.

cyd_type_textA

Machine-specific (cyd). Action, L0. Type text as hardware keyboard presses, one key per character; a newline is ENTER. Printable ASCII only.

cyd_bt_statusA

Machine-specific (cyd). Observation, L3. Read the Bluetooth keyboard state: connected and remembered keyboard, pairing progress with the PIN or passkey to type, and the results of the last scan. Bluetooth runs only in radio mode bluetooth.

cyd_bt_scanA

Machine-specific (cyd). Action, L3. Search for Bluetooth Classic keyboards in pairing mode for the given seconds. Poll cyd_bt_status for results.

cyd_bt_connectA

Machine-specific (cyd). Action, L3. Pair with a keyboard from the last scan by index. The screen shows a PIN or passkey (also in cyd_bt_status) that the user types on the keyboard, then Enter. Pairing a keyboard forgets the previous one.

cyd_bt_forgetB

Machine-specific (cyd). Action, L3. Disconnect and forget the remembered Bluetooth keyboard.

cyd_sd_statusA

Machine-specific (cyd). Observation, L3. Read whether the optional FAT microSD card was mounted safely at boot.

cyd_package_uploadA

Machine-specific (cyd). Action, L1. Atomically upload one file into /sd/apps// after SHA-256 verification. Text by default; pass encoding "base64" for binary assets such as JPEG images. Existing files are kept unless replace is true. Fails while a foreground app is running.

cyd_app_deployB

Machine-specific (cyd). Action, L1. Install or update a whole app directory - manifest.json, the entry file and every asset, binary included - after checking the manifest. app_dir is resolved inside CYD_DESKTOP_APPS_ROOT, which defaults to the repository's examples directory. Returns to Home first, because the device refuses uploads while an app runs.

cyd_app_errorA

Machine-specific (cyd). Observation, L2. Read the full traceback of the most recent MicroPython app failure. The event log keeps only a 48-character summary.

cyd_script_launchC

Machine-specific (cyd). Action, L1. Launch /sd/apps//main.py as the single foreground MicroPython app.

cyd_app_deleteB

Machine-specific (cyd). Action, L1. Permanently delete one installed MicroPython app and any Home shortcut that targets it.

cyd_shortcuts_listA

Machine-specific (cyd). Observation, L1. List the microSD-backed Home shortcuts currently loaded by the desktop.

cyd_shortcut_createA

Machine-specific (cyd). Action, L1. Create a new microSD-backed Home shortcut. Home shows two shortcuts on its first page and eight on each further page, 18 in all.

cyd_shortcut_updateC

Machine-specific (cyd). Action, L1. Update an existing microSD-backed Home shortcut.

cyd_shortcut_deleteC

Machine-specific (cyd). Action, L1. Delete a microSD-backed Home shortcut.

cyd_time_setB

Machine-specific (cyd). Action, L1. Synchronize the CYD clock from a Unix epoch.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

B3.3/5.0

Scored across 42 tools

Disambiguation4/5

Most tools map to a distinct subsystem and action, and descriptions clearly separate closely related groups like app listing versus installed MicroPython apps. The main ambiguity is an explicit alias (cyd_launch/cyd_activate) and a few read-versus-clear or launch-versus-script variants, but descriptions mostly prevent misselection.

Naming Consistency4/5

Names largely follow a consistent cyd_<subsystem>_<action> pattern with snake_case throughout. Minor deviations such as noun-only names (cyd_logs, cyd_diagnostics) and the common arcl_status tool keep it from being perfectly uniform.

Tool Count2/5

42 tools is well above the comfortable MCP tool count and will be heavy for an agent to navigate. Many fine-grained operations could be consolidated into parameterized tools, and the launch/activate alias inflates the count further.

Completeness4/5

The surface covers core device control well: UI observation, input synthesis, app lifecycle, settings, Bluetooth, radio, and shortcuts. Minor gaps like an explicit app-stop or standalone reboot tool and generic SD file browsing prevent a perfect score.