Cubase MCP Server
Enables headless control of Cubase via MIDI Remote API and virtual MIDI ports, supporting transport, track, and plugin parameter operations through 238 registered MCP tools.
README
Cubase MCP Server
This repository implements a Cubase MCP server with a real headless control path for Windows using:
- Cubase MIDI Remote API script
- virtual MIDI ports such as loopMIDI
- MIDI request/response SysEx bridge
- MIDI CC command surface triggers
- DirectAccess object and parameter discovery
- MIDI Remote command binding
canPerformchecks - selected/focused quick controls for plugin parameters
- filesystem verification for export results
- versioned Windows named-pipe companion bridge protocol
- 238 registered MCP tools with generated static capability audit
It intentionally does not implement or include AutoHotkey, SendKeys, Win32 keyboard/mouse injection, UI Automation clicks, menu automation, dialog automation, screenshot detection, OCR, mouse coordinates, or OS-level shortcut sending.
Real Adapter Mode
The default adapter is composite, not mock.
$env:CUBASE_ADAPTER="composite"
$env:CUBASE_MIDI_INPUT="AI MCP Bridge From Cubase"
$env:CUBASE_MIDI_OUTPUT="AI MCP Bridge To Cubase"
npm run build
node dist/server.js
Use mock only for unit tests or client prototyping:
$env:CUBASE_ADAPTER="mock"
npm run dev
Real Cubase Communication Files
src/adapters/MidiRemoteAdapter.tssrc/adapters/MidiCommandSurfaceAdapter.tssrc/adapters/PluginBridgeAdapter.tssrc/adapters/ProjectStateAdapter.tssrc/adapters/CompositeCubaseAdapter.tssrc/adapters/DirectAccessAdapter.tssrc/bridge/midi/*src/cubase-remote-script/direct-access-bridge.js
Current Evidence Status
The static source tree contains no real capability claims. All entries have
testedWithRealCubase: false until npm run cubase:discover or forced real
integration tests produce operation-level evidence.
Implemented candidate headless paths include:
cubase.get_statuscubase.transport_playcubase.transport_stopcubase.transport_recordcubase.transport_rewindcubase.transport_forwardcubase.set_cyclecubase.set_metronome- selected-track
cubase.set_track_volume - selected-track
cubase.set_track_pan - selected-track
cubase.set_track_mute - selected-track
cubase.set_track_solo - selected-track
cubase.set_track_record_enable - selected-track
cubase.set_track_monitor - quick-control based
cubase.get_plugin_parameters - quick-control based
cubase.set_plugin_parameter - user-mapped command trigger
cubase.trigger_command - DirectAccess discovery tools such as
cubase.direct_access_discover_object_tree - command binding registry tools such as
cubase.command_binding_get_registry - current-settings-only
cubase.perform_current_audio_export - DirectAccess semantic mixer/EQ/send/plugin writes using discovered ObjectIDs and parameter tags
- API 1.3 plugin slot assignment and destructive slot reset
- generated Standard MIDI File plus explicit companion import
- asynchronous export/render/scan jobs with bridge progress polling
Unknown or companion-bridge-required until real evidence proves support:
- parameterized project open/save/create
- arbitrary track create/delete/rename/reorder
- MIDI part and note editing
- audio event editing
- render/export/mixdown/stems
- arbitrary plugin insert/preset/window control
Non-executable functions return machine-readable errors such as NEEDS_CUBASE_SIDE_BRIDGE, NEEDS_USER_SETUP, BLOCKED_BY_CUBASE_API, or BLOCKED_BY_NO_HEADLESS_API.
The complete architecture, tool contract, and generated per-tool audit are in
docs/architecture.md, docs/tools.md, and
docs/full-capability-audit.md.
Setup
Read these in order:
docs/setup-windows.mddocs/setup-virtual-midi.mddocs/setup-cubase-midi-remote.mddocs/setup-command-surface.mddocs/troubleshooting.md
Verification
npm run typecheck
npm test
npm run test:real
npm run build
Generate the timestamped real Cubase evidence bundle with:
npm run cubase:discover
See docs/real-test-guide.md for the exact Windows/Cubase sequence and docs/real-test-report-schema.md for the evidence contract. npm test is unit/mock evidence only. npm run test:real detects its npm lifecycle name and does not skip integration tests when Cubase is unavailable.
Sources
- Steinberg MIDI Remote API Programmer's Guide: https://steinbergmedia.github.io/midiremote_api_doc/
- Steinberg MIDI Remote API Reference: https://steinbergmedia.github.io/midiremote_api_doc/codedoc_api_reference/
- MCP TypeScript SDK: https://ts.sdk.modelcontextprotocol.io/
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.