Skip to main content
Glama

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": 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.

Establishes a WebSocket connection to Dorico's Remote Control API. Must be called before using other Dorico tools.

Returns: Connection status and Dorico information

get_dorico_statusA

Get current Dorico status.

Returns information about the current score, selection, and application state.

open_scoreA

Open an existing score file.

Args: path: File path to the Dorico project file (.dorico)

Returns: Success status

create_scoreA

Create a new score in Dorico.

Creates a new score with the specified settings. This is the starting point for any new composition.

Args: title: Score title (shown on first page) composer: Composer name instruments: List of instruments to add (e.g., ["Piano", "Violin", "Cello"]) time_signature: Time signature (e.g., "4/4", "3/4", "6/8") key_signature: Key signature (e.g., "C major", "G minor", "Bb major") tempo_bpm: Tempo in beats per minute (20-400)

Returns: Success status and score information

Examples: - Simple piano piece: create_score(title="Prelude", instruments=["Piano"]) - String quartet: create_score(instruments=["Violin", "Violin", "Viola", "Cello"]) - Orchestra: create_score(instruments=["Flute", "Oboe", "Clarinet", "Horn", "Violin", "Viola", "Cello", "Double Bass"])

save_scoreB

Save the current score.

Args: path: File path to save to. If None, saves to current location.

Returns: Success status

export_scoreA

Export the score to PDF or MusicXML.

Args: path: Export file path format: Export format ("pdf" or "musicxml")

Returns: Success status and export path

add_notesA

Add notes to the score at the current position.

Args: notes: List of notes to add (e.g., ["C4", "E4", "G4"]) Format: Note name + octave, with optional # or b Examples: "C4", "F#5", "Bb3", "G#4" duration: Note duration - one of: "whole", "half", "quarter", "eighth", "sixteenth", "32nd", "64th" as_chord: If True, add all notes simultaneously as a chord. If False, add notes sequentially.

Returns: Success status and notes added

Examples: - Single note: add_notes(["C4"]) - Melody: add_notes(["C4", "D4", "E4", "F4", "G4"]) - C major chord: add_notes(["C4", "E4", "G4"], as_chord=True) - Half notes: add_notes(["C4", "E4"], duration="half")

add_restB

Add a rest at the current position.

Args: duration: Rest duration (whole, half, quarter, eighth, sixteenth, 32nd, 64th)

Returns: Success status

set_key_signatureA

Set the key signature.

Args: root: Root note of the key (C, D, E, F, G, A, B with optional # or b) Examples: "C", "G", "F#", "Bb", "Eb" mode: "major" or "minor" bar: Bar number to insert at. None = current position.

Returns: Success status

Examples: - C major: set_key_signature("C", "major") - G major: set_key_signature("G", "major") - A minor: set_key_signature("A", "minor") - Bb major: set_key_signature("Bb", "major") - F# minor: set_key_signature("F#", "minor")

set_time_signatureA

Set the time signature.

Args: numerator: Top number (beats per measure). Range: 1-32 denominator: Bottom number (beat unit). Common values: 2, 4, 8, 16 bar: Bar number to insert at. None = current position.

Returns: Success status

Examples: - Common time: set_time_signature(4, 4) - Waltz: set_time_signature(3, 4) - Compound duple: set_time_signature(6, 8) - Cut time: set_time_signature(2, 2)

add_dynamicsA

Add a dynamic marking to the selection.

Args: dynamic: Dynamic marking. Options: - pppp, ppp, pp, p (soft) - mp, mf (medium) - f, ff, fff, ffff (loud) - fp, sf, sfz, fz, rf, rfz (accented)

Returns: Success status

Examples: - Piano: add_dynamics("p") - Forte: add_dynamics("f") - Sforzando: add_dynamics("sfz")

add_tempoA

Add a tempo marking.

Args: bpm: Beats per minute (20-400) text: Optional tempo text (e.g., "Allegro", "Andante", "Presto")

Returns: Success status

Examples: - add_tempo(120) # Just BPM - add_tempo(120, "Allegro") # BPM with text - add_tempo(60, "Adagio")

add_articulationB

Add an articulation to the current selection.

Args: articulation: Articulation type (staccato, accent, tenuto, marcato, staccatissimo, fermata)

Returns: Success status

add_textB

Add text to the score at the current position.

Args: text: Text content to add text_type: Type of text (expression, technique, tempo, staff)

Returns: Success status

delete_notesA

Delete the currently selected notes.

Select the notes to delete first, then call this tool.

Returns: Success status

remove_instrumentB

Remove an instrument from the score.

Args: instrument_name: Name of the instrument to remove

Returns: Success status

add_slurA

Add a slur to the current selection.

Select the notes you want to slur first, then call this tool.

Returns: Success status

transposeA

Transpose the current selection by semitones.

Args: semitones: Number of semitones to transpose. Positive = up, Negative = down. Examples: 12 = up one octave, -12 = down one octave, 7 = up a perfect fifth, -5 = down a perfect fourth

Returns: Success status and transposition amount

transpose_octaveB

Transpose the current selection by one octave.

Args: direction: "up" or "down"

Returns: Success status

go_to_barB

Navigate to a specific bar in the score.

Args: bar_number: Bar number to go to (1-based)

Returns: Success status

add_instrumentB

Add an instrument to the score.

Args: instrument_name: Name of the instrument to add. Common names: Piano, Violin, Viola, Cello, Double Bass, Flute, Oboe, Clarinet, Bassoon, Horn, Trumpet, Trombone, Tuba, Timpani, Harp, Voice

Returns: Success status

playback_controlC

Control playback.

Args: action: One of "play", "stop", "rewind"

Returns: Success status

get_flowsA

Get list of flows in the current project.

Flows are separate musical sections within a Dorico project.

Returns: List of flows with IDs and names

get_layoutsA

Get list of layouts in the current project.

Layouts define how music is presented (full score, parts, etc.).

Returns: List of layouts with IDs and names

get_selection_propertiesA

Get properties of the current selection.

Returns detailed information about whatever is currently selected in Dorico. NOTE: This is selection-based only - cannot query arbitrary score positions.

Returns: Properties of current selection

get_engraving_optionsA

Get current engraving options.

Engraving options control the visual appearance of notation.

Returns: Current engraving options

get_layout_optionsA

Get layout options for a specific layout.

Args: layout_id: ID of the layout (get from get_layouts())

Returns: Layout options for the specified layout

get_notation_optionsA

Get notation options for a specific flow.

Args: flow_id: ID of the flow (get from get_flows())

Returns: Notation options for the specified flow

set_engraving_optionsC

Set engraving options for the document.

Engraving options control the visual appearance of notation elements.

Args: options: Dictionary of option names and values to set

Returns: Success status

set_layout_optionsC

Set layout options for a specific layout.

Args: layout_id: ID of the layout (get from get_layouts()) options: Dictionary of option names and values to set

Returns: Success status

set_notation_optionsA

Set notation options for a specific flow.

Args: flow_id: ID of the flow (get from get_flows()) options: Dictionary of option names and values to set

Returns: Success status

analyze_chordA

Analyze a chord and get its Roman numeral analysis.

Args: pitches: List of pitch names (e.g., ["C4", "E4", "G4"]) key: Key for Roman numeral analysis (e.g., "C major", "A minor")

Returns: Chord analysis with root, quality, and Roman numeral

suggest_next_chordA

Suggest possible next chords based on harmonic context.

Args: previous_chords: List of previous chord Roman numerals (e.g., ["I", "IV"]) key: Current key (e.g., "C major") style: Style of suggestions (classical, pop, jazz)

Returns: List of suggested chords with explanations

check_voice_leadingC

Check for voice leading issues between two voice parts.

Detects parallel fifths, parallel octaves, voice crossing, etc.

Args: voice1: List of pitches for first voice (e.g., ["C4", "D4", "E4"]) voice2: List of pitches for second voice (e.g., ["G3", "A3", "B3"])

Returns: List of voice leading issues found

generate_chord_progressionB

Generate a chord progression.

Args: key: Key for the progression (e.g., "C major", "A minor") length: Number of chords (default 4) style: Style (classical, pop, jazz) ending: Cadence type (authentic, half, plagal, deceptive)

Returns: Generated chord progression with Roman numerals

check_instrument_rangeA

Check if a pitch is playable on an instrument.

Args: instrument: Instrument name (e.g., "violin", "flute", "clarinet") pitch: Pitch to check (e.g., "C4", "G3")

Returns: Playability status and range information

get_instrument_infoA

Get detailed information about an instrument.

Args: instrument: Instrument name (e.g., "violin", "horn", "clarinet")

Returns: Instrument details including range, transposition, family

check_species_rulesA

Check species counterpoint rules.

Analyzes a counterpoint line against a cantus firmus for rule violations.

Args: cantus_firmus: List of pitches for the cantus firmus (e.g., ["C4", "D4", "E4"]) counterpoint: List of pitches for the counterpoint line species: Species number (1-5): 1 = Note against note 2 = Two notes against one 3 = Four notes against one 4 = Syncopation/suspensions 5 = Florid (free)

Returns: Analysis with intervals and rule violations

Examples: - First species: check_species_rules(["C4", "D4", "E4"], ["G4", "A4", "C5"], species=1)

generate_counterpointA

Generate a counterpoint line for a cantus firmus.

Creates a counterpoint melody following species rules.

Args: cantus_firmus: List of pitches (e.g., ["C4", "D4", "E4", "F4", "E4", "D4", "C4"]) species: Species number (1-5) above: If True, generate counterpoint above CF; if False, below

Returns: Generated counterpoint with validation results

Examples: - Above CF: generate_counterpoint(["C4", "D4", "E4", "D4", "C4"], species=1, above=True) - Below CF: generate_counterpoint(["C4", "D4", "E4", "D4", "C4"], species=1, above=False)

validate_voice_leadingB

Validate voice leading in a multi-voice passage.

Checks for parallel fifths/octaves, voice crossing, and range issues.

Args: voices: Dictionary mapping voice names to pitch lists Example: {"soprano": ["C5", "D5"], "alto": ["E4", "F4"], "tenor": ["G3", "A3"], "bass": ["C3", "D3"]} key: Key for analysis (e.g., "C major", "A minor")

Returns: Validation results with errors and warnings

Examples: - Four-part: validate_voice_leading({ "soprano": ["C5", "D5", "E5"], "alto": ["E4", "F4", "G4"], "tenor": ["G3", "A3", "B3"], "bass": ["C3", "D3", "E3"] })

check_enharmonicA

Check for potentially incorrect enharmonic spellings.

Suggests alternative spellings based on key context.

Args: pitches: List of pitches to check (e.g., ["C#4", "Db4", "F#4"]) key: Key context (e.g., "Db major" - suggests Db instead of C#)

Returns: List of spelling suggestions

Examples: - check_enharmonic(["C#4", "F#4"], key="Db major") -> Suggests using Db and Gb instead

analyze_intervalsA

Analyze intervals between consecutive pitches.

Args: pitches: List of pitches (e.g., ["C4", "E4", "G4", "C5"])

Returns: List of intervals with names, semitones, and consonance info

check_playabilityA

Check if a passage is playable on an instrument.

Args: instrument: Instrument name (e.g., "violin", "flute") pitches: List of pitches to check

Returns: Playability analysis with range and technique issues

validate_scoreA

Comprehensive score validation.

Checks voice leading, ranges, parallel motion, and more.

Args: voices: Dictionary mapping voice names to pitch lists key: Key for analysis

Returns: Complete validation report with score and issues

detect_parallel_motionB

Detect parallel fifths and octaves between two voices.

Args: voice1: List of pitches for first voice voice2: List of pitches for second voice

Returns: Detection results with parallel motion instances

transpose_for_instrumentA

Transpose a pitch for a transposing instrument.

Args: pitch: Pitch to transpose (e.g., "C4") instrument: Instrument name (e.g., "clarinet", "horn", "trumpet") to_concert: If True, written to concert pitch; if False, concert to written

Returns: Transposed pitch with interval info

realize_figured_bassA

Realize figured bass notation into chord pitches.

Args: bass_pitch: Bass note (e.g., "C3", "G2") figures: Figured bass notation (e.g., "6", "64", "7", "65", "43", "42") key: Key context for accidentals

Returns: Realized chord with all pitches

suggest_cadenceA

Suggest appropriate cadence types based on context.

Args: current_chord: Current chord (e.g., "V", "IV", "I") key: Key context (e.g., "C major", "A minor") phrase_position: Position in phrase ("end", "middle", "beginning")

Returns: Cadence suggestions with explanations

suggest_doublingA

Suggest instruments for doubling a given instrument.

Args: instrument: Primary instrument to double (e.g., "violin", "flute") purpose: Purpose (reinforcement, octave_above, octave_below, color) register: Register of the passage (low, middle, high)

Returns: Doubling suggestions with rationale

find_dissonancesA

Find dissonant intervals in a collection of pitches.

Args: pitches: List of pitches sounding together (e.g., ["C4", "E4", "G4", "B4"]) context: Context for analysis ("counterpoint", "harmony", "any")

Returns: List of dissonances found with resolution advice

suggest_instrumentationB

Suggest instrumental ensembles based on style and requirements.

Args: style: Musical style (classical, romantic, modern, baroque, jazz) size: Ensemble size (solo, small, medium, large, orchestra) character: Character of piece (lyrical, dramatic, light, powerful, intimate)

Returns: Suggested ensembles with rationale

balance_dynamicsA

Suggest dynamic adjustments for ensemble balance.

Args: instruments: List of instruments in the ensemble target_dynamic: Target overall dynamic level (pp, p, mp, mf, f, ff) melody_instrument: Instrument carrying the melody (should project)

Returns: Dynamic suggestions for each instrument

check_beamingA

Check if beaming follows standard notation rules.

Args: time_signature: Time signature (e.g., "4/4", "6/8") note_values: List of note values in a bar (e.g., ["8th", "8th", "8th", "8th"])

Returns: Beaming analysis with suggestions

check_spacingA

Check if note spacing is appropriate for readability.

Args: note_count: Number of notes in the bar bar_width_mm: Width of the bar in millimeters shortest_note: Shortest note value in the bar

Returns: Spacing analysis with recommendations

Prompts

Interactive templates invoked by user choice

NameDescription
harmonize_melodyWorkflow for harmonizing a melody with four-part harmony.
orchestration_basicsWorkflow for basic orchestration of a piano piece.
species_counterpointWorkflow for species counterpoint exercises.
chord_progression_workshopWorkflow for creating and refining chord progressions.
score_reviewWorkflow for comprehensive score review and proofreading.

Resources

Contextual data attached and managed by the client

NameDescription
resource_statusCurrent Dorico connection status and application state.
resource_score_infoCurrent score information including title, composer, and instruments.
resource_score_selectionCurrent selection information including selected notes and bars.
resource_instrument_listList of available instruments with basic info.
resource_instrument_rangesStandard instrument ranges for orchestration reference.

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/happycastle114/dorico-mcp-server'

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