Skip to main content
Glama
romanstark

Dorico Maestro

by romanstark

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault

No arguments

Capabilities

Features and capabilities supported by this server

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
connect_to_doricoA

Connect to Dorico and return its live status.

The first connection shows an approval dialog inside Dorico — the composer accepts it once, then the session token is reused on later runs.

get_statusA

Return Dorico's current (pushed) application status snapshot.

Reads are selection-only: this reflects the merged status deltas Dorico pushes (window mode, note-input state, current selection, canUndo, …), not an arbitrary query of the score.

add_notesA

Input notes at the caret, then leave note-input mode cleanly.

Args: notes: pitches like ["C4", "E4", "G4"] (letter + optional #/b + octave). duration: whole | half | quarter | eighth | sixteenth | 32nd | 64th. as_chord: if true, stack the notes as one chord instead of a sequence.

Uses :class:NoteInputSession, so note input is always exited even on error. Success only means the commands were accepted (kOK) — confirm the notes actually landed via get_status/playback/your eyes.

add_restA

Input a rest of the given duration at the caret, then leave note input.

duration: whole | half | quarter | eighth | sixteenth | 32nd | 64th. Accepted (kOK) does not prove the rest landed — verify.

transposeA

Transpose the current selection up or down.

Args: direction: "up" or "down". chromatic: step by a chromatic semitone instead of diatonically. octave: move by a whole octave (takes precedence over chromatic).

Operates on whatever is selected in Dorico (reads are selection-only), so make a selection first. Maps to NoteEdit.Pitch{Up,Down}[Chromatic|Octave].

set_time_signatureA

Set a time signature — NOT yet supported over the API.

In Dorico a time signature is typed into a popover, which the Remote Control API can't fill, so the value can't be transmitted. Rather than silently drop it, this tool reports the limitation. signature: e.g. "4/4", "3/4", "6/8".

set_key_signatureA

Set a key signature — NOT yet supported over the API.

Like the time signature, this is a popover action in Dorico; the tonality can't be transmitted over the Remote Control API. key: e.g. "C major", "G major", "F minor".

navigateA

Move around the score.

Args: target: "start", "end", or "bar". bar: 1-indexed bar number (only meaningful with target="bar").

"start"/"end" move the viewport (not the caret). "bar" is not yet supported: Edit.GoTo opens a dialog whose field the API can't fill.

switch_modeA

Switch Dorico's window mode.

mode: "write" | "engrave" | "play" | "print" | "setup" (the kWriteMode… forms are also accepted). Maps to Window.SwitchMode.

playbackA

Start or stop playback.

Args: action: "play" or "stop". location: where to start from when playing — kPlayhead | kSelection | kStartOfFlow | kLastStartPosition.

Maps to Play.StartOrStop / Play.Stop.

saveA

Save the current project (File.Save).

run_commandA

Run any catalogued Dorico command by id — the escape hatch for the long tail.

Args: command_id: e.g. "Edit.SelectAll" or "NoteInput.SetArticulation". params: optional keyword arguments for the command (names as in the catalog). Pass {"confirm": true, …} to authorise a command the catalog marks destructive.

The result reports the command's registry status alongside Dorico's response. Discover valid ids/params via the dorico://commands resource.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription
commands_catalogThe full Dorico command catalog (id, category, status, params, doc). Lets an assistant discover the ~340 commands without a tool definition for each. Read ``dorico://commands/{selector}`` to filter by category (e.g. ``NoteInput``) or by status (``verified`` | ``broken`` | ``untested``).

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/romanstark/dorico-maestro'

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