An MCP server that lets an AI agent control hardware MIDI keyboards — read and change synth parameters, load programs and songs, with pluggable model support and a mock device for hardware-free development.
Tools are thin wrappers — each keyboard device owns its logic. A connections broker manages MIDI port leases so concurrent agent sessions don't collide.
connect_to_keyboardlist_midi_devicesis_connectedset_parametersget_current_statelist_parameterslist_programsload_programload_songextract_backupget_last_backup_locationAdd a keyboard by implementing its device — the MCP tools stay generic.
An Electron desktop app (UI facade over the MCPs and agent) with model-specific web UIs and in-process mock devices; an MCB broker shares MIDI ports across sessions.
The agent calls a tool; the keyboard device translates it to MIDI and applies it to the hardware.
you › warm it up — add some chorus and a touch of reverb # agent calls the tool set_parameters(chorus: on, reverb_level: 38, drive: 12) ✓ applied to Roland JUNO-X over MIDI
keyboards-mcp applies the matched sound to your hardware synth over MIDI.