delmas41/gradusnotation

delmas41/gradusnotation

от delmas41
Рендерит нотную запись (SVG, MusicXML, MIDI), валидирует партитуры, ищет по базе теории музыки и анализирует гармонию. Полезен AI-агентам, работающим с музыкой без графического интерфейса.

@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_score and the theory_* tools). Also a standalone TypeScript library: gradus-analyst on npm.
  • Gradus Engraver — checks a score against the Gradus Engraving Rulebook's citable GE-coded rules (engraving_check).
Инструменты были проиндексированы:
corpus_search

Поиск гармонических особенностей в реальном репертуаре: 482 проанализированных произведения (25+ общедоступных оркестровых частей Бетховена, Брамса, Брукнера, Дворжака, Чайковского, Малера, Холста, Равеля, Баха + 400+ хоралов Баха; 41 000 тактов). Запрос по типу каденции, классу хроматического аккорда, типу фактуры, ступени педали или тональности модуляции; получение ссылок на произведение / часть / такт. КОГДА ИСПОЛЬЗОВАТЬ: когда нужно привести пример из репертуара ПО ПАМЯТИ — выдуманные ссылки это аналог выдуманной гармонии. «Покажи фригийскую каденцию», «найди немецкую увеличенную сексту», «пассаж с доминантовой педалью», «часть с модуляцией в ми-бемоль мажор» — сначала ищи, потом цитируй полученные такты. КОГДА НЕ ИСПОЛЬЗОВАТЬ: для анализа партитуры, которая У ВАС есть (theory_analyze_score); для объяснений теории (knowledge_search). Учтите: это АВТОМАТИЧЕСКИЕ результаты анализа — точность опубликована на gradusmusic.com/harmony-benchmark; сверяйтесь с партитурой перед утверждениями. ВХОДНЫЕ ДАННЫЕ: хотя бы одно из { cadence: "PAC"|"IAC"|"HC"|"DC"|"Plagal"|"Phrygian", rn: хроматическое обозначение в ASCII ("V/V", "viio7/vi", "bII6", "Ger+6", "N6"), texture: "bare-fifth"|"unison"|"octaves"|"bare-third"|"dyad"|"silence", pedal: ступень ("1", "5", "b3"), key: "Eb major" }. Опционально: work (фильтр по одному произведению), limit (по умолчанию 20, максимум 100). ВЫХОДНЫЕ ДАННЫЕ (JSON): по каждому признаку { total, matches: [{ workId, title, movement, measure | measureStart+measureEnd }] } плюс сводка по корпусу и примечание о точности. ТИПИЧНАЯ ЗАДЕРЖКА: <300 мс (индексированный поиск — без сканирования всего корпуса на каждый запрос).

Параметры
  • cadencestring

    Тип каденции: PAC, IAC, HC, DC, плагальная, фригийская.

  • keystring

    Устойчивая тональность раздела (цель модуляции), например, «Eb major».

  • limitinteger

    Максимум совпадений на функцию (по умолчанию 20).

  • pedalstring

    Педальный тон, ступень лада: 1, 5, b3…

  • rnstring

    Хроматическое обозначение аккорда, в виде ASCII: V/V, viio7/vi, bII6, Ger+6, N6, V7sus4…

  • texturestring

    Чистая квинта, унисон, октавы, чистая терция, диада, тишина.

  • workstring

    Необязательный фильтр по идентификатору работы, например beethoven-sym5.

counterpoint_check
Параметры
  • cantusFirmusany[]обязательный

    Строки высоты тона («D4») или объекты { pitch, dur? }. Заданный голос, целые ноты.

  • counterpointany[]обязательный

    Строки с высотой звука или объекты { pitch, dur?, tied?, rest? }. В виде 5 длительность должна быть явно указана для каждой ноты.

  • incompleteboolean

    Истинно при проверке строки, которая ещё пишется (ослабляет правила завершения).

  • modestring

    Музыкальный лад кантуса, например «D Dorian» — включает тренера каденций musica-ficta.

  • speciesenumобязательный

    1 нота против ноты, 2 = 2:1, 3 = 4:1, 4 задержания, 5 фиоритурный.

engraving_check

Проверяет партитуру MusicXML на соответствие The Gradus Engraving Rulebook. Выполняет более 30 статически проверяемых правил (арифметика тактов, группировка нот vs метр, лиги, разделение голосов, выбор добавочных линеек/ключей, знаки выразительности) и возвращает результаты, привязанные к партии и такту, каждый с указанием нарушенного опубликованного правила — код, URL и готовая к цитированию ссылка. ЗАЧЕМ ЭТО СУЩЕСТВУЕТ: ноты, сгенерированные LLM, как правило, плохо выгравированы — такты, которые не сходятся по сумме, лиги между разными высотами, группировки через тактовые черты — и нет другого публичного инструмента для проверки правил гравировки. Сгенерируйте, затем ПРОВЕРЬТЕ, затем исправьте; не доверяйте нотам, которые вы воспроизвели по памяти. КОГДА ИСПОЛЬЗОВАТЬ: после генерации или редактирования MusicXML, перед показом пользователю; когда пользователь спрашивает «правильно ли записана эта партитура»; перед подачей партитуры в гравировщик/рендерер; как этап верификации в любом цикле сочинения-записи. КОГДА НЕ ИСПОЛЬЗОВАТЬ: для музыкальной ОЦЕНКИ (гармония, качество контрапункта — используйте theory_analyze_score); для ошибок расположения/коллизий (они требуют просмотра отрендеренной страницы и выходят за рамки статического уровня); для ПОИСКА правила без партитуры на руках (используйте engraving_rules). ВХОД: ровно один из параметров: path (локальный .musicxml/.xml/.mxl файл — предпочтительно, сервер читает его, и партитура не попадает в ваш контекст), xml (строка MusicXML) или mxl_base64 (base64 .mxl). Сырой XML ограничен 2 МБ; .mxl — 2 МБ в сжатом виде / 100 МБ в распакованном. ВЫХОД (JSON): { coverage: {parts, voices, measures, notesRead, notesChecked, unchecked[]}, skippedRules[], findings: [{ruleId, severity, message, part, partName, measure, voiceIndex, where, rule?: {code, name, url, citation}}], summary: {errors, warnings, suggestions}, rulebook, attribution }. ЧИТАЙТЕ coverage.unchecked — всё, что проверщик не смог проверить, перечисляется там, а не молча пропускается; пустой список findings означает, что проверено только то, что действительно было проверено. Результат с measure: null означает, что местоположение не удалось определить точно, и об этом сообщается вместо предположения. ОТЧЁТНОСТЬ: передавайте результаты с…

Параметры
  • mxl_base64string

    Сжатый .mxl в кодировке Base64. Не более 2 МБ в сжатом виде.

  • pathstring

    Локальный путь к файлу .musicxml/.xml или .mxl. Предпочтительно: так партитура не попадает в ваше контекстное окно.

  • xmlstring

    Сырой текст MusicXML (score-partwise). Максимум 2 МБ.

engraving_rule

Получает одно правило гравировки по его постоянному идентификатору, с предварительно отформатированной строкой цитирования и списком связанных правил. КОГДА ИСПОЛЬЗОВАТЬ: у вас уже есть идентификатор правила (из engraving_rules, из URL на Gradus или из предыдущего ответа), и вам нужен полный текст плюс готовая к цитированию ссылка; вы переходите по ссылке «связанные правила». КОГДА НЕ ИСПОЛЬЗОВАТЬ: вы не знаете идентификатор — сначала выполните поиск с помощью engraving_rules. Впрочем, угадать идентификатор можно: при промахе возвращаются близкие по значению идентификаторы, а не просто ошибка, так что вы сможете исправиться за один дополнительный вызов. ВХОДНЫЕ ДАННЫЕ: { id: string } — либо постоянный код цитирования («GE-036»), либо читаемый идентификатор правила («beam-never-crosses-authored-barline»). Оба варианта разрешаются, так что код, указанный в предыдущем ответе, можно запросить напрямую. ВЫХОДНЫЕ ДАННЫЕ (JSON): { rule: { code, id, name, convention, authority, houseCall?, consequence?, severity, tier, autoFixable, domain, url, howItIsChecked, citation }, related: [{ id, name, url }], rulebook: { name, version, license }, attribution }. Используйте строку citation дословно при цитировании правила. ПРИ ПРОМАХЕ: API возвращает HTTP 404 с { error: "rule_not_found", suggestions: [{ id, name, url }] }; этот инструмент выводит это тело в сообщении об ошибке, поэтому прочитайте подсказки и повторите попытку. ПРИМЕР ВХОДНЫХ ДАННЫХ: { "id": "beam-never-crosses-authored-barline" } ТИПИЧНАЯ ЗАДЕРЖКА: 30-200 мс. Кэшируется на CDN.

Параметры
  • idstringобязательный

    Код ссылки («GE-036») или читаемый идентификатор правила («beam-never-crosses-authored-barline»). Оба варианта разрешаются.

engraving_rules

Ищет в The Gradus Engraving Rulebook — 423 правила нотной гравировки, каждое из которых формулирует правило, указывает трактат или спецификацию, на которую оно опирается (Gould's Behind Bars, Read's Music Notation, Ross's The Art of Music Engraving, Stone, SMuFL, MusicXML), и определяет, проверяемо ли правило только по партитуре или только по отрисованной странице. ПОЧЕМУ ЭТО СУЩЕСТВУЕТ: практика гравировки описана почти исключительно в защищённых авторским правом печатных изданиях без поискового индекса. Поэтому такие вопросы, как «может ли ребро пересекать тактовую черту», «в какую сторону идёт этот штиль» или «переносится ли этот знак альтерации через такт», не имеют цитируемого ответа в интернете. Полагаться на память ненадёжно. Лучше найти правило. КОГДА ИСПОЛЬЗОВАТЬ: перед созданием или исправлением нотной записи — чтобы проверить применяемое соглашение; когда пользователь спрашивает, как что-то записать или выгравировать; при проверке партитуры на ошибки гравировки; когда два источника расходятся и нужно понять, какой авторитет что говорит. КОГДА НЕ ИСПОЛЬЗОВАТЬ: для вопросов по ТЕОРИИ музыки (гармония, контрапункт, анализ) — используйте knowledge_search или theory_analyze_score; для проверки конкретной партитуры на соответствие правилам (этот инструмент возвращает правила, он не проверяет партитуру по ним); после кеширования (справочник версионирован и стабилен — получите и переиспользуйте). ВХОД: всё необязательно. q — поиск по подстроке в названиях и тексте правил (лучшая отправная точка). domain — одно из: accidentals, beaming, clefs-and-ledger-lines, expression-marks, horizontal-spacing, multiple-voices, rhythm-and-meter, score-conventions, stems-and-flags, text-and-lyrics, ties-and-slurs, vertical-spacing. severity — error | warning | suggestion. tier — static-model (проверяемо только по партитуре) | render-geometry (требует отрисованной страницы) | hybrid. fields — список полей через запятую, чтобы сократить полезную нагрузку. Если ничего не передано, возвращаются все 423 правила. ВЫХОД (JSON): { rulebook: { name, version, license, citationPolicy, publishedRules, withheldRules, domains }, count, rules: [{ id, name, convention, …

Параметры
  • domainenum

    Ограничьте одним из двенадцати доменов.

  • fieldsstring

    Список разрешенных полей, разделенных запятыми, например "id,name,convention".

  • qstring

    Ищет подстроку по имени правила и тексту соглашения.

  • severityenum

    Насколько критично это правило.

  • tierenum

    Что нужно, чтобы это проверить?

figured_bass_exercise

Получает одно упражнение по цифрованному басу по его постоянному идентификатору: образцовую реализацию, заранее отформатированную строку цитирования, перекрёстные ссылки голосоведения, раскрытые в именованные паттерны, и список соседних упражнений. КОГДА ИСПОЛЬЗОВАТЬ: у вас уже есть идентификатор упражнения (из figured_bass_exercises, URL Gradus или предыдущего ответа) и нужна полная запись — заданный бас, образцовая реализация, методическое пояснение о том, почему он движется именно так, и указания для клавира; вы ведёте ученика вперёд или назад по этапу через соседние упражнения. КОГДА НЕ ИСПОЛЬЗОВАТЬ: вы не знаете идентификатор — сначала поищите через figured_bass_exercises. Впрочем, можно и угадать: при промахе вернутся близкие по написанию идентификаторы, а не голая ошибка, так что поправитесь за один дополнительный вызов. ВХОД: { id: string } — постоянный идентификатор упражнения, например "bass-225". ВЫХОД (JSON): { exercise: { …все поля, которые возвращает поиск…, citation }, drills: [{ code, name, url }], neighbours: { prev?, next? }, corpus: { name, version, license }, attribution }. Поле solution объясняет, почему реализация движется именно так — цитируйте его, а не придумывайте своё объяснение. drills раскрывает GVL-коды упражнения в именованные паттерны голосоведения, так что можно сослаться на правило вместе с примером. Упражнения этапа 17 также содержат floridRealization — аккорды, развёрнутые в характерную фактуру. КАК ОБУЧАТЬ: дайте ученику givenBass и teaches; realization придержите до попытки, потом сравните. Реализация — это ОБРАЗЕЦ, а не единственный правильный ответ: другая реализация, не нарушающая правил, тоже верна, так что расхождение — это не ошибка. ПРИ ПРОМАХЕ: API возвращает HTTP 404 с { error: "exercise_not_found", suggestions: [{ id, title, url }] }; этот инструмент отображает это тело в сообщении об ошибке, так что читайте подсказки и пробуйте снова. ПРИМЕР ВХОДА: { "id": "bass-225" } ТИПИЧНАЯ ЗАДЕРЖКА: 30-200 мс. Кэшируется на CDN.

Параметры
  • idstringобязательный

    Постоянный идентификатор упражнения, например "bass-225".

figured_bass_exercises

Ищет The Gradus Figured-Bass Corpus — 166 оригинальных градуированных упражнений на генерал-бас в семнадцати этапах, от трезвучий в основном виде до октавного правила, каденционных формул, задержаний, доминантсептаккорда, секвенций, особенностей минора, педального баса, схем Рипеля, модуляций, хроматики, нефигурированного баса и диминуций. Каждое упражнение содержит бас с цифровкой И четырехголосную модель реализации, проверенную машиной на голосоведение. ПОЧЕМУ ЭТО СУЩЕСТВУЕТ: градуированный генерал-бас — это то, как гармонии реально обучали два столетия, но сохранившиеся сборники либо не переиздаются, либо защищены авторским правом, и в них почти никогда не публикуют ответы — поэтому ученику не с чем сверяться, а преподавателю приходится придумывать упражнения по памяти, и получается плохо. Этот корпус — открытая замена: написан с нуля, разбит на этапы по сложности и опубликован ВМЕСТЕ с реализациями. КОГДА ИСПОЛЬЗОВАТЬ: когда пользователь хочет практиковать генерал-бас на конкретном уровне; когда нужно готовое упражнение на какой-то прием (задержание 4–3, каденционный квартсекстаккорд, нисходящую секвенцию) — показать, а не объяснять; когда студент уже сделал свой бас и хочет сравнить с эталонным решением; когда нужно выстроить последовательность упражнений и перейти к следующему шагу. КОГДА НЕ ИСПОЛЬЗОВАТЬ: чтобы узнать ПРАВИЛО, стоящее за приемом — для этого есть voice_leading_patterns, где правило сформулировано и указан источник (этот инструмент дает упражнения, а не теорию); чтобы проанализировать партитуру, которую принес пользователь — для этого есть theory_analyze_score; чтобы оценить видовой контрапункт — для этого есть counterpoint_check; для вопросов о том, как нотация должна ВЫГЛЯДЕТЬ на странице — для этого есть engraving_rules; после кэширования (корпус версионирован и стабилен). ВХОДНЫЕ ДАННЫЕ: все необязательно. stage принимает либо номер (1–17), либо постоянный слаг: root-position-triads, rule-of-the-octave, first-inversion, cadence-formulas, second-inversion, suspensions, dominant-seventh, sequences, minor-mode, bare-accidentals, non-dominant-sevenths, pedal-point, schemata, modulation,…

Параметры
  • fieldsstring

    Список разрешенных полей через запятую, например: "id,title,teaches,givenBass".

  • qstring

    Выполняет поиск по подстроке в полях id, title, concept, the teaches sentence и кодах GVL.

  • stagestring

    Номер этапа («6») или постоянный слаг («suspensions»). Слаги: root-position-triads, rule-of-the-octave, first-inversion, cadence-formulas, second-inversion, suspensions, dominant-seventh, sequences, minor-mode, bare-accidentals, non-dominant-sevenths, pedal-point, schemata, modulation, chromatic-figures, unfigured-bass, diminution.

knowledge_search

Выполняет поиск в базе знаний Gradus по теории музыки для получения авторитетных исходных материалов. Корпус включает авторские учебные тексты, анализ хоралов Баха (408 хоралов), комментарии к партитурам более чем 50 оркестровых произведений, а также первоисточники от Фукса (1725) до Буланже. КОГДА ИСПОЛЬЗОВАТЬ: перед генерацией нотной записи, если нужно уточнить конкретный теоретический факт — типовое голосоведение при разрешении неаполитанского аккорда в доминанту, idiomatic генерал-бас для определённой каденции, чем хроматическая медианта в стиле одного композитора отличается от другого. Обращение к этому инструменту в первую очередь предотвращает выдумывание агентом стилистически неверных аккордовых последовательностей. КОГДА НЕ ИСПОЛЬЗОВАТЬ: для общих музыкальных понятий («что такое аккорд?»), которые любой LLM уже знает; для запросов, не связанных с теорией, например биографий композиторов, рекомендаций по исполнению или исторических дат — они выходят за рамки; для получения собственно нотной записи (используйте вместо этого notation_render или notation_examples). ВХОДНЫЕ ДАННЫЕ: укажите ЛИБО topics (теги в kebab-case), ЛИБО step (шаг учебного плана, 1-49). topics предпочтительнее; step — запасной вариант, если вы не знаете канонический тег темы. Если оба пусты, возвращается ошибка MISSING_QUERY. ВЫХОДНЫЕ ДАННЫЕ (JSON): { ok: true, requestId, chunks: [{ id, sourceType, sourceId, title, content, composer?, era?, topics: string[], curriculumSteps: number[], tokenEstimate }], meta: { query, returnedCount, totalTokens, responseTimeMs }, attribution }. sourceType — одно из: kg_concept, score_analysis, score_commentary, bach_chorale_analysis, composer, dictionary, curriculum, lesson_content, practicum, voice_leading, fugue, chorale_exercise и т.д. Пустой chunks: [] означает, что по темам ничего не найдено — агенту следует опереться на собственные знания или попробовать другой тег. ПРИМЕР ВХОДНЫХ ДАННЫХ: { "topics": ["voice-leading", "deceptive-cadence"], "limit": 3 } ТИПИЧНАЯ ЗАДЕРЖКА: 200-700 мс (один вызов эмбеддинга Voyage 3 + RPC Supabase pgvector).

Параметры
  • limitinteger

    Максимальное число фрагментов в ответе. По умолчанию 8 подходит для большинства запросов; увеличьте для широких обзоров, уменьшите при ограниченном контексте.

  • maxTokensinteger

    Бюджет токенов для суммарного содержимого фрагментов. По умолчанию 1500, это значение легко помещается в контекстные окна большинства агентов. Эндпоинт жадно отбирает фрагменты с наибольшей схожестью в рамках этого бюджета.

  • stepinteger

    Номер шага учебной программы (1-49). Запасной вариант, когда неизвестен тег темы. Соответствует 10-ступенчатой программе Gradus: Этап I 1-7 (один голос, интервалы, гаммы), II 8-13 (контрапункт, все 5 видов), III 14-16 (гармония, третий голос), IV 17-18 (форма, модуляция), V 19-20 (фуга), VI 21-25 (классический стиль, соната), VII 26-30 (романтическая гармония, увеличенные сексты), VIII 31-33 (импрессионизм), IX 34-36 (XX век), X 37-40 (продвинутый уровень).

  • topicsstring[]

    Теги тем в kebab-case. Сопоставляются семантически с помощью эмбеддингов Voyage 3 Large плюс буст за пересечение тем; точное совпадение не требуется, поэтому подходят близкие синонимы. Примеры: ["voice-leading","deceptive-cadence"], ["chromatic-mediants"], ["sonata-form","second-theme"], ["figured-bass","6-4-2-chord"], ["fugue","stretto"], ["modulation","pivot-chord"].

music_critique

Оценивает музыкальное произведение по 32-мерной шкале Gradus craft scorecard — голосоведение (параллельные квинты/октавы, расстояния между голосами, пересечения), качество контрапункта, мелодический контур, обработка диссонансов, гармоническая логика, ритм, фактура и другое, с калибровкой под указанный стилистический период. Чисто программный инструмент (без LLM внутри): детерминированный, быстрый и бесплатный — движок оценки, лежащий в основе обратной связи, основанной на фактических данных. КОГДА ИСПОЛЬЗОВАТЬ: когда пользователь или студент делится произведением и спрашивает «это хорошо / что исправить» — сначала дайте критику и опирайтесь на возвращённые данные, а не на впечатления; при рецензировании упражнения, аранжировки или черновика, чтобы подкрепить конкретные похвалы и конкретные исправления; как проверку качества перед тем, как выставлять любую оценку. КОГДА НЕ ИСПОЛЬЗОВАТЬ: для гармонического АНАЛИЗА существующего репертуара (theory_analyze_score — тот называет аккорды и тональности; этот оценивает мастерство); для ошибок гравировки/нотации (engraving_check); для эстетических предпочтений за пределами ремесла (выбор темпа, эмоциональный регистр — это ваше суждение, а не инструмента). ВХОДНЫЕ ДАННЫЕ: ровно один из { path } (путь к файлу партитуры, предпочтительно — .mxl передаётся в сжатом виде), { xml } или { mxlBase64 }. Плюс stylePeriod? (modal | baroque | classical (по умолчанию) | romantic | impressionist | post_tonal | film_contemporary | jazz | minimalist — пороговые значения калибруются под стиль, так что укажите намеренный стиль), focusAreas? (string[]), context? (одно предложение о намерении). ВЫХОДНЫЕ ДАННЫЕ (JSON): { meta: { title, partNames, measureCount, noteCount, voiceCount, stylePeriod }, critique: { dimensions: [{ id, name, family, score: 1-5 | null, evidence }], strengths: top 3, growthAreas: bottom 3, scoredCount, naCount, average } }. score: null = не применимо (одноголосная мелодия не может быть «плохой по голосоведению»); null-измерения никогда не учитываются в среднем. ТИПИЧНАЯ ЗАДЕРЖКА: 300-800 мс.

Параметры
  • contextstring

    Одно предложение о намерении, например, «нежная колыбельная для струнного квартета».

  • focusAreasstring[]

    Необязательные теги акцента, например ["voice_leading", "counterpoint"].

  • mxlBase64string
  • pathstring

    Локальный путь к файлу партитуры (.mxl или .musicxml/.xml) - предпочтителен. Укажите ровно один из: path, xml, mxlBase64.

  • stylePeriodenum

    Стиль, который подразумевает произведение — пороги оценки калибруются под него. По умолчанию классический.

  • xmlstring

    Сырая строка документа MusicXML (лимит 2 MB).

notation_examples

Получает шесть канонических примеров входных данных, покрывающих наиболее распространённые сценарии использования notation_render: одноголосная мелодия, двухголосный контрапункт (cantus firmus + контрапункт), аккордовая последовательность (каденция), смешанные ритмы с динамикой и артикуляцией, струнный квартет из четырёх инструментов и ноты, связанные лигой через тактовую черту. КОГДА ИСПОЛЬЗОВАТЬ: при первом знакомстве с этим MCP — получает примеры для изучения формата входных данных на конкретных отработанных шаблонах; перед вызовом notation_render, если вы не уверены, как выразить определённую музыкальную структуру (аккорд, многоголосный нотоносец, связанную лигой ноту); чтобы показать конечному пользователю, какие виды нотации возможны. КОГДА НЕ ИСПОЛЬЗОВАТЬ: после кэширования ответа (примеры стабильны во всех версиях v1 API; получайте один раз и используйте повторно вечно); когда вам нужны только формальные определения типов (используйте notation_schema для JSON Schema). ВХОДНЫЕ ДАННЫЕ: нет. Передайте пустой объект {}. ВЫХОДНЫЕ ДАННЫЕ (JSON): { ok: true, examples: [{ id, title, description, use_when, input: NotationInput }], docs: { schema, render, validate }, attribution }. Шесть примеров со стабильными id: single-melody, two-voice-counterpoint, chord-progression, mixed-rhythms, string-quartet-snippet, tied-across-bar. Каждый input — это полная полезная нагрузка, которую можно передать напрямую в notation_render. ПРИМЕР ВХОДНЫХ ДАННЫХ: {} (без параметров) ТИПИЧНАЯ ЗАДЕРЖКА: 30–200 мс. Ответ кэшируется на CDN с длинным TTL - последующие вызовы практически бесплатны.

Параметры

Без параметров.

notation_render

Преобразует нотную запись из JSON-оценки в три выходных формата за один вызов: встраиваемый SVG (гравировка через Verovio со шрифтом Bravura SMuFL — тот же движок, что у IMSLP и Music Encoding Initiative), MusicXML с круговой совместимостью (чисто открывается в Sibelius, Finale, MuseScore, Dorico) и MIDI в формате SMF Type-1, закодированный в base64. КОГДА ИСПОЛЬЗОВАТЬ: когда агенту нужно показать пользователю гравированную нотацию (композитору, демонстрирующему идею, учителю, создающему рабочий лист, создателю контента, встраивающему пример нотации), или при конвертации JSON-оценки в форматы файлов, которые могут читать другие агенты или инструменты (MusicXML для настольных нотных редакторов, MIDI для секвенсоров). КОГДА НЕ ИСПОЛЬЗОВАТЬ: если вы не уверены, что входные данные корректны → сначала вызовите notation_validate (гораздо дешевле, без отрисовки); если вы еще не знаете формат входных данных → вызовите notation_examples или notation_schema; если вам нужны теоретические факты перед сочинением → сначала вызовите knowledge_search. ВХОДНЫЕ ДАННЫЕ: требуется instruments (непустой массив). Каждый инструмент имеет name (обязательно; ключ выводится из названия: "Cello" → басовый, "Viola" → альтовый, "Timpani" → ударный — можно переопределить через clef) и либо notes (сокращение для одного голоса), либо voices (несколько голосов). Высоты нот задаются в научной нотации ("C4", "F#5", "Bb3"); длительности — буквенными кодами ("w", "h", "q", "8", "16", "32", "64" с необязательным "." для пунктирной, ".." для двойной пунктирной). Тактовые черты выводятся из timeSignature (по умолчанию [4,4]); ноты, пересекающие тактовую черту, автоматически разбиваются и связываются — агентам не нужно считать доли. ВЫХОДНЫЕ ДАННЫЕ (JSON, успех): { ok: true, requestId, outputs: { svg: string, musicxml: string, midiBase64: string }, meta: { measureCount, instrumentCount, voiceCount, durationBeats, renderTimeMs }, warnings?: ValidationIssue[], attribution }. ValidationIssue = { path, code, message, fix?, severity: "error"|"warning" }. Обычно SVG занимает 60-100 КБ со встроенным шрифтом Bravura; MusicXML — несколько КБ; MIDI — менее 1 КБ. ВЫХОДНЫЕ ДАННЫЕ (JSON, ошибка валидации): { ok: false, requestId, errors:… }

Параметры
  • composerstring

    Необязательный композер, отображаемый в правом верхнем углу.

  • instrumentsobject[]обязательный

    Одна или несколько инструментальных нотоносцев. Требуется минимум один.

  • keySignaturestring

    Человекочитаемое обозначение тональности. Принимает "C major", "G major", "D minor", "F# major", "Bb minor" и т. д.

  • save_dirstring

    Локальный каталог для сохранения выходных файлов (создаётся при отсутствии). Когда он задан, SVG, MusicXML и MIDI сохраняются как файлы, названные по заголовку, а ответ возвращает их пути вместо ~80 КБ встроенного содержимого: такой вариант настоятельно рекомендуется, если вам нужны сами файлы, а не разметка.

  • temponumber

    Темп в BPM. Влияет только на тайминг MIDI; визуально не отображается.

  • timeSignatureinteger[]

    [beats, beat-unit]. Распространённые значения: [4,4], [3,4], [6,8], [2,2], [12,8].

  • titlestring

    Необязательный заголовок, отображаемый над счётом.

notation_schema

Получает JSON-схему (Draft 2020-12), описывающую входную структуру notation_render. Включает все поля, их типы, значения по умолчанию, правила валидации (включая регулярное выражение для shorthand-string) и $defs для Instrument, VoiceLine, Note и NoteObject. КОГДА ИСПОЛЬЗОВАТЬ: при первом знакомстве с этим MCP, когда нужны машиночитаемые определения типов; при создании клиента, который валидирует входные данные на стороне клиента перед вызовом notation_render; при генерации кода (типы TypeScript, схемы Zod и т.д.), который использует этот формат. КОГДА НЕ ИСПОЛЬЗОВАТЬ: после кэширования ответа (стабильный во всём v1 API); когда нужно обучение на примерах (используйте notation_examples — рабочие полезные нагрузки легче читать, чем определения схем). ВХОДНЫЕ ДАННЫЕ: нет. Передайте пустой объект {}. ВЫХОДНЫЕ ДАННЫЕ (JSON): { ok: true, schema: { $schema: "https://json-schema.org/draft/2020-12/schema", $id, title, type: "object", required: ["instruments"], properties, $defs: { Instrument, VoiceLine, Note, NoteObject } }, docs: { examples, render, validate }, attribution }. Поле schema — это полный документ JSON-схемы. ПРИМЕР ВХОДНЫХ ДАННЫХ: {} (без параметров) ТИПИЧНАЯ ЗАДЕРЖКА: 30-200 мс. Ответ кэшируется на CDN с большим TTL — последующие вызовы практически бесплатны.

Параметры

Без параметров.

notation_validate

Выполняет предварительную проверку ввода notation_render без рендеринга. Возвращает ошибки с конкретным полем fix, которое сообщает агенту, как именно исправить повреждённый ввод. Значительно дешевле, чем notation_render, поскольку полностью пропускает этап гравировки Verovio. КОГДА ИСПОЛЬЗОВАТЬ: когда повторяете форму ввода и не уверены, что она корректна; когда ввод получен от пользователя или от LLM и может быть повреждён; когда нужно показать точные ошибки валидации конечному пользователю до полноценного рендеринга; когда изучаете формат ввода (используйте вместе с notation_examples для просмотра канонических примеров). КОГДА НЕ ИСПОЛЬЗОВАТЬ: если ввод заведомо корректен (просто вызовите notation_render — он тоже проверяет внутри); если вы ещё не изучили схему (сначала вызовите notation_schema или notation_examples, чтобы увидеть формат). ВВОД: форма идентична notation_render. Массив instruments обязателен (каждый элемент содержит name и notes или voices). ВЫВОД (JSON, валидный): { ok: true, requestId, valid: true, warnings: ValidationIssue[], meta: { measureCount, instrumentCount, voiceCount, durationBeats }, attribution }. Warnings — неблокирующие уведомления (например, нестандартная обработка размера). ВЫВОД (JSON, невалидный): { ok: false, requestId, valid: false, errors: ValidationIssue[], warnings, attribution }. Каждый ValidationIssue: { path: "instruments[0].voices[0].notes[3]", code: "BAD_PITCH"|"BAD_DURATION"|"MISSING_FIELD"|"BAD_KEY_SIG"|..., message, fix: "Use scientific notation: letter A-G + optional # or b + octave number, e.g. C4, F#5, Bb3.", severity: "error"|"warning" }. Покажите fix пользователю или используйте его для автоматического исправления. ПРИМЕР ВВОДА: { "instruments": [{ "name": "Violin", "notes": ["C5/q","D5/q","E5/q","F5/q"] }] } ТИПИЧНАЯ ЗАДЕРЖКА: 30-100 мс (без рендеринга Verovio; чистое преобразование JSON в Score + расчёт тактовых линий).

Параметры
  • composerstring
  • instrumentsobject[]обязательный

    Та же форма, что у notation_render. Полную JSON-схему смотрите в notation_schema.

  • keySignaturestring
  • temponumber
  • timeSignatureinteger[]
  • titlestring
theory_analyze_score

Однократный эндпоинт: разбирает MusicXML, запускает полный конвейер гармонического анализа MaestroAnalyzer и запрашивает Knowledge Base Gradus (GKB) для проверенных теоретических блоков, сопоставленных с обнаруженными особенностями партитуры. Возвращает и алгоритмический анализ, и релевантные вручную составленные знания в одном вызове. КОГДА ИСПОЛЬЗОВАТЬ: когда у агента есть партитура MusicXML и он хочет узнать, что в ней гармонически примечательного — тональность, последовательность локальных тональностей, аккордовый анализ с римскими цифрами, каденции, фразовая структура, период стиля И релевантный теоретический контекст из GKB (правила голосоведения, гармонический словарь, оркестровые заметки, исторический контекст). Это самый насыщенный доступный анализ за один вызов. КОГДА НЕ ИСПОЛЬЗОВАТЬ: если вам нужна только проверка диапазонов (theory_validate_ranges); если нужна только перегармонизация (theory_respell); если нужен сырой поиск по GKB без анализа партитуры (knowledge_search). ВХОДНЫЕ ДАННЫЕ: ровно одно из { path } (локальный файл партитуры, ПРЕДПОЧТИТЕЛЬНО — .mxl или .musicxml; .mxl сжимается, чтобы поместились полные части), { xml } (сырой текст MusicXML, лимит 2 MB) или { mxlBase64 }. Плюс: maxKnowledgeTokens? (по умолчанию 1500), includeKnowledge? (по умолчанию true), measures? ([от, до] — ограничивает вывод потактовых данных нужными тактами), full? (по умолчанию false — по умолчанию ответ — это КОМПАКТНАЯ сводка: тональности, разделы с поддержкой, каденции, потактовые фактуры, одно прочтение на аккордовый срез с метками педального тона и тяготения. Полный понотный ответ части занимает мегабайты; передавайте full: true, только если нужны сырой повтор партитуры и прочтения). ВЫХОДНЫЕ ДАННЫЕ: { meta: { partCount, noteCount, measureCount }, analysis: { overallKey: { key, mode, confidence }, localKeys: [{ measure, key, confidence }], chordAnalyses: [{ measure, beat, primary, readings: [{ rn, rnAscii, inversion, localKey, confidence }], tendencyTones }], cadences: [{ type: "PAC"|"IAC"|"HC"|"DC"|"Plagal"|"Phrygian"|"unclear", ... }], phrases: [{ index, measureStart, measureEnd, fermataMeasures }], }, …

Параметры
  • fullboolean

    Возвращайте полный понотный ответ вместо краткой сводки. Полный ответ части занимает мегабайты, не включайте его, если вам не нужны сырые данные.

  • includeKnowledgeboolean

    Задайте false, чтобы пропустить поиск в GKB и получить только анализ. Это полезно, когда знания не нужны или когда важна задержка.

  • maxKnowledgeTokensinteger

    Бюджет токенов для фрагментов знаний GKB. Увеличивайте для более полного контекста, уменьшайте для ограниченных бюджетов.

  • measuresinteger[]

    Окно тактов [от, до] включительно для компактного потактового вывода, например [39, 47].

  • mxlBase64string

    Base64 сжатого файла .mxl, как альтернатива xml.

  • optionsobject

    Необязательный AnalyzeScoreOptions: { useLocalKeys: "phrase"|"window"|"overall", localKeyHalfWindow?: number }.

  • pathstring

    Локальный путь к файлу партитуры (.mxl или .musicxml/.xml) - ПРЕДПОЧТИТЕЛЬНО: файл никогда не передаётся через контекст модели, а .mxl загружается в сжатом виде, поэтому помещаются все части. Укажите ровно одно из: path, xml, mxlBase64.

  • xmlstring

    Строка исходного документа MusicXML (формат score-partwise). Ограничение 2 МБ: для больших партитур используйте path или mxlBase64.

theory_parse_xml

Преобразует строку MusicXML в объект Score библиотеки maestroAnalyst. Score — входной тип для theory_validate_ranges, его можно передать в любую аналитическую функцию maestroAnalyst. КОГДА ИСПОЛЬЗОВАТЬ: когда у вас есть MusicXML-файл (например, экспортированный из Sibelius, Finale, MuseScore, Dorico или созданный с помощью notation_render) и вы хотите его проанализировать — определить тональность, проверить диапазоны, переписать знаки альтерации. Это точка входа для нативного конвейера анализа, который заменяет music21. ОГРАНИЧЕНИЯ: принимает текст MusicXML в формате score-partwise. НЕ принимает ZIP-архивы .mxl — при необходимости распакуйте их. Score-timewise и другие не-partwise форматы не поддерживаются. ВХОДНЫЕ ДАННЫЕ: { xml: string } — полный текст документа MusicXML. ВЫХОДНЫЕ ДАННЫЕ: { ok, requestId, score: Score, meta: { partCount, noteCount, measureCount }, attribution }. Полученный JSON объекта Score затем можно передать в theory_validate_ranges или любой другой инструмент теории. ТИПИЧНЫЙ РАЗМЕР: хорал Баха (4 партии, 32 такта) создает Score примерно с 512 нотами. Часть симфонии Бетховена (12 партий, 400 тактов) может дать более 8 000 нот. Уложитесь в лимит контекста или обрабатывайте частями.

Параметры
  • xmlstringобязательный

    Сырая строка документа MusicXML (формат score-partwise). Должна начинаться с <?xml или <score-partwise.

theory_pitch_utils

Набор быстрых чистых утилит для работы с высотой тона, заменяющих наиболее используемые функции music21 без сетевых задержек. ОПЕРАЦИИ: midi_to_pitch - MIDI-номер → строковое представление ноты. midi=60 → "C4". preferFlats=true → обозначения "Db". pitch_to_midi - строковое представление ноты → MIDI-номер. "C4"→60, "F#5"→78, "Bb3"→46. Возвращает null для пауз. interval_name - количество полутонов → строка качества интервала. 0→"P1" 3→"m3" 4→"M3" 7→"P5" 12→"P8". Составные интервалы: 14→"M2+8". transpose_pitch - сдвигает ноту на заданное количество полутонов. "C4"+7→"G4", "E5"+-2→"D5". preferFlats управляет обозначением чёрных клавиш. КОГДА ИСПОЛЬЗОВАТЬ: быстрая арифметика при генерации или анализе партитуры без запуска полного конвейера анализа; заполнение таблиц MIDI-вывода; маркировка интервалов в учебных целях; транспонирование отдельных нот во время сочинения. ВХОДНЫЕ ДАННЫЕ: { op: string, ...params }, где op — одна из указанных операций. ПРИМЕРЫ: { op: "midi_to_pitch", midi: 60 } → { pitch: "C4" } { op: "pitch_to_midi", pitch: "F#5" } → { midi: 78 } { op: "interval_name", semitones: 7 } → { interval: "P5" } { op: "transpose_pitch", pitch: "C4", semitones: 7 } → { pitch: "G4" } { op: "transpose_pitch", pitch: "E4", semitones: 1, preferFlats: true } → { pitch: "F4" }

Параметры
  • midiinteger

    MIDI-номер (0–127). Обязателен для midi_to_pitch.

  • openumобязательный

    Операция для выполнения

  • pitchstring

    Строка высоты тона, например "C4", "F#5". Требуется для pitch_to_midi и transpose_pitch.

  • preferFlatsboolean

    Используйте бемольные обозначения для чёрных клавиш (Ре-бемоль вместо До-диез). Необязательно.

  • semitonesinteger

    Смещение в полутонах. Требуется для interval_name и transpose_pitch.

theory_respell

Предлагает предпочтительное энгармоническое написание для одного или нескольких тонов в заданном тональном контексте. Выбирает написание, диатоническое для тональности (например, F# в G major, Gb в F major). Использует предпочтение знаков альтерации тональности (диезы/бемоли) как критерий разрешения для хроматических проходящих тонов. КОГДА ИСПОЛЬЗОВАТЬ: после OMR (оптического распознавания музыки) для исправления неправильно написанных знаков альтерации; при создании нотной записи, когда не уверены, написать F# или Gb; при транспонировании — переписать после полутонового сдвига для сохранения диатонического написания; перед вызовом notation_render для очистки знаков альтерации. ВХОДНЫЕ ДАННЫЕ: { keyContext: string, pitches: string[] } ИЛИ { keyContext: string, pitch: string }. Строки тонов используют научную нотацию: "F#4", "Bb3", "C5", "Eb4". ВЫХОДНЫЕ ДАННЫЕ: { ok, requestId, keyContext, results: [{ input, output, changed }], attribution }. changed принимает значение true, если написание было скорректировано. ПРИМЕРЫ: { keyContext: "F major", pitches: ["F#4", "Bb4", "E4"] } → F#4→Gb4 (Gb диатоничен для F major), Bb4 без изменений, E4 без изменений. { keyContext: "G major", pitch: "Gb4" } → Gb4→F#4 (F# диатоничен для G major).

Параметры
  • keyContextstringобязательный

    Строка тональности, например "C major", "G major", "Bb minor", "F# major".

  • pitchstring

    Одиночная строка высоты тона (научная нотация). Используйте это ИЛИ pitches.

  • pitchesstring[]

    Массив строк pitch. Используйте это ИЛИ pitch.

theory_validate_ranges

Проверяет каждую ноту в Score JSON на соответствие стандартному практическому диапазону инструмента. Возвращает предупреждения о выходящих за диапазон высотах с указанием такта, доли, MIDI-номера и уровня серьезности. КОГДА ИСПОЛЬЗОВАТЬ: после разбора файла MusicXML с помощью theory_parse_xml и перед анализом — чтобы выявить неисполнимые или экстремальные ноты на раннем этапе; при программном создании или редактировании партитуры и необходимости проверить соответствие инструментальному диапазону; когда студент представляет сочинение для рецензии и нужно отметить ошибки диапазона. УРОВНИ СЕРЬЕЗНОСТИ: "error" — нота находится более чем на 1 полутон вне практического диапазона; "warn" — нота находится на границе (в пределах 1 полутона). ПОДДЕРЖИВАЕМЫЕ ИНСТРУМЕНТЫ (частичное совпадение имени, без учета регистра): Violin, Viola, Cello, Double Bass, Harp, Flute, Piccolo, Oboe, English Horn, Clarinet, Bass Clarinet, Bassoon, Contrabassoon, Soprano/Alto/Tenor/Baritone Sax, Horn, Trumpet, Trombone, Tuba, Piano, Organ, Marimba, Xylophone, Vibraphone, Glockenspiel, Timpani, Soprano/Mezzo/Alto/Tenor/Baritone/Bass (voice). ВХОДНЫЕ ДАННЫЕ: объект maestroAnalyst Score — получите его, вызвав theory_parse_xml с текстом MusicXML. ВЫХОДНЫЕ ДАННЫЕ: { ok, requestId, warnings: [{ measure, beat, pitch, midi, partId, instrumentName, min, max, severity }], attribution }. Пустой массив warnings означает, что все ноты в диапазоне. ПРИМЕР: передайте Score с партией скрипки, содержащей ноту A7 (MIDI 105) — он вернет уровень серьезности "error", поскольку диапазон скрипки заканчивается около B7/MIDI 107, но A7 выходит за пределы практического диапазона.

Параметры
  • keySignaturesunknown[]
  • measureCountinteger
  • notesunknown[]обязательный

    Плоский массив объектов Note из Score.

  • partsunknown[]обязательный

    Массив объектов PartInfo ({ id, name }).

  • timeSignaturesunknown[]
voice_leading_pattern

Получает один голосоведческий паттерн по его постоянному идентификатору, с заранее отформатированной строкой цитирования и списком связанных паттернов. КОГДА ИСПОЛЬЗОВАТЬ: у вас уже есть идентификатор паттерна или код GVL (из voice_leading_patterns, из URL Gradus или из предыдущего ответа), и вам нужна полная запись — утверждение, реализация, классические ошибки, общедоступные источники — плюс готовая к цитированию строка; вы переходите по ссылке «связанные паттерны». КОГДА НЕ ИСПОЛЬЗОВАТЬ: вы не знаете идентификатор — сначала поищите через voice_leading_patterns. Угадывать идентификатор можно: если промахнётесь, вернутся похожие идентификаторы, а не голая ошибка, так что исправитесь за один дополнительный вызов. ВХОДНЫЕ ДАННЫЕ: { id: string } — либо постоянный код цитирования («GVL-001»), либо читаемый идентификатор паттерна («suspension-4-3»). Оба варианта работают, так что код из предыдущего ответа можно подставлять напрямую. ВЫХОДНЫЕ ДАННЫЕ (JSON): { pattern: { code, id, name, family, statement, realization, whenToUse, commonFaults, sources, related, tags, url, citation }, related: [{ id, name, url }], reference: { name, version, license }, attribution }. При цитировании паттерна используйте строку citation дословно. ПРИ ПРОМАХЕ: API возвращает HTTP 404 с { error: "pattern_not_found", suggestions: [{ id, name, url }] }; этот инструмент показывает тело ошибки в сообщении, так что читайте подсказки и пробуйте снова. ПРИМЕР ВВОДА: { "id": "suspension-4-3" } ТИПИЧНАЯ ЗАДЕРЖКА: 30–200 мс. Кешируется на CDN.

Параметры
  • idstringобязательный

    Код цитирования ("GVL-001") или читаемый идентификатор шаблона ("suspension-4-3"). Оба разрешаются.

voice_leading_patterns

Поиск по справочнику голосоведения Gradus — цитируемые образцы голосоведения и генерал-баса по шести категориям (нормы голосоведения, видовые контрапункты, задержания и обработка диссонансов, каденции, правило октавы, секвенции и басовые движения). Каждый образец формулирует правило, показывает его реализацию в голосах, составленную для справочника, перечисляет типичные ошибки и ссылается на общедоступный трактат, на который опирается (Фукс, Рамо, Кирнбергер, К. Ф. Э. Бах, Фенароли, Кампион, Рипель, Керубини, Проут, Риман), с указанием главы или раздела. ЗАЧЕМ ЭТО НУЖНО: искусство голосоведения было систематизировано столетия назад, а затем разбросано по недоступным трактатам без поискового указателя — поэтому вопросы вроде «как должно разрешаться задержание 4–3», «когда допустимо параллельное движение к октаве» или «какой аккорд берётся над четвёртой ступенью» получают ответы по памяти, ненадёжно. Найдите образец и сошлитесь на него. КОГДА ИСПОЛЬЗОВАТЬ: когда пользователь или студент показывает голосоведение, а вы хотите обосновать свой отзыв цитируемым правилом, а не пересказом; когда пользователь спрашивает, как работают задержание, каденция, секвенция или гармонизация гаммы; перед тем как писать или исправлять голоса, чтобы свериться с нормой, которую собираетесь применить; когда нужно объяснить, какие типичные ошибки допущены в отрывке. КОГДА НЕ ИСПОЛЬЗОВАТЬ: для вопросов о том, как нотация должна ВЫГЛЯДЕТЬ на странице (используйте engraving_rules); для анализа конкретной партитуры (используйте theory_analyze_score — этот инструмент возвращает справочную ссылку, он не читает партитуры); для автоматической проверки видового контрапункта (используйте counterpoint_check); для поиска примеров из репертуара (используйте corpus_search); после кэширования (справочник версионирован). ВХОДНЫЕ ДАННЫЕ: все параметры необязательны. q — подстрока для поиска по названию, описанию, формулировке и тегам (лучшая отправная точка). family — одна из категорий: part-writing, species, suspensions, cadences, rule-of-the-octave, bass-motions. fields — список полей через запятую, чтобы сократить вывод. Если ничего не передано, возвращаются все образцы. ВЫХОДНЫЕ ДАННЫЕ (JSON): { reference: { name,…

Параметры
  • familyenum

    Ограничьте одним из шести семейств.

  • fieldsstring

    Список разрешённых полей, разделённых запятыми, например: "code,id,name,statement".

  • qstring

    Поиск по подстроке в полях code, name, statement и tags.

0.8.0основная
0.7.0
0.6.1
0.6.0
0.5.0
0.4.2
0.4.1
0.4.0
0.2.6
0.2.5
0.2.4
0.2.3
0.2.2
0.2.1
0.1.1
0.1.0

Выберите клиент, чтобы установить delmas41/gradusnotation:

Любой клиент

Конфиг добавления MCP сервера стандартный, обычно он не меняется вообще, поэтому подходит практически к любому ИИ клиенту, поддерживающему MCP.

{
  "mcpServers": {
    "delmas41-gradusnotation-y7lvi1ok0z": {
      "command": "npx",
      "args": [
        "-y",
        "@gradusmusic/notation-mcp"
      ]
    }
  }
}
CursorCursor

Перейдите по ссылке и сервер автоматически будет добавлен в Cursor. Либо откройте/создайте файл ~/.cursor/mcp.json(%USERPROFILE%\.cursor\mcp.json на Windows) и добавьте конфиг сервера:

{
  "mcpServers": {
    "delmas41-gradusnotation-y7lvi1ok0z": {
      "command": "npx",
      "args": [
        "-y",
        "@gradusmusic/notation-mcp"
      ]
    }
  }
}
VS Code

Создайте .vscode/mcp.json в проекте (ключ верхнего уровня — servers):

{
  "servers": {
    "delmas41-gradusnotation-y7lvi1ok0z": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "@gradusmusic/notation-mcp"
      ]
    }
  }
}

Либо добавьте сервер через терминал:

code --add-mcp "{\"name\":\"delmas41-gradusnotation-y7lvi1ok0z\",\"type\":\"stdio\",\"command\":\"npx\",\"args\":[\"-y\",\"@gradusmusic/notation-mcp\"]}"
ClaudeClaude Desktop

Откройте Settings → Developer → Edit Config — это откроет файл claude_desktop_config.json:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json

Впишите сервер и полностью перезапустите Claude Desktop:

{
  "mcpServers": {
    "delmas41-gradusnotation-y7lvi1ok0z": {
      "command": "npx",
      "args": [
        "-y",
        "@gradusmusic/notation-mcp"
      ]
    }
  }
}
Claude CodeClaude Code

Добавьте сервер одной командой в терминале:

claude mcp add delmas41-gradusnotation-y7lvi1ok0z -- npx -y @gradusmusic/notation-mcp

Либо через JSON-конфиг:

claude mcp add-json delmas41-gradusnotation-y7lvi1ok0z "{\"command\":\"npx\",\"args\":[\"-y\",\"@gradusmusic/notation-mcp\"]}"
CodexCodex

Добавьте сервер командой в терминале:

codex mcp add delmas41-gradusnotation-y7lvi1ok0z -- npx -y @gradusmusic/notation-mcp

Либо вручную в ~/.codex/config.toml(%USERPROFILE%\.codex\config.toml на Windows):

[mcp_servers.delmas41-gradusnotation-y7lvi1ok0z]
command = "npx"
args = ["-y", "@gradusmusic/notation-mcp"]
PerplexityPerplexity

MCP доступен подписчикам Perplexity Pro / Max / Enterprise. Локальные серверы — только в приложении для macOS.

  1. Откройте Настройки аккаунта → Connectors.
  2. Установите вспомогательное приложение PerplexityXPC (один раз).
  3. Нажмите Add Connector → вкладка Simple.
  4. В поле Server Name укажите delmas41/gradusnotation, а в поле команды запуска — строку ниже:
npx -y @gradusmusic/notation-mcp

Нажмите Save и дождитесь статуса Running.

WindsurfWindsurf

Откройте Windsurf Settings → Cascade → MCP Servers или отредактируйте файл ~/.codeium/windsurf/mcp_config.json:

{
  "mcpServers": {
    "delmas41-gradusnotation-y7lvi1ok0z": {
      "command": "npx",
      "args": [
        "-y",
        "@gradusmusic/notation-mcp"
      ]
    }
  }
}
ClineCline

В панели Cline нажмите иконку MCP Servers → Configure → Configure MCP Servers (или отредактируйте ~/.cline/mcp.json) и добавьте сервер:

{
  "mcpServers": {
    "delmas41-gradusnotation-y7lvi1ok0z": {
      "command": "npx",
      "args": [
        "-y",
        "@gradusmusic/notation-mcp"
      ],
      "disabled": false,
      "autoApprove": []
    }
  }
}
Continue

Создайте файл в .continue/mcpServers/ (например delmas41-gradusnotation-y7lvi1ok0z.yaml) или добавьте блок в config.yaml. MCP работает только в режиме agent:

mcpServers:
  - name: delmas41-gradusnotation-y7lvi1ok0z
    command: npx
    args:
      - "-y"
      - "@gradusmusic/notation-mcp"
Zed

Выполните agent: add context server или откройте настройки (zed: open settings file) и добавьте сервер в объект context_servers:

{
  "context_servers": {
    "delmas41-gradusnotation-y7lvi1ok0z": {
      "command": "npx",
      "args": [
        "-y",
        "@gradusmusic/notation-mcp"
      ]
    }
  }
}

Похожие MCP-сервера

arikusi/nakkas

arikusi/nakkas

от arikusi

Nakkas - MCP сервер, который даёт ИИ возможность создавать анимированные SVG: от простых иконок до сложной инфографики. Сервер генерирует чистый SVG с CSS и SMIL анимациями без внешних зависимостей, работая локально.

TypeScript⭐ 30
mikechao/metmuseum-mcp

mikechao/metmuseum-mcp

от mikechao

MCP сервер для доступа к коллекции Метрополитен Музея. Ищите произведения искусства через естественные запросы, получайте изображения и детали объектов. Полезен искусствоведам, разработчикам и любителям искусства.

TypeScript⭐ 35
leonardoca1/aesthetics-wiki-mcp

leonardoca1/aesthetics-wiki-mcp

от leonardoca1

Сервер MCP для Aesthetics Wiki - ищи, читай и открывай тысячи эстетик (cottagecore, y2k). Готовые инструменты поиска, изображений, случайной подборки. Полезен дизайнерам, писателям, креаторам для m...

Python⭐ 10
r-huijts/rijksmuseum-mcp

r-huijts/rijksmuseum-mcp

от r-huijts

MCP-сервер для доступа к коллекции Рейксмузеума: поиск картин, подробные детали и изображения, коллекции и временные шкалы художников. Помогает AI-моделям изучать искусство.

JavaScript⭐ 72
molanojustin/smithsonian-mcp

molanojustin/smithsonian-mcp

от molanojustin

MCP-сервер для AI-ассистентов, открывающий доступ к 3+ миллионам объектов Смитсоновского института. Поиск, детальная информация о предметах, изображения и данные о выставках через единый протокол. ...

Python⭐ 10
cfpramod/open-museum-mcp

cfpramod/open-museum-mcp

от cfpramod

Сервер для единого поиска по пяти музейным коллекциям (Мет, Кливленд, Чикаго, Wikimedia Commons, Europeana) с верификацией прав на открытый доступ. Возвращает нормализованные метаданные, готовые ци...

TypeScript⭐ 14
© Каталог MCP, 2026. Все права защищены.
Проект не аффилирован с Anthropic и любыми упомянутыми продуктами.
Все названия и торговые марки принадлежат их владельцам.
Контакты для связи: hi@mcp-katalog.ru

Лука Никитин