MuseScore MCP Server
MuseScore MCP 서버
WebSocket 기반 플러그인 시스템을 통해 MuseScore를 프로그래밍 방식으로 제어할 수 있는 모델 컨텍스트 프로토콜(MCP) 서버입니다. 이를 통해 Claude와 같은 AI 어시스턴트가 직접 음악을 작곡하고, 가사를 추가하며, 악보를 탐색하고 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 실행
**플러그인(Plugins) → 플러그인 관리자(Plugin Manager)**로 이동
"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 플러그인 실행: 플러그인(Plugins) → 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를 위한 자동화된 완벽한 다성부(Polyphony) 및 시간적 레이아웃 매핑!
탐색 및 커서 제어
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)- 마디를 가로지르는 다중 오선 프레이징 추출을 위한 슬라이싱 도구
다성부(Polyphony) 및 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()- MuseScore 연결 테스트connect_to_musescore()- WebSocket 연결 수립
유틸리티
undo()- 마지막 작업 취소set_time_signature(numerator, denominator)- 박자표 변경processSequence(sequence)- 여러 명령을 일괄 실행
샘플 음악
다양한 음악 스타일을 보여주는 샘플 MuseScore 파일은 /examples 폴더를 확인하세요:
Asian Instrumental - 전통 아시아풍 악기 연주곡
String Quartet - 클래식 현악 4중주 편곡
각 예제 포함 항목:
.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)Star History
문제 해결
연결 문제
"Not connected to MuseScore":
MuseScore가 실행 중이고 악보가 열려 있는지 확인하세요.
MuseScore 플러그인을 실행하세요 (플러그인 → MuseScore API Server).
8765 포트가 방화벽에 의해 차단되지 않았는지 확인하세요.
플러그인 문제
플러그인이 나타나지 않음:
.qml파일이 올바른 플러그인 디렉토리에 있는지 확인하세요.플러그인이 활성화되지 않음: 플러그인 파일을 넣은 후 MuseScore를 재시작하세요.
콘솔 출력 없음: 터미널에서 MuseScore를 실행하여 디버그 메시지를 확인하세요.
Python 서버 문제
"No server object found": 서버 객체는 모듈 수준에서
mcp,server또는app으로 명명되어야 합니다.WebSocket 오류: Python 서버를 시작하기 전에 MuseScore 플러그인이 실행 중인지 확인하세요.
연결 시간 초과: MuseScore 플러그인은 단순히 활성화된 상태가 아니라 실제로 실행 중이어야 합니다.
API 제한 사항
가사: MuseScore 3.x 플러그인 API에서는 첫 번째 절만 지원됩니다.
제목 설정: 프레임 접근 제한으로 인해 여러 대체 방법을 사용합니다.
선택 유지: 일부 작업은 현재 선택 영역에 영향을 줄 수 있습니다.
파일 구조
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 피치 참조
참고용 일반 MIDI 피치 값:
가온 다(Middle C): 60
C 메이저 스케일: 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}2분음표:
{"numerator": 1, "denominator": 2}4분음표:
{"numerator": 1, "denominator": 4}8분음표:
{"numerator": 1, "denominator": 8}점 4분음표:
{"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