MuseScore MCP Server
MuseScore MCP-Server
Ein Model Context Protocol (MCP)-Server, der eine programmgesteuerte Kontrolle über MuseScore durch ein WebSocket-basiertes Plugin-System ermöglicht. Dies erlaubt KI-Assistenten wie Claude, Musik zu komponieren, Liedtexte hinzuzufügen, durch Partituren zu navigieren und MuseScore direkt zu steuern.

Voraussetzungen
MuseScore 3.x oder 4.x
Python 3.8+
Claude Desktop oder ein kompatibler MCP-Client
Related MCP server: Ableton Copilot MCP
Einrichtung
1. Installieren des MuseScore-Plugins
Speichern Sie zuerst den QML-Plugin-Code in Ihrem MuseScore-Plugin-Verzeichnis:
macOS: ~/Documents/MuseScore4/Plugins/musescore-mcp-websocket.qml
Windows: %USERPROFILE%\Documents\MuseScore4\Plugins\musescore-mcp-websocket.qml
Linux: ~/Documents/MuseScore4/Plugins/musescore-mcp-websocket.qml
2. Aktivieren des Plugins in MuseScore
Öffnen Sie MuseScore
Gehen Sie zu Plugins → Plugin-Manager
Suchen Sie "MuseScore API Server" und aktivieren Sie das Kontrollkästchen
Klicken Sie auf OK
3. Einrichten der Python-Umgebung
git clone <your-repo>
cd mcp-agents-demo
python -m venv .venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate
pip install fastmcp websockets4. Konfigurieren von Claude Desktop
Fügen Sie dies Ihrer Claude Desktop-Konfigurationsdatei hinzu:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"musescore": {
"command": "/path/to/your/project/.venv/bin/python",
"args": [
"/path/to/your/project/server.py"
]
}
}
}Hinweis: Aktualisieren Sie die Pfade, damit sie Ihrem tatsächlichen Projektstandort entsprechen.
Ausführen des Systems
Reihenfolge der Vorgänge
Starten Sie zuerst MuseScore mit einer geöffneten Partitur
Starten Sie das MuseScore-Plugin: Gehen Sie zu Plugins → MuseScore API Server
Sie sollten eine Konsolenausgabe sehen:
"Starting MuseScore API Server on port 8765"
Starten Sie dann den Python MCP-Server oder starten Sie Claude Desktop neu
[Fügen Sie hier Screenshots verschiedener Funktionen ein, wie Harmonisierung, Melodieschreiben, als gezoomte GIFs]
Entwicklung und Tests
Verwenden Sie für die Entwicklung die MCP-Entwicklungstools:
# Install MCP dev tools
pip install mcp
# Test your server
mcp dev server.py
# Check connection status
mcp dev server.py --inspectAnzeigen der Konsolenausgabe
Um die Konsolenausgabe des MuseScore-Plugins zu sehen, starten Sie MuseScore über das Terminal:
macOS:
/Applications/MuseScore\ 4.app/Contents/MacOS/mscoreWindows:
cd "C:\Program Files\MuseScore 4\bin"
MuseScore.exeLinux:
musescore4Funktionen
Dieser MCP-Server bietet eine umfassende Steuerung von MuseScore.
🌟 NEU in diesem Fork: Integrierte automatische, fehlerfreie mehrstimmige Polyphonie & temporales Layout-Mapping zu LilyPond!
Navigation & Cursor-Steuerung
get_cursor_info()- Aktuelle Cursorposition und Auswahl-Informationen abrufengo_to_measure(measure)- Zu einem bestimmten Takt navigierengo_to_beginning_of_score()/go_to_final_measure()- Zum Anfang/Ende navigierennext_element()/prev_element()- Cursor Element für Element bewegennext_staff()/prev_staff()- Zwischen Notensystemen wechselnselect_current_measure()- Den gesamten aktuellen Takt auswählenselect_custom_range(start_tick, end_tick, start_staff, end_staff)- Werkzeug zum Extrahieren von Phrasierungen über Takte und Notensysteme hinweg
Polyphonie & LilyPond-Integration
Temporales Rhythmus-Padding: Stimmen mit Lücken oder Pausen erhalten automatisch LilyPond-Platzhaltersequenzen (
s4.), um ihren mathematischen Platz präzise zu halten.Gleichzeitiges Stimmen-Rendering: Vollständige 4-stimmige (
\voiceOne,\voiceTwousw.) Arrays, die korrekt strukturiert und pro Notensystem für die erweiterte Agentenverarbeitung aufgeteilt sind.
Erstellen von Noten & Pausen
add_note(pitch, duration, advance_cursor_after_action)- Noten mit MIDI-Tonhöhe hinzufügenadd_rest(duration, advance_cursor_after_action)- Pausen hinzufügenadd_tuplet(duration, ratio, advance_cursor_after_action)- Triolen/N-tolen hinzufügen
Taktverwaltung
insert_measure()- Takt an der aktuellen Position einfügenappend_measure(count)- Takte am Ende der Partitur anhängendelete_selection(measure)- Aktuelle Auswahl oder bestimmten Takt löschen
Liedtexte & Text
add_lyrics_to_current_note(text)- Liedtext zur aktuellen Note hinzufügenadd_lyrics(lyrics_list)- Liedtexte stapelweise zu mehreren Noten hinzufügenset_title(title)- Titel der Partitur festlegen
Partitur-Informationen
get_score()- Vollständige Partituranalyse und -struktur abrufenping_musescore()- Verbindung zu MuseScore testenconnect_to_musescore()- WebSocket-Verbindung herstellen
Dienstprogramme
undo()- Letzte Aktion rückgängig machenset_time_signature(numerator, denominator)- Taktart ändernprocessSequence(sequence)- Mehrere Befehle stapelweise ausführen
Musikbeispiele
Schauen Sie im Ordner /examples nach MuseScore-Beispieldateien, die verschiedene Musikstile demonstrieren:
Asian Instrumental - Traditionelles, asiatisch inspiriertes Instrumentalstück
String Quartet - Klassisches Streichquartett-Arrangement
Jedes Beispiel enthält:
.mscz- MuseScore-Datei (bearbeitbar).pdf- Notenblatt.mp3- Audio-Vorschau
Anwendungsbeispiele
Erstellen einer einfachen Melodie
# Set up the score
await set_title("My First Song")
await go_to_beginning_of_score()
# Add notes (MIDI pitch: 60=C, 62=D, 64=E, etc.)
await add_note(60, {"numerator": 1, "denominator": 4}, True) # Quarter note C
await add_note(64, {"numerator": 1, "denominator": 4}, True) # Quarter note E
await add_note(67, {"numerator": 1, "denominator": 4}, True) # Quarter note G
await add_note(72, {"numerator": 1, "denominator": 2}, True) # Half note C
# Add lyrics
await go_to_beginning_of_score()
await add_lyrics_to_current_note("Do")
await next_element()
await add_lyrics_to_current_note("Mi")
await next_element()
await add_lyrics_to_current_note("Sol")
await next_element()
await add_lyrics_to_current_note("Do")Stapelverarbeitung
# Add multiple lyrics at once
await add_lyrics(["Twin-", "kle", "twin-", "kle", "lit-", "tle", "star"])
# Use sequence processing for complex operations
sequence = [
{"action": "goToBeginningOfScore", "params": {}},
{"action": "addNote", "params": {"pitch": 60, "duration": {"numerator": 1, "denominator": 4}, "advanceCursorAfterAction": True}},
{"action": "addNote", "params": {"pitch": 64, "duration": {"numerator": 1, "denominator": 4}, "advanceCursorAfterAction": True}},
{"action": "addRest", "params": {"duration": {"numerator": 1, "denominator": 4}, "advanceCursorAfterAction": True}}
]
await processSequence(sequence)Star-Verlauf
Fehlerbehebung
Verbindungsprobleme
"Not connected to MuseScore":
Stellen Sie sicher, dass MuseScore mit einer geöffneten Partitur läuft
Führen Sie das MuseScore-Plugin aus (Plugins → MuseScore API Server)
Überprüfen Sie, ob Port 8765 nicht durch eine Firewall blockiert wird
Plugin-Probleme
Plugin erscheint nicht: Überprüfen Sie, ob sich die
.qml-Datei im richtigen Plugin-Verzeichnis befindetPlugin lässt sich nicht aktivieren: Starten Sie MuseScore neu, nachdem Sie die Plugin-Datei platziert haben
Keine Konsolenausgabe: Starten Sie MuseScore über das Terminal, um Debug-Meldungen zu sehen
Python-Server-Probleme
"No server object found": Das Server-Objekt muss auf Modulebene
mcp,serveroderappheißenWebSocket-Fehler: Stellen Sie sicher, dass das MuseScore-Plugin läuft, bevor Sie den Python-Server starten
Verbindungs-Timeout: Das MuseScore-Plugin muss aktiv laufen, nicht nur aktiviert sein
API-Einschränkungen
Liedtexte: Nur die erste Strophe wird in der MuseScore 3.x Plugin-API unterstützt
Titel-Einstellung: Verwendet aufgrund von Frame-Zugriffsbeschränkungen mehrere Fallback-Methoden
Auswahl-Persistenz: Einige Vorgänge können die aktuelle Auswahl beeinflussen
Dateistruktur
mcp-agents-demo/
├── .venv/
├── server.py # Python MCP server entry point
├── musescore-mcp-websocket.qml # MuseScore plugin
├── requirements.txt
├── README.md
└── src/ # Source code modules
├── __init__.py
├── client/ # WebSocket client functionality
│ ├── __init__.py
│ └── websocket_client.py
├── tools/ # MCP tool implementations
│ ├── __init__.py
│ ├── connection.py # Connection management tools
│ ├── navigation.py # Score navigation tools
│ ├── notes_measures.py # Note and measure manipulation
│ ├── sequences.py # Batch operation tools
│ ├── staff_instruments.py # Staff and instrument tools
│ └── time_tempo.py # Timing and tempo tools
└── types/ # Type definitions
├── __init__.py
└── action_types.py # WebSocket action type definitionsMIDI-Tonhöhenreferenz
Allgemeine MIDI-Tonhöhenwerte als Referenz:
Eingestrichenes C (Middle C): 60
C-Dur-Tonleiter: 60, 62, 64, 65, 67, 69, 71, 72
Chromatisch: C=60, C#=61, D=62, D#=63, E=64, F=65, F#=66, G=67, G#=68, A=69, A#=70, B=71
Dauer-Referenz
Dauerformat: {"numerator": int, "denominator": int}
Ganze Note:
{"numerator": 1, "denominator": 1}Halbe Note:
{"numerator": 1, "denominator": 2}Viertelnote:
{"numerator": 1, "denominator": 4}Achtelnote:
{"numerator": 1, "denominator": 8}Punktierte Viertelnote:
{"numerator": 3, "denominator": 8}
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseDqualityDmaintenanceA Model Context Protocol server that allows AI assistants like Claude and Cursor to create music and control Sonic Pi programmatically through OSC messages.23915MIT
- AlicenseCqualityBmaintenanceA Model Context Protocol server that enables real-time interaction with Ableton Live, allowing AI assistants to control song creation, track management, clip operations, and audio recording workflows.237992MIT
- AlicenseNot gradedqualityCmaintenanceA Model Context Protocol server that enables AI assistants like Claude to generate lyrics, songs, and background music through Mureka's APIs.109MIT
- AlicenseBqualityBmaintenanceA Model Context Protocol server that enables AI agents to create fully mixed and mastered tracks in REAPER DAW, supporting project management, MIDI composition, audio recording, and mixing automation.58124MIT
Related MCP Connectors
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to control Unreal E…
A Model Context Protocol server for Wix AI tools
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/ghchen99/mcp-musescore'
If you have feedback or need assistance with the MCP directory API, please join our Discord server