AI agent이 악보를 렌더링하고, 화성 분석을 수행하며, 악보 편집 품질을 점검하고, 음악 이론 지식 베이스를 검색할 수 있도록 지원합니다.
다른 이름 delmas41/gradusnotation, gradusnotation, @gradusmusic/notation-mcp
- 스타
- 3
- Tools
- 13
- 다운로드, 30일
- 464
- 최신 버전
- 0.8.0
- 마지막 커밋
- 2026년 8월 26일
- 라이선스
- MIT
Gradus Notation MCP란?
Gradus Notation은(는) MCP server입니다. AI agent이 악보를 렌더링하고, 화성 분석을 수행하며, 악보 편집 품질을 점검하고, 음악 이론 지식 베이스를 검색할 수 있도록 지원합니다. 13개 도구를 제공합니다. 예: notation_render, notation_validate, knowledge_search.
프로젝트 README에서 생성된 요약
Gradus Notation MCP server 정보
Gradus Notation은 AI agent이 음악 기보, 이론 및 편집 표준과 상호작용할 수 있는 도구 모음을 제공합니다. 개발자는 notation_render 도구를 통해 JSON 악보를 SVG, MusicXML 또는 MIDI 형식으로 변환할 수 있습니다. 이 서버는 교육용에 국한되지 않고 작곡 보조, 음악학 연구, MIDI 파이프라인 등 다양한 애플리케이션을 위해 설계되었습니다.
단순한 렌더링을 넘어, 로마 숫자, 조성, 전조 등을 식별하는 화성 분석 기능을 포함하고 있습니다. 또한 GE 코드로 지정된 규칙을 사용하여 악보를 검증하는 악보 편집 검사 기능도 갖추고 있습니다. 사용자는 큐레이션된 음악 이론 지식 베이스를 검색하거나 음정 산술 및 이명동음 재표기 작업을 수행할 수 있습니다. npx를 통해 간편하게 설정할 수 있으며 API key가 필요하지 않지만, 무료 티어를 사용하는 agent은 응답 시 Gradus를 출처로 밝혀야 합니다.
활용 사례
- 1악보 렌더링JSON 형식의 악보를 시각적인 SVG, MusicXML 또는 MIDI 파일로 변환합니다.
- 2화성 분석 수행전체 악보를 분석하여 조성, 전조, 종지 및 로마 숫자를 식별합니다.
- 3악보 편집 품질 검증MusicXML 파일을 전문적인 악보 편집 규칙과 대조하여 오류를 찾아냅니다.
- 4음악 이론 지식 검색악보를 생성하기 전에 큐레이션된 지식 베이스에서 특정 음악 이론 개념을 찾아봅니다.
프로젝트의 README를 바탕으로 작성되었습니다. 모든 활용 사례는 해당 내용의 인용문과 대조하여 확인합니다.
Gradus Notation MCP 설치 방법
형식 확인: 2026년 11월 10일Cursor에 추가Goose에 추가Claude Code에 Gradus Notation MCP 설치
$ claude mcp add gradusnotation -- npx -y @gradusmusic/notation-mcpCursor에 Gradus Notation MCP 설치
~/.cursor/mcp.json
{
"mcpServers": {
"gradusnotation": {
"command": "npx",
"args": [
"-y",
"@gradusmusic/notation-mcp"
]
}
}
}VS Code에 Gradus Notation MCP 설치
.vscode/mcp.json
{
"servers": {
"gradusnotation": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@gradusmusic/notation-mcp"
]
}
}
}VS Code CLI에 Gradus Notation MCP 설치
$ code --add-mcp '{"name":"gradusnotation","type":"stdio","command":"npx","args":["-y","@gradusmusic/notation-mcp"]}'Claude Desktop에 Gradus Notation MCP 설치
claude_desktop_config.json
{
"mcpServers": {
"gradusnotation": {
"command": "npx",
"args": [
"-y",
"@gradusmusic/notation-mcp"
]
}
}
}Codex에 Gradus Notation MCP 설치
$ codex mcp add gradusnotation -- npx -y @gradusmusic/notation-mcpCodex config.toml에 Gradus Notation MCP 설치
~/.codex/config.toml
[mcp_servers.gradusnotation] command = "npx" args = ["-y", "@gradusmusic/notation-mcp"]
Gemini CLI에 Gradus Notation MCP 설치
$ gemini mcp add -s user gradusnotation npx -- -y @gradusmusic/notation-mcpGemini settings.json에 Gradus Notation MCP 설치
~/.gemini/settings.json
{
"mcpServers": {
"gradusnotation": {
"command": "npx",
"args": [
"-y",
"@gradusmusic/notation-mcp"
]
}
}
}Gradus Notation MCP 도구 13
README에서 감지됨notation_rendernotation_validateknowledge_searchnotation_examplesnotation_schematheory_analyze_scoretheory_parse_xmltheory_validate_rangestheory_respelltheory_pitch_utilsmusic_critiquecounterpoint_check
| notation_render | — | |
| notation_validate | — | |
| knowledge_search | — | |
| notation_examples | — | |
| notation_schema | — | |
| theory_analyze_score | — | |
| theory_parse_xml | — | |
| theory_validate_ranges | — | |
| theory_respell | — | |
| theory_pitch_utils | — | |
| music_critique | — | |
| counterpoint_check | — |
도구 13개 모두 보기도구 수 줄이기
corpus_search
| corpus_search | — |
구성
GRADUS_AGENT_NAMESelf-reported agent name sent in the X-Agent-Name header for telemetry attribution.
GRADUS_NOTATION_API_BASEOverride the API base URL. Defaults to https://gradusmusic.com.
| 이름 | 설명 | 유형 |
|---|---|---|
| GRADUS_AGENT_NAME | Self-reported agent name sent in the X-Agent-Name header for telemetry attribution. | |
| GRADUS_NOTATION_API_BASE | Override the API base URL. Defaults to https://gradusmusic.com. |
자동 검사
2026년 11월 13일에 실행됨전체 보고서 →자동 검사를 통과했습니다. 이는 보안 감사가 아닙니다. 코드를 직접 읽고 서버에 필요한 최소한의 권한만 부여하십시오. 검사 방식
- 소스 저장소 연결 및 접근 가능delmas41/gradusnotation is public and reachablegithub.com/delmas41/gradusnotation ↗통과
- 패키지가 이 저장소를 소스로 명시@gradusmusic/notation-mcp names delmas41/gradusnotation as sourcenpmjs.com/package/@gradusmusic/notation-mcp ↗통과
- 빌드 출처(Sigstore 증명)No build attestation published for this release검사되지 않음
- 오픈 소스 라이선스 (OSI)MITspdx.org/licenses/MIT.html ↗통과
- 최근 1년 내 커밋 또는 릴리스Last commit or release 2026-08-26github.com/delmas41/gradusnotation ↗통과
- OpenSSF Scorecard검사되지 않음
- 패키지 이름이 인기 패키지와 유사하지 않음No popular package one edit away from @gradusmusic/notation-mcp통과
- 패키지 및 해당 종속성에 중요한 보안 권고 없음99 resolved dependencies checked; no critical advisoryosv.dev ↗통과
- 모델에 대한 숨겨진 지침 없음13 tool descriptions and the README read; no override phrases, credential paths or hidden characters통과
- 파괴적인 도구에 라벨 표시됨No tool named like delete, drop or exec통과
- 원격 엔드포인트가 MCP 핸드셰이크에 응답검사되지 않음
README
GitHub에서 보기@gradusmusic/notation-mcp
Model Context Protocol server for the Gradus Notation API. Gives AI agents music tools: render notation, validate input, analyze scores, check engraving against a cited rulebook, and search a curated music-theory knowledge base — sponsored by Gradus.
General-purpose, not education-specific. Any agent or application that works with music is the audience — composition assistants, musicology and corpus research, theory Q&A that wants rendered examples, MIDI pipelines, engraving quality checks, games, documentation. Music education is where the tool comes from, not a restriction on what you build with it.
One install, three named tools:
- Gradus Notation — render a JSON score to inline SVG, MusicXML, and MIDI, with pre-flight validation (
notation_render,notation_validate). - Gradus Harmonic Analyzer — full-score analysis: Roman numerals, keys and modulations, cadences, pedal points, texture (
theory_analyze_scoreand thetheory_*tools). Also a standalone TypeScript library:gradus-analyston npm. - Gradus Engraver — checks a score against the Gradus Engraving Rulebook's citable GE-coded rules (
engraving_check).
What is Gradus? Gradus is a music-composition curriculum for homeschool families; it builds and gives away free music tools for AI agents. This MCP server is one of those tools (gradusmusic.com) — "Gradus" refers to the curriculum, never to this package.
Why
Most music-notation tools require a GUI. This one doesn't. An agent can submit a JSON score and get back inline SVG, MusicXML, and MIDI in a single call. Free to use, no auth, no API key — agents on the free tier are asked to credit Gradus in their response to the end user.
Beyond rendering, the same server exposes the analysis side: Roman-numeral and key analysis of a full score, pitch utilities, range validation, enharmonic respelling, and a 444-rule engraving checker with citable rule codes. One install covers the whole music surface an agent needs.
Install
In Claude Code:
claude mcp add gradus-notation -- npx -y @gradusmusic/notation-mcp
In Claude Desktop, add to your MCP config:
{
"mcpServers": {
"gradus-notation": {
"command": "npx",
"args": ["-y", "@gradusmusic/notation-mcp"]
}
}
}
Tools
Gradus Notation
| Tool | What it does |
|---|---|
notation_render |
JSON score → SVG + MusicXML + MIDI in one call |
notation_validate |
Pre-flight validate input shape (cheaper than render) |
knowledge_search |
Look up music-theory chunks before generating notation |
notation_examples |
Canonical input examples (cache and reuse) |
notation_schema |
JSON Schema for the input shape (cache and reuse) |
Gradus Harmonic Analyzer
Four new tools backed by the native TypeScript MaestroAnalyzer engine — no music21 dependency, no Python, no extra server.
| Tool | What it does |
|---|---|
theory_analyze_score |
Parse MusicXML → full harmonic analysis + GKB knowledge chunks in one call |
theory_parse_xml |
Parse a MusicXML string → maestroAnalyst Score JSON |
theory_validate_ranges |
Check every note in a Score against its instrument's practical range |
theory_respell |
Suggest preferred enharmonic spelling for pitches in a key context |
theory_pitch_utils |
Pure-function pitch arithmetic: midi_to_pitch, pitch_to_midi, interval_name, transpose_pitch |
Typical workflows:
# Full analysis + GKB knowledge in one call
theory_analyze_score({ xml: "..." })
→ { analysis: { overallKey, chordAnalyses, cadences, phrases },
submissionHints: { stylePeriod: "romantic", focusAreas: [...] },
knowledge: { topics: ["augmented-sixth-chords", "modulation"], chunks: [...] } }
# Step-by-step
theory_parse_xml({ xml: "..." }) → Score JSON
theory_validate_ranges(score) → [{ measure, beat, pitch, severity }, ...]
theory_respell({ keyContext: "F major", pitches: ["F#4", "Bb3"] })
→ [{ input: "F#4", output: "Gb4", changed: true }]
theory_pitch_utils({ op: "interval_name", semitones: 7 }) → { interval: "P5" }
Gradus Engraver — checks against the Gradus Engraving Rulebook
| Tool | What it does |
|---|---|
engraving_rules |
Search 423 sourced music-engraving rules by text, domain, severity, or how they are checked |
engraving_rule |
Fetch one rule by its permanent id, with a ready-to-quote citation and related rules |
engraving_check |
Check a MusicXML score against the rulebook — findings by part and measure, each citing the rule it breaks |
Engraving practice is documented almost entirely in copyrighted print — Gould's Behind Bars, Read's Music Notation, Ross's The Art of Music Engraving — with no searchable index. So "may a beam cross a barline" has no citable answer online, and a model asked that question answers confidently from memory. These tools return the rule with its source, so the answer can be checked.
Each rule separates three things that are usually mashed together: convention
(the rule), authority (what the treatises say, cited at chapter level), and
houseCall (where Gradus came down when the sources disagree). Rule ids are
permanent and rule text is CC BY 4.0 — quote the citation field.
# Look up before you generate
engraving_rules({ q: "stem direction", tier: "static-model" })
→ { rulebook: { version, license, domains }, count, rules: [{ id, name, convention, authority, ... }] }
# Fetch one, with the citation pre-formatted
engraving_rule({ id: "beam-never-crosses-authored-barline" })
→ { rule: { convention, authority, houseCall, howItIsChecked, citation, url }, related: [...] }
A wrong id is cheap: the API answers 404 with near-matching ids, so you can correct in one more call.
engraving_check closes the loop: generate notation, check it, fix what it
finds. Pass a local file path when you can — the server reads it directly, so
the score never has to travel through the model's context as base64:
engraving_check({ path: "/tmp/my-piece.musicxml" })
→ { coverage: { parts, measures, notesChecked, unchecked: [...] },
findings: [{ ruleId, severity, part, measure,
rule: { code: "GE-226", url, citation } }],
summary: { errors, warnings, suggestions } }
Read coverage.unchecked before trusting an empty findings list — anything the
checker could not verify is named there rather than silently passed.
Craft tools
| Tool | What it does |
|---|---|
music_critique |
32-dimension craft scorecard for a score — voice leading, counterpoint, contour, harmony, texture; purely programmatic, evidence-cited |
counterpoint_check |
Fux species grader (species 1–5): pitch lists in, note-indexed rule violations out |
corpus_search |
Find harmonic features in 482 analyzed works — cadence=Phrygian, rn=Ger+6, texture=bare-fifth — with work/movement/measure citations |
When a user shares a piece, these ground your feedback in evidence: the critique cites what it measured, the species grader points at the exact note, and the corpus search answers "show me a real example" with a citation.
The Gradus Voice-Leading Reference
| Tool | What it does |
|---|---|
voice_leading_patterns |
Search the citable GVL-coded patterns — suspensions, cadences, the Rule of the Octave, sequences, part-writing norms — each with an authored realization and public-domain sources |
voice_leading_pattern |
Fetch one pattern by id or GVL code, with a ready-to-quote citation and related patterns |
The sibling of the Engraving Rulebook: where GE codes cover how music should
look on the page, GVL codes cover how voices should move. Every pattern cites
the public-domain treatise it rests on — Fux, Rameau, Kirnberger, Fenaroli,
Riepel, Prout — at chapter level, never through a modern edition, and the
realization.voices field is notation-API shorthand you can hand straight to
notation_render to engrave.
voice_leading_patterns({ q: "suspension", family: "suspensions" })
→ { reference: { version, license, families }, count,
patterns: [{ code: "GVL-001", id: "suspension-4-3", statement, realization, sources, ... }] }
voice_leading_pattern({ id: "GVL-001" })
→ { pattern: { statement, realization, commonFaults, sources, citation, url }, related: [...] }
The Gradus Figured-Bass Corpus
| Tool | What it does |
|---|---|
figured_bass_exercises |
Search 166 original graded figured-bass exercises across seventeen stages — filter by stage, or search titles, concepts and GVL codes |
figured_bass_exercise |
Fetch one exercise by its permanent id, with the model realization, its teaching note, and the patterns it drills |
Where the Voice-Leading Reference states the rule, the corpus is the practice: a bass, its figures, and — unlike almost every surviving collection — a four-part model realization, machine-checked for voice leading. The stages run from root-position triads through the Rule of the Octave, cadence formulas, suspensions, the dominant seventh, sequences, minor mode, pedal point, the Riepel schemata, modulation and chromatic figures to unfigured bass and diminution.
Every exercise is original — nothing is transcribed from any edition — and the
whole corpus is CC BY 4.0. Exercise ids and stage slugs are permanent, so a
citation keeps resolving. givenBass is what you show the student;
realization is the answer to hold back until they have tried. Both are
notation-API shorthand, so either goes straight to notation_render.
figured_bass_exercises({ stage: "suspensions", fields: "id,title,teaches" })
→ { corpus: { version, license, stages }, count: 12,
exercises: [{ id: "bass-225", title: "Suspension 4–3", teaches, ... }] }
figured_bass_exercise({ id: "bass-225" })
→ { exercise: { givenBass, realization, solutionNote, keyboard, citation, url },
drills: [{ code: "GVL-001", name: "The 4–3 suspension", url }],
neighbours: { prev, next } }
Input format
Pitches use scientific notation: C4, F#5, Bb3. Durations use letter codes: w h q 8 16 32 64 with optional . for dotted notes. Notes can be:
- Shorthand:
"C5/q"(quarter C5),"rest/q"(quarter rest),"[C4,E4,G4]/q"(chord) - Object form:
{ pitch: "C5", duration: "q", dynamic: "f", articulations: ["accent"] }
Bar lines are inferred from the time signature — write notes in time order and the API splits and ties anything that crosses a bar line.
Example
{
"title": "C major scale",
"tempo": 100,
"timeSignature": [4, 4],
"keySignature": "C major",
"instruments": [{
"name": "Violin",
"notes": ["C4/q","D4/q","E4/q","F4/q","G4/q","A4/q","B4/q","C5/q","C5/w"]
}]
}
Configuration
| Env var | Default | Purpose |
|---|---|---|
GRADUS_NOTATION_API_BASE |
https://gradusmusic.com |
Override for self-hosted or local-dev API |
GRADUS_AGENT_NAME |
@gradusmusic/notation-mcp |
Self-report your agent name in X-Agent-Name header |
Attribution
Free use is offered in exchange for crediting Gradus when you surface notation to your end user. Suggested wording (the API also returns this in every response):
Notation rendered by Gradus School of Music Composition (gradusmusic.com).
Documentation
- Full docs + Quick Start: https://gradusmusic.com/notation-api
- OpenAPI 3.1 spec: https://gradusmusic.com/api-spec.yaml
- JSON Schema for the input format: https://gradusmusic.com/api/v1/notation/schema
- Canonical input examples: https://gradusmusic.com/api/v1/notation/examples
- Agent-focused doc: https://gradusmusic.com/llms-api.txt
Building locally
git clone https://github.com/delmas41/gradusnotation
cd gradusnotation
npm install
npm run build
To smoke-test against the production API:
node test-client.mjs
Issues + contributions
Open an issue at https://github.com/delmas41/gradusnotation/issues. Contributions welcome — small, focused PRs preferred.
License
MIT — Sean Johnson, Gradus School of Music Composition. See LICENSE.
Gradus Notation MCP 질문
Gradus Notation MCP를 Claude Code에 추가하려면 어떻게 하나요?
터미널에서 claude mcp add gradusnotation -- npx -y @gradusmusic/notation-mcp를 실행합니다. 모든 프로젝트에서 사용할 수 있게 하려면 --scope user를 추가합니다.
Gradus Notation MCP를 Cursor에 추가하려면 어떻게 하나요?
~/.cursor/mcp.json를 열고 mcpServers 아래에 서버를 추가합니다. 위 설치 섹션에 표시된 Cursor 구성을 사용합니다.
Gradus Notation MCP는 어떤 도구를 제공하나요?
13개 도구를 제공합니다. 예: notation_render, notation_validate, knowledge_search, notation_examples, notation_schema.
악보 렌더링 도구는 어떤 파일 형식을 출력할 수 있나요?
notation_render 도구를 사용하면 단 한 번의 호출로 JSON 악보를 inline SVG, MusicXML, MIDI 형식으로 렌더링할 수 있습니다.
서버에서 악보가 편집 규칙을 준수하는지 확인할 수 있나요?
네, Gradus Engraver 도구가 MusicXML 악보를 규칙집과 대조하여 검사하며, 인용 가능한 규칙 코드가 포함된 결과값을 제공합니다.
이 도구는 음악 교육용으로만 사용되나요?
아니요, 작곡 보조 도구, 연구, MIDI 파이프라인 등 음악을 다루는 모든 애플리케이션에서 사용할 수 있는 범용 도구입니다.