Music Studio

io.github.linxulePublished by GitHub account linxulev0.13.0Updated Oct 24, 2026

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

VerifiedStreamable HTTPWeb executableDeveloper ToolsMedia & Design

Overview

AI-generated overview

Music Studio lets an assistant write, play and live-code music in the chat: ABC sheet music and Strudel patterns in an interactive player.

What you can do
  • Write and play sheet music in ABC notation with General MIDI instruments, styles, chord symbols, editing and WAV/MIDI download
  • Open a Strudel live-coding player with drum machines, synths, effects, piano rolls and shader visuals
  • Run live sessions: read what the listener did, wait for a Pass, and swap new code in on the next bar or phrase
  • Look up ABC and Strudel references, search the official docs, analyze chords and keys, and convert ABC melodies into Strudel patterns
  • Create a hosted share link that anyone can open without signing in
When to use it
Useful when you want to compose, arrange or remix music conversationally, jam with an assistant in a live-coding player, or turn a scored melody into a live pattern. Also handy for quick music-theory checks such as naming chords or finding a key.
Requirements
Either the hosted remote endpoint (no install, no account) or the npm package mcp-music-studio run locally with npx. A chat app that supports MCP, and for in-chat players one that supports MCP Apps; terminal clients get a browser link instead. A browser tap on Play may be needed before sound starts.
Before you install
create-share-link uploads the piece to the hosted service for 30 days and anyone with the link can view and play it, so avoid private information in scores, code, titles or spoken lines. Live sessions keep a log until two hours after last activity, and spoken lines are cached for 30 days. Links that fit the music carry it in the URL itself.

Installation

In SourceWeft

  1. Open Music Studio in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/io.github.linxule%2Fmcp-music-studio/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config.

{
  "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.

Source: README.md at commit 83aa0bb

Tools

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.

ParametersstyleswingtempotitledrumIntrotransposeinstrumentabcNotation

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.

Parametersbpmcoderequiredthemetitlesessionvisualsautoplay

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.

Parameterswaitsessionrequired

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').

Parameterscoderequiredsessionrequiredquantize

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).

Parameterstopicrequired

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`).

Parameterspiecetopicrequired

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.

Parametersqueryrequiredlibrary

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.

ParameterskeytaskrequirednoteschordsromanNumerals

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.

ParameterssoundvoiceabcNotationrequired

Version history

14
  1. v0.13.0LatestOct 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

Score

100% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts