Music Studio

io.github.linxule由 GitHub 账号 linxule 发布v0.14.0更新于 Nov 8, 2026

ABC sheet music + Strudel live coding: songs, videos and live jam sessions in ext-apps widgets.

已验证Streamable HTTP可网页运行媒体与设计AI 与机器学习

概览

AI 生成的概览

Music Studio 让助手在对话中创作、播放和现场编码音乐:ABC 乐谱与 Strudel 模式都在可交互播放器中呈现。

可以做什么
  • 用 ABC 记谱法编写并播放乐谱,支持 General MIDI 乐器、风格伴奏、和弦标记、就地编辑与 WAV/MIDI 下载
  • 打开 Strudel 现场编码播放器,含鼓机、合成器、效果器、钢琴卷帘与着色器视觉
  • 进行实时会话:读取听众的操作、等待 Pass,并在下一小节或下一乐句换入新代码
  • 查询 ABC 与 Strudel 参考、搜索官方文档、分析和弦与调性,并把 ABC 旋律转换为 Strudel 模式
  • 创建托管分享链接,任何人无需登录即可打开
适用场景
适合以对话方式作曲、编曲或混音,在实时编码播放器中与助手一起即兴,或把写好的旋律转成现场模式。也适合快速做和弦命名、找调等乐理查询。
运行要求
可使用托管远程端点(无需安装、无需账号),或用 npx 在本地运行 npm 包 mcp-music-studio。需要支持 MCP 的聊天应用;聊天内播放器需支持 MCP Apps,终端客户端则给出浏览器链接。首次播放可能需在浏览器中点击 Play 才能出声。
安装前请注意
create-share-link 会把作品上传到托管服务并保留 30 天,任何拿到链接的人都能查看和播放,因此不要在乐谱、代码、标题或朗读台词中放入隐私信息。实时会话的日志保留到末次活动后两小时,朗读台词缓存 30 天。能塞进链接的作品会直接编码在 URL 中。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Music Studio,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Web executable,通过 Streamable HTTP。 远程服务在工作区中配置后即可从网页运行时运行。

交给智能体安装

把这段提示词粘贴到 Claude Code、Codex、Cursor 等智能体,或 SourceWeft 对话中。智能体会读取该服务器的安装指南,先向你展示发布者、端点和登录方式,经你同意后再把它添加到你的客户端。密钥不会写进任何命令。

阅读 https://sourceweft.com/mcp/io.github.linxule%2Fmcp-music-studio/install.md,并按其中说明把这个 MCP 服务器接入我的客户端。修改任何配置之前,先告诉我它的发布者、端点和登录方式,等我确认。不要把 API 密钥写进命令或我会提交的文件;问我密钥应从哪里获取。

查看智能体所依据的安装指南

其他 MCP 客户端

把它添加到你客户端的 mcpServers 配置中。

{
  "mcpServers": {
    "music-studio": {
      "type": "http",
      "url": "https://music-studio.linxule.com/mcp"
    }
  }
}

README

MCP Music Studio

English · 简体中文 · Français · 日本語

[npm] [CI] [License: AGPL-3.0-or-later]

Make music with an AI assistant, inside the chat. Ask for a song and get sheet music you can play and edit. Ask for a beat and get a live-coding player with visuals. Then edit the piece together, move its controls while it plays, or take turns with the AI.

Music Studio is an MCP server. MCP is a standard way to give an AI assistant extra tools; you need a chat app that supports it, such as Claude. In Claude, claude.ai and other apps that support MCP Apps, the player appears in the chat. In Claude Code and other terminal apps, you get a link that opens the player in your browser.

[A Strudel pattern with its piano roll fed into a Hydra shader, then Stage mode taking the whole frame]

One live set in the player. Every section is a change made while the music plays. Watch the full video.

Quick start

Add this URL as a remote MCP server. There is nothing to install.

https://music-studio.linxule.com/mcp
  • Claude and claude.ai: open Settings, then Connectors, add a custom connector, and paste the URL.
  • Claude Code: run claude mcp add --transport http music-studio https://music-studio.linxule.com/mcp

Then ask for a song, a beat or a music video. No account is needed. Your browser may hold back sound until you tap Play in the player once.

What you can make

  • Sheet music. Scores in ABC notation, drawn as sheet music and played with any of the 128 General MIDI instruments. Add a style (rock, jazz, bossa and others) for drums, bass and chords. Edit the score in place, transpose it, and download WAV or MIDI. More about sheet music
  • Live coding. Patterns in Strudel, the JavaScript version of TidalCycles, in an editor you can change while it plays: drum machines, synths, effects, piano rolls and Hydra shader visuals that follow the music. More about live coding
  • Music videos and stage pieces. Pattern code can draw, react to every note, respond to taps and speak lines in time with the music. The guide's gallery has a short film, a spoken duet and a Game of Life that composes.
  • Play together. A live session keeps one player open. The AI reads what you did and puts its reply on the same player, starting at the next bar. Faders, pads and your phone's motion become controls. More about playing together
  • Share. When a score or pattern is small enough to fit in a link, the reply includes a link that opens the full player. For a larger piece, ask for a stored link, which lasts 30 days.

Tools

ToolWhat it does
play-sheet-musicDraw and play a score written in ABC notation
play-live-patternOpen a live-coding player for Strudel code, optionally as a live session
get-sessionRead what happened in a live session, or wait until the person listening presses Pass
update-sessionSwap new code into a live session's player on the next bar or phrase
get-music-guideReference for ABC notation: syntax, instruments, styles, genres
get-strudel-guideReference for Strudel: sounds, effects, visuals, stage, gallery pieces
search-music-docsSearch the Strudel and abcjs documentation
analyze-harmonyName chords, find the key, build progressions
convert-abc-to-strudelTurn a scored melody into a Strudel pattern
create-share-linkStore a piece for 30 days and return a link anyone can open

Parameters, prompts and the players' own tools: tools and prompts.

Run it on your computer

The hosted URL needs no setup. To run the server locally instead, use npm:

bash
claude mcp add music-studio -- npx -y mcp-music-studio --stdio

Setup for Claude Desktop, Codex, Gemini CLI, VS Code, Cursor, Windsurf and others, plus render modes and HTTP mode: install and client setup.

More

  • Changelog
  • Development
  • Privacy policy. Playback does not save your piece in the share database. A live session keeps a log until two hours after its last activity, and spoken lines are cached for 30 days. Links that fit the music in the URL carry it in the link itself. Do not put private information in scores, code, titles or spoken lines. create-share-link stores a piece only when you ask.
  • Report an issue

Credits and license

Forked from the Sheet Music Server example in MCP ext-apps by Anthropic (MIT). Live coding uses Strudel, notation uses abcjs, and shader visuals use hydra-synth.

Licensed under AGPL-3.0-or-later. The original MIT notices are in LICENSES/MIT.txt. See SOURCE.md for the corresponding source and THIRD_PARTY_NOTICES.md for dependency and audio licensing. Music you make is not automatically licensed under the software license.

来源:README.md,提交 83aa0bb

工具

10

play-sheet-music

Play Sheet Music

Write a score in ABC notation and play it as sheet music: a melody, a harmonized piece, a multi-voice arrangement or a well-known tune, on any of the 128 General MIDI instruments. Put chord symbols above the notes and add a style (rock, jazz, bossa, waltz, folk...) for drums, bass and chords. The user can edit the score in the player, change its style and instrument, and download WAV or MIDI. The result confirms the parse; it returns no audio. Start with get-music-guide topic 'genres'; 'abc-syntax' and 'instruments' for the rest. The music player renders inline with interactive playback controls.

输入参数styleswingtempotitledrumIntrotransposeinstrumentabcNotation

play-live-pattern

Play Live Pattern

Live-code music in Strudel (TidalCycles mini-notation in JavaScript) and play it in a player the user can edit. Layer drums, bass and melody with stack(): 71 drum-machine banks, 128 GM instruments, synths and a full effects chain. Add .pianoroll() for a live piano roll (or .punchcard()/.scope()/.spectrum(), one per pattern), pass `visuals` for a ready-made animation and `theme` for the editor colours. Each call creates a NEW player. Optional, when you want more (get-strudel-guide topic in brackets): shader backgrounds that follow the music — start with `await initHydra()`, lock to the beat with H(pattern), react to the sound with () => a.fft[0] ('hydra'); canvases, scenes and spoken lines for music videos and films ('stage', 'film'); taps, faders, pads and controls you draw, played by the user; tilt and mic, which follow the phone on the browser player (a chat's frame usually blocks them) ('interactive'); complete pieces ('gallery'). To jam back and forth, or to change a piece while it plays, pass session: true, then use update-session and get-session. The Strudel REPL renders inline with an editable code editor, visualizations, and playback controls.

输入参数bpmcode必填themetitlesessionvisualsautoplay

get-session

Read Live Session

Only for a live session (play-live-pattern session: true). Reads whether the player is up and what it played, its errors and silences, and what the human did since your last read: taps, changes to remember() state, code they ran, a Pass to you, or End. Read it before assuming a piece played. With wait: 'pass' it listens until the human presses Pass, so a whole back-and-forth set fits in one turn: update-session, get-session(wait: 'pass'), answer, listen again.

输入参数waitsession必填

update-session

Update Live Session

Only for a live session. Swaps new code into the session's player while the music keeps playing. Send the WHOLE pattern, as for play-live-pattern. It lands on the next bar (quantize 1, the default), the next multiple of n bars, or at once (0): set quantize to your phrase length (8-bar phrase → 8). If the player answers within a few seconds, the result says whether it ran the code, or its error. To change a piece's remember() state, ship a merge, not a new start value (get-strudel-guide topic 'interactive').

输入参数code必填session必填quantize

get-music-guide

Music Reference Guide

Reference for ABC sheet music. Topics: genres (complete templates: jazz, blues, folk, rock, bossa, a 3/4 minuet, a lullaby), styles (what each accompaniment preset does), instruments (GM list + combos), drums (patterns + percussion notes), abc-syntax (notation reference), arrangements (multi-voice patterns), midi-directives (%%MIDI reference).

输入参数topic必填

get-strudel-guide

Strudel Reference Guide

Reference and recipes for Strudel live coding. Music: genres (complete templates: techno, house, dnb, ambient, jazz, lofi, synthwave), mini-notation, sounds (synths, 71 drum banks, 128 GM instruments, vcsl samples), effects, patterns, tips (tempo, common mistakes), advanced (samples, wavetables, signals, chord voicings). Visuals: visuals (draw methods, presets, themes), hydra (shader backgrounds, H(pattern), the audio-reactive a.fft). Optional modules — the code is real browser JavaScript: stage (your own canvases, onFrame/onEvent/onTap, say), film (scenes on bars, text, narration), interactive (taps into notes, faders/pads/xy, tilt/mic, remember() for controls you draw, live sessions), craft (what makes a piece land), debugging (what the player reports back), gallery (complete pieces; fetch one with `piece`).

输入参数piecetopic必填

search-music-docs

Search Music Documentation

Search detailed documentation for Strudel live coding or ABC/ABCJS notation. Returns relevant code examples and explanations from the official docs. Use this when the curated guides (get-strudel-guide, get-music-guide) don't cover what you need — for specific functions, advanced techniques, or when you're unsure about syntax. Powered by semantic search over strudel.cc and ABCJS docs.

输入参数query必填library

analyze-harmony

Analyze Harmony

Music theory helper: name a chord from notes, guess the key, get a progression, or list what fits a key. Returns both the ABC chord-symbol spelling (for play-sheet-music) and the Strudel form (for play-live-pattern). Tasks: detect-chord (notes -> chord name + what to play next), detect-key (notes or chords -> best key + diatonic chords), suggest-progression (key [+ romanNumerals] -> chord symbols), scale-for-chord (chords -> the scale to improvise over each), key-chords (key -> every diatonic triad, seventh, and chord scale). Use it before writing chord symbols for a style preset, or to check a harmonization.

输入参数keytask必填noteschordsromanNumerals

convert-abc-to-strudel

Convert ABC to Strudel

Turn an ABC melody into Strudel mini-notation so a scored piece can be remixed live. Returns runnable code — setcps() from the Q: tempo, one [...] bar group per bar inside note("<...>"), with a chord("<...>").voicing() layer stacked alongside it when the ABC has chord symbols (one stack(), because Strudel plays only the last expression) — then pass it to play-live-pattern. Durations become @ weights, rests become ~, triplets nest, the key signature is folded into the note names, and %%MIDI program picks the sound. Lists what was lost (grace notes, dynamics, repeats, lyrics, other voices, inline tempo changes, a short final bar, ABC's own gchord/drum accompaniment). Pick a single voice with `voice`; re-run per voice and stack() them for a full arrangement.

输入参数soundvoiceabcNotation必填

版本历史

14
  1. v0.13.0Oct 19, 2026
  2. v0.12.4Oct 5, 2026
  3. v0.12.3Oct 4, 2026
  4. v0.11.3Oct 4, 2026
  5. v0.11.0Oct 3, 2026
  6. v0.10.1Oct 2, 2026
  7. v0.9.0Oct 2, 2026
  8. v0.7.0Oct 2, 2026
  9. v0.6.0Sep 26, 2026
  10. v0.5.14Sep 25, 2026
  11. v0.5.13Sep 25, 2026
  12. v0.5.8Sep 24, 2026
  13. v0.5.7Sep 21, 2026
  14. v0.5.6Sep 16, 2026

评分

已满足适用检查项的 100%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通必需25 分
  • 已声明认证方式必需10 分
  • 已列出工具必需15 分
  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分