Skip to main content
Glama
CrossPad

crosspad-mcp-server

Official
by CrossPad

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault

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

CapabilityDetails
tools
{
  "listChanged": true
}
logging
{}
prompts
{
  "listChanged": true
}
resources
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
crosspad_buildA

[PC | ESP | STM HW] Build CrossPad for the given platform. • platform='pc' → CMake + Ninja host simulator. PREFER THIS over cmake --build build (picks right MSVC env on Windows, parses errors/warnings, streams progress). • platform='idf' → idf.py build for ESP32-S3 firmware. PREFER THIS over raw idf.py build (sources IDF env, auto-fullcleans when new apps detected, parses errors/warnings). • platform='stm' → CMake + Ninja + arm-none-eabi for STM32G0 firmware (CrossPad r20). Uses CMakePresets (Debug/Release); output is build//CrossPad_STM32_r20.elf. Mode×platform compatibility: • incremental → all (default) • clean → all (wipes build dir, then builds) • reconfigure → PC & STM (re-runs cmake without wiping cache) • fullclean → IDF only (runs idf.py fullclean, then builds)

crosspad_repo_statusA

Git status across ALL detected CrossPad repos in one call: branch, HEAD, dirty files, submodule sync state. PREFER THIS over running git status per repo — handles the 5-repo monorepo layout in one shot.

crosspad_devicesA

[ESP HW] List connected CrossPads as seen by the crosspad-hil daemon: id (dev_xxxx, stable per USB serial), usb_mode (default|audio|bootloader|unknown), and every port role (cdc, console=STM VCP, esp_midi, stm_midi, uac2, bootloader). kind keeps the v9 meaning: 'esp-native' (rev <2.0) or 'stm-bridge' (rev 2.0, STM32 composite CDC+MIDI). selected is set when exactly one device would be chosen implicitly by every other tool.

crosspad_doctorA

Environment doctor. Host checks: hil_python interpreter, crosspad-hil version vs the one this server needs, platform-idf root, ESP-IDF env, crosspad-pc root, per-rev build dirs and firmware age, simulator binary staleness. Daemon checks merged in: udev/dialout, port locks (holder PID + purpose), rtmidi/ALSA/sounddevice visibility. Also reports the daemon as a process: uptime, ops served, open handles and the OS resources it holds (ALSA sequencer clients, fds). Each check is {name, ok, detail, fix}; ok is false when any check fails. Run this first when a device tool errors. action=restart_daemon restarts the crosspad-hil daemon — how a newly installed crosspad-hil or a new scenario becomes visible without restarting this server.

crosspad_snapshotA

[ESP HW | PC sim] One-call state snapshot (~300 tokens): apps {running, available}, ui {focus {ref,label}, group [{ref,label}], drawer, theme, app}, kit, leds, pads, mem, ble, console counters. Refs e<i> are ENC_GROUP indices for crosspad_ui focus — any UI action invalidates them and the next snapshot re-mints them. diff_from= adds changed. target=sim maps the simulator's stats onto the same shape (ui null).

crosspad_flashA

[ESP HW | STM HW] Flash firmware. Danger tier: it always runs a preflight first, always returns that preflight (refusal included), and needs a confirmation before writing anything. Preflight reports: the device's USB mode, which role the target port plays (the STM32 bridge console is refused as a flash target), the binary's own version string, whether it is older than the newest file under main/ or components/, and whether the build's board revision matches the device's — a mismatch is a blocker, because the revisions differ in pinout and the wrong image looks like dead hardware. target='esp': transport='ota' streams over USB CDC with the device running (no bootloader mode); transport='uart' runs idf.py flash and needs download mode. wait_boot=true then opens the console and returns a BootResult. target='stm': method='swd' (ST-Link) or 'dfu' (system bootloader, hold pad 1 at boot). The flash runs as a job: wait_seconds=0 (default) returns a task handle for crosspad_task; wait_seconds>0 inlines the final status. dry_run=true stops after the preflight. force=true overrides every blocker except the port-role refusal.

crosspad_toolsetsA

Manage which crosspad_* toolsets are visible. Only core is on at start. Toolsets: core, device, hil, sim, code, git, apps, trace. action=list shows all with enabled state; enable/disable take toolset= (core cannot be disabled); describe lists each tool with its safety tier. Enabling emits tools/list_changed — re-list tools afterwards. Tools hidden by a readonly policy never appear.

crosspad_taskA

Poll, wait on, cancel or list long-running crosspad tasks (build, flash, hil_run, capture, stimulus, submodule_update). Task handles are task_; results are kept 1 h after completion. Use this when your client does not support the MCP tasks capability.

Prompts

Interactive templates invoked by user choice

NameDescription
flash-and-smokeBuild (optional), flash over OTA and confirm the board came back with a complete boot.
jamStart the Sampler, load a kit, play a pattern, record it back and confirm the hits are audible.
diagnoseTurn a panic on the console into decoded source lines, memory state and a likely cause.
audio-captureSwitch to the USB-audio profile, route the loop, record and restore the default profile.
kit-churn-liveRun the kit-swap soak that plays during every swap, and read its report honestly.
pr-readyTest, review the working tree and submodule pins, then commit.

Resources

Contextual data attached and managed by the client

NameDescription
crosspad-workspaceDetected CrossPad repos with branch, HEAD, dirty count, plus PC simulator running status. Cheap snapshot — load once per session for context.
crosspad-traceLive SWD trace session status: active flag, device_state, sample_count, achieved Fs, traced signals, and the web UI URL. Returns {active:false} when idle.
crosspad-devicesDevice inventory from the crosspad-hil daemon (same payload as crosspad_devices, raw Device dicts). ttl 0 — re-discovered on every read.
crosspad-cdc-catalogCDC verb catalog with reply grammar (crosspad_hil/knowledge/cdc.yaml, generated from hil_control.cpp): every verb, its args, its reply prefix, whether the reply is single-line/OK/multi, and which USB profile it works in. Read this before sending a raw command with crosspad_cdc verb=raw — a reply prefix is not an acknowledgement of your command. Cached 1 h.
crosspad-sysex-catalog0x7D SysEx catalog (crosspad_hil/knowledge/sysex.yaml): manufacturer id, USB-mode ids, the 0x1D audio-route sub-verbs, bootloader ids, and the host denylist (frames this server refuses to send). Cached 1 h.
crosspad-hil-catalogScenarios the crosspad-hil daemon can run, with their parameters, defaults and help text — the machine-readable form of tools/hil_*.py. Cached 1 h.
crosspad-eventsEventType and EventSource enums from crosspad-core
crosspad-settings-schemaCrosspadSettings fields by group
crosspad-featuresFeature-flag catalog and the values this checkout deviates on
crosspad-apps-registeredApps the firmware will register (REGISTER_APP and _PL, including installed components)
crosspad-idf-statusBoard revision, build dirs and how old the built binary is
crosspad-skill-indexThe bundled skill documents available as skill:// resources
crosspad-skill-crosspadCrossPad — start here
crosspad-skill-crosspad-faqFAQ — common errors & pitfalls
crosspad-skill-crosspad-hil-testingHIL testing — hardware-in-the-loop on the real CrossPad
crosspad-skill-crosspad-installInstall & configure crosspad-mcp
crosspad-skill-crosspad-memoryWhere does a new fact belong?
crosspad-skill-crosspad-philosophyCrossPad philosophy — why the ecosystem is shaped this way
crosspad-skill-crosspad-reposCrossPad repos — what lives where
crosspad-skill-crosspad-role-contributorRole: crosspad-mcp server contributor
crosspad-skill-crosspad-role-fw-devRole: firmware developer
crosspad-skill-crosspad-role-userRole: MCP / firmware user
crosspad-skill-crosspad-toolsTool cheat-sheet — grouped by task
crosspad-skill-swd-tracerCrossPad SWD real-time tracer
crosspad-skill-swd-tracer-signalsCrossPad r20 firmware — handy trace signals

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/CrossPad/crosspad-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server