musescore-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| MSCORE_PATH | No | Path to MuseScore executable if not in standard location |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_musescore_pathA | Return the detected MuseScore executable path on this machine. |
| convert_scoreA | Convert a score file to another format. Args: score_b64: Base64-encoded content of the input file. input_suffix: Extension of the input file without dot, e.g. "mscz". output_format: Target format — pdf | musicxml | mid | mp3 | wav | flac | ogg | png | svg. Returns: PNG (multi-page): {"format": "png", "pages": N, "data": [b64, ...]} Text formats (musicxml, svg): {"format": str, "data": str} Binary formats: {"format": str, "data": b64} |
| batch_convertA | Convert multiple score files in a single MuseScore process using -j. Each job dict must have:
Returns results in the same order as jobs. |
| export_partsA | Export each instrument part from a score as a separate file. First converts to MusicXML to discover part names and count, then uses MuseScore's JSON job format to export each part by index. Args: score_b64: Base64-encoded score file. input_suffix: Input extension, e.g. "mscz". output_format: Format for each part output (pdf, musicxml, png, etc.). Returns: List of {"part_index": int, "part_name": str, "format": str, "data": ...}. |
| export_png_pagesA | Export each page of a score as a PNG image. Args: score_b64: Base64-encoded score file. input_suffix: Input extension, e.g. "mscz". dpi: Output resolution in dots per inch (1–2400, default 150). trim: If True, trim whitespace borders (0 px margin). Returns: List of base64-encoded PNG strings, one per page, in order. |
| transpose_by_keyA | Transpose a score to a target key using the MuseScore CLI. Requires MuseScore 3.3+ with --score-transpose support. Args: score_b64: Base64-encoded score file. input_suffix: Input extension, e.g. "mscz". target_key: Target major key — C G D A E B F# C# F Bb Eb Ab Db Gb Cb. direction: "up", "down", or "closest" (default). Returns: Base64-encoded mscz of the transposed score. |
| transpose_by_intervalA | Transpose a score by a fixed number of semitones via the MuseScore CLI. Requires MuseScore 3.3+ with --score-transpose support. Args: score_b64: Base64-encoded score file. input_suffix: Input extension, e.g. "mscz". semitones: Number of semitones to transpose (1–24). direction: "up" or "down". Returns: Base64-encoded mscz of the transposed score. |
| transpose_for_instrumentA | Adjust the transposition offset for a transposing instrument part. Modifies the MusicXML element — useful for converting between transposing instruments (e.g. Bb clarinet ↔ concert pitch, alto sax → tenor sax). Pass either Args: score_b64: Base64-encoded score file. input_suffix: Input extension, e.g. "mscz". instrument: Instrument shorthand name (optional). chromatic: Semitone offset written→sounding (optional). diatonic: Diatonic step offset written→sounding (optional). part_index: Which part to affect (0-based). None = all parts. Returns: Modified MusicXML as a UTF-8 string. |
| change_tempoB | Change the tempo by modifying MusicXML and elements. Replaces all existing tempo markings in the score. Args: score_b64: Base64-encoded score file. input_suffix: Input extension, e.g. "mscz". bpm: New tempo in beats per minute (1–400). beat_unit: Beat unit for the metronome marking: quarter, half, eighth, whole. Returns: Modified MusicXML as a UTF-8 string. |
| change_time_signatureA | Change the time signature by modifying MusicXML elements. Note: only the time signature element is changed — notes and beaming are not automatically adjusted. Args: score_b64: Base64-encoded score file. input_suffix: Input extension, e.g. "mscz". beats: Beats per measure (e.g. 3 for 3/4). beat_type: Note value of one beat (1, 2, 4, 8, 16, or 32). Returns: Modified MusicXML as a UTF-8 string. |
| get_score_infoA | Return basic metadata and structural info about a score. Args: score_b64: Base64-encoded score file. input_suffix: Input extension, e.g. "mscz". Returns: Dict with title, composer, initial key, time signature, tempo, part names, and measure count. |
| get_key_signatureA | Return all key signature changes in the score with their measure positions. Args: score_b64: Base64-encoded score file. input_suffix: Input extension, e.g. "mscz". Returns: List of {"measure": int, "key": str, "mode": str, "fifths": int}, ordered by measure number. |
| list_instrumentsA | Return instrument/part info including transposition and pitch range. Args: score_b64: Base64-encoded score file. input_suffix: Input extension, e.g. "mscz". Returns: List of dicts with part_index, name, abbreviation, is_transposing, transpose (chromatic/diatonic), range (lowest/highest MIDI note name). |
| update_metadataA | Update score metadata fields and return the modified MusicXML. Only fields explicitly provided (non-None) are changed. Args: score_b64: Base64-encoded score file. input_suffix: Input extension, e.g. "mscz". title: Work title. subtitle: Movement title / subtitle. composer: Composer name. lyricist: Lyricist name. copyright: Copyright / rights string. Returns: Modified MusicXML as a UTF-8 string. |
| analyze_harmonyA | Analyze chord progressions and tonal center using music21. Requires Args: score_b64: Base64-encoded score file. input_suffix: Input extension, e.g. "mscz". Returns: Dict with detected_key, confidence, and a list of chords [{offset, measure, chord, roman_numeral}, ...]. |
| apply_styleB | Apply a MuseScore style file (.mss) to a score and re-export. Args: score_b64: Base64-encoded score file. input_suffix: Input extension, e.g. "mscz". style_b64: Base64-encoded .mss style file content. Returns: Base64-encoded mscz with the style applied. |
| run_pluginA | Run a MuseScore QML plugin on a score. The plugin must already be installed in MuseScore's plugin directory. Plugins can perform score manipulations (e.g. note coloring, analysis). Args: score_b64: Base64-encoded score file. input_suffix: Input extension, e.g. "mscz". plugin_name: Name of the plugin as registered in MuseScore (without .qml). Returns: Base64-encoded mscz after plugin execution. |
| create_from_musicxmlA | Convert a MusicXML string into a MuseScore .mscz file. Useful for creating MuseScore files from externally generated MusicXML. Args: musicxml: MusicXML content as a UTF-8 string. Returns: Base64-encoded mscz file. |
| midi_to_scoreA | Convert a MIDI file to a MuseScore .mscz file. Args: midi_b64: Base64-encoded MIDI (.mid) file content. quantization: Quantization resolution as a note value denominator (4=quarter, 8=eighth, 16=sixteenth, 32=thirty-second). Default is "16". midi_import_options_b64: Optional base64-encoded MIDI import options JSON file (MuseScore's -M flag format). Returns: Base64-encoded mscz file. |
| watch_folderA | Watch a folder for new .mscz files and auto-convert them. Monitors the folder for up to Args: folder_path: Absolute path to the folder to watch. output_formats: List of output formats, e.g. ["pdf", "musicxml"]. output_folder: Where to write converted files. Defaults to folder_path. duration_seconds: How long to watch (max 300s). Returns: {"converted": [{"source": str, "outputs": [str, ...]}, ...], "errors": [{"source": str, "error": str}, ...]} |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
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/strongbeen04/MUSESCORE-MCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server