MuseScore MCP Server
MuseScore MCP Server
Сервер протокола контекста модели (MCP), обеспечивающий программное управление MuseScore через систему плагинов на основе WebSocket. Это позволяет ИИ-ассистентам, таким как Claude, сочинять музыку, добавлять тексты песен, перемещаться по партитурам и управлять MuseScore напрямую.

Системные требования
MuseScore 3.x или 4.x
Python 3.8+
Claude Desktop или совместимый MCP-клиент
Related MCP server: Ableton Copilot MCP
Установка
1. Установка плагина MuseScore
Сначала сохраните код QML-плагина в папку плагинов MuseScore:
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. Активация плагина в MuseScore
Откройте MuseScore
Перейдите в Плагины → Менеджер плагинов
Найдите "MuseScore API Server" и установите флажок, чтобы включить его
Нажмите OK
3. Настройка среды Python
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. Настройка Claude Desktop
Добавьте в файл конфигурации Claude Desktop:
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"
]
}
}
}Примечание: Обновите пути в соответствии с фактическим расположением вашего проекта.
Запуск системы
Порядок действий
Сначала запустите MuseScore с открытой партитурой
Запустите плагин MuseScore: Перейдите в Плагины → MuseScore API Server
Вы должны увидеть вывод в консоли:
"Starting MuseScore API Server on port 8765"
Затем запустите Python MCP-сервер или перезапустите Claude Desktop
[вставьте скриншот различного функционала, гармонизации, написания мелодии в виде анимированных GIF]
Разработка и тестирование
Для разработки используйте инструменты разработки MCP:
# Install MCP dev tools
pip install mcp
# Test your server
mcp dev server.py
# Check connection status
mcp dev server.py --inspectПросмотр вывода консоли
Чтобы увидеть вывод консоли плагина MuseScore, запустите MuseScore из терминала:
macOS:
/Applications/MuseScore\ 4.app/Contents/MacOS/mscoreWindows:
cd "C:\Program Files\MuseScore 4\bin"
MuseScore.exeLinux:
musescore4Функции
Этот MCP-сервер предоставляет комплексное управление MuseScore.
🌟 НОВИНКА в этом форке: Встроенная автоматическая, безупречная многоголосная полифония и отображение временной разметки в LilyPond!
Навигация и управление курсором
get_cursor_info()- Получить информацию о текущей позиции курсора и выделенииgo_to_measure(measure)- Перейти к определенному тактуgo_to_beginning_of_score()/go_to_final_measure()- Перейти к началу/концуnext_element()/prev_element()- Переместить курсор по элементамnext_staff()/prev_staff()- Перемещаться между нотоносцамиselect_current_measure()- Выделить весь текущий тактselect_custom_range(start_tick, end_tick, start_staff, end_staff)- Инструмент выделения для извлечения фраз, охватывающих несколько тактов и нотоносцев
Полифония и интеграция с LilyPond
Временное заполнение ритма: Голоса с пропусками или паузами автоматически получают последовательности заполнителей LilyPond (
s4.) для точного сохранения их математического места.Параллельный рендеринг голосов: Полные 4-голосные массивы (
\voiceOne,\voiceTwoи т.д.), правильно структурированные и разделенные по нотоносцам для продвинутой обработки агентом.
Создание нот и пауз
add_note(pitch, duration, advance_cursor_after_action)- Добавить ноты с использованием MIDI-высоты тонаadd_rest(duration, advance_cursor_after_action)- Добавить паузыadd_tuplet(duration, ratio, advance_cursor_after_action)- Добавить туоли (триоли и т.д.)
Управление тактами
insert_measure()- Вставить такт в текущую позициюappend_measure(count)- Добавить такты в конец партитурыdelete_selection(measure)- Удалить текущее выделение или конкретный такт
Тексты песен и текст
add_lyrics_to_current_note(text)- Добавить текст к текущей нотеadd_lyrics(lyrics_list)- Пакетное добавление текста к нескольким нотамset_title(title)- Установить название партитуры
Информация о партитуре
get_score()- Получить полный анализ и структуру партитурыping_musescore()- Проверить соединение с MuseScoreconnect_to_musescore()- Установить WebSocket-соединение
Утилиты
undo()- Отменить последнее действиеset_time_signature(numerator, denominator)- Изменить размерprocessSequence(sequence)- Выполнить несколько команд пакетом
Примеры музыки
Ознакомьтесь с папкой /examples для получения примеров файлов MuseScore, демонстрирующих различные музыкальные стили:
Asian Instrumental - Традиционное инструментальное произведение в азиатском стиле
String Quartet - Аранжировка для струнного квартета
Каждый пример включает:
.mscz- Файл MuseScore (редактируемый).pdf- Ноты.mp3- Аудио-превью
Примеры использования
Создание простой мелодии
# 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")Пакетные операции
# 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)История звезд
Устранение неполадок
Проблемы с подключением
"Not connected to MuseScore":
Убедитесь, что MuseScore запущен и открыта партитура
Запустите плагин MuseScore (Plugins → MuseScore API Server)
Проверьте, что порт 8765 не заблокирован брандмауэром
Проблемы с плагином
Плагин не отображается: Проверьте, находится ли файл
.qmlв правильной папке плагиновПлагин не включается: Перезапустите MuseScore после размещения файла плагина
Нет вывода в консоли: Запустите MuseScore из терминала, чтобы увидеть отладочные сообщения
Проблемы с Python-сервером
"No server object found": Объект сервера должен называться
mcp,serverилиappна уровне модуляОшибки WebSocket: Убедитесь, что плагин MuseScore запущен перед запуском Python-сервера
Тайм-аут соединения: Плагин MuseScore должен быть активно запущен, а не просто включен
Ограничения API
Тексты песен: В API плагина MuseScore 3.x поддерживается только первый куплет
Установка заголовка: Использует несколько резервных методов из-за ограничений доступа к фреймам
Сохранение выделения: Некоторые операции могут влиять на текущее выделение
Структура файлов
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 definitionsСправочник MIDI-высоты тона
Общие значения MIDI-высоты тона для справки:
До первой октавы (Middle C): 60
Гамма До мажор: 60, 62, 64, 65, 67, 69, 71, 72
Хроматическая: C=60, C#=61, D=62, D#=63, E=64, F=65, F#=66, G=67, G#=68, A=69, A#=70, B=71
Справочник длительностей
Формат длительности: {"numerator": int, "denominator": int}
Целая нота:
{"numerator": 1, "denominator": 1}Половинная нота:
{"numerator": 1, "denominator": 2}Четвертная нота:
{"numerator": 1, "denominator": 4}Восьмая нота:
{"numerator": 1, "denominator": 8}Четверть с точкой:
{"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