linxule avatar

Music Studio

linxule/mcp-music-studio

Turns Claude into a two-mode music workstation with inline playback and editing. The ABC notation side renders sheet music with multi-instrument audio, 8 accompaniment presets (rock, jazz, bossa, etc.), and 30 instrument voices. The Strudel side does live coding with TidalCycles mini-notation, 72 drum banks, effects chains, and an editable REPL that updates in real time. Both modes stream visual output directly into Claude Desktop and claude.ai through ext-apps, with WAV export and semantic search over music documentation. Ships as a remote URL you paste into settings or runs locally via npx. Reach for this when you want to compose, perform, or teach music concepts without leaving the chat window.

GitHub stars
77
tools
10
transport
STDIO, HTTP
last updated
Nov 7, 2026

Install

From registry metadata
$ npx add-mcp https://music-studio.linxule.com/mcp --name mcp-music-studio

Run in your terminal. add-mcp asks which agents to add it to (Claude Code, Codex, Cursor and more). Add -g to install it for every project.

Review the command, arguments and environment values before installing. MCP servers run with your local permissions.

Other ways

Claude Code

$ claude mcp add --transport http mcp-music-studio https://music-studio.linxule.com/mcp

Run in your terminal. Add --scope user to make it available in every project.

Tools

Verified live · 10 tools

Verified live against the running server on Nov 13, 2026.

create-share-linkCreate a hosted music share link only when the user asks to share or store a piece online. Uploads the supplied score or pattern to MCP Music Studio for 30 days; anyone with the link can view and play it without signing in. Creating the same share again refreshes its expiry. P...3 params

Create a hosted music share link only when the user asks to share or store a piece online. Uploads the supplied score or pattern to MCP Music Studio for 30 days; anyone with the link can view and play it without signing in. Creating the same share again refreshes its expiry. P...

Parameters* required
kind*string
one of score · play
patternobject
The arguments you gave play-live-pattern (theme and session are not carried).
scoreobject
The arguments you gave play-sheet-music.
play-sheet-musicWrite 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,...8 params

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

Parameters* required
abcNotationstring
ABC notation string. Include chord symbols ("C", "Am7") above notes for auto-accompaniment with style presets.default: X:1 T:Twinkle, Twinkle Little Star M:4/4 L:1/4 K:C C C G G | A A G2 | F F E E | D D C2 | G G F F | E E D2 | G G F F | E E D2 | C C G G | A A G2 | F F E E | D D C2 |
drumIntrointeger
Bars of count-in before the melody starts (0-8). Needs a style preset — the count-in is played by that style's drum kit, so without a style you get silent bars instead.
instrumentstring
Default instrument for the main voice — any of the 128 General MIDI names (e.g. 'Flute', 'Cello', 'Banjo', 'Alto Sax'). Matching is fuzzy and picks the lowest GM program among the hits, so 'sax' gi...
stylestring
Accompaniment style. Adds drums, bass, and chord patterns automatically. Your ABC needs chord symbols ("C", "Am") for accompaniment to work. Options: rock, jazz, bossa, waltz, march, reggae, folk,...one of rock · jazz · bossa · waltz · march · reggae
swingnumber
Swing as the share of the beat given to its first half. 50 = straight, 60 ≈ 3:2, 66 = triplet swing, 75 = maximum (dotted eighth + sixteenth). Anything at or below 50 is treated as no swing. Only t...
temponumber
Tempo in BPM (40-240). Overrides Q: in ABC notation.
titlestring
Piece title (overrides T: in ABC). Shown in the widget header and used as the filename stem for the WAV/MIDI downloads.
transposeinteger
Transpose by semitones (-12 to 12). Positive=higher, negative=lower. Rewrites the notation and the key signature, so the printed score matches what plays.
play-live-patternLive-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 .pu...7 params

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

Parameters* required
autoplayboolean
Start playing immediately (default: true). May require user click due to browser autoplay policy.
bpmnumber
Tempo in BPM (40-300). Converts to setcps() automatically.
code*string
Strudel pattern code. Uses TidalCycles mini-notation in JavaScript. Use stack() to layer drums, bass, and melody. Set tempo with setcps(bpm/60/4) or use the bpm parameter. The REPL plays the LAST e...
sessionboolean
Optional: keep this player open as a live session. update-session then swaps new code in on the bar, and get-session reports what played and what the user did. For a jam, or a piece you change whil...
themestring
Editor colour scheme. It also sets the ground the visuals sit on, so pick a dark one when the visual is the point (e.g. 'nord', 'sonicPink', 'tokyoNight').one of strudelTheme · algoboy · archBtw · androidstudio · atomone · aura
titlestring
Pattern title displayed in the widget header (e.g. 'Midnight Rain').
visualsstring
A ready-made visual for code that has none of its own: pianoroll, punchcard, scope or spectrum (drawn behind the code), or hydra-kaleid, hydra-pulse, hydra-wash or hydra-feed (shader backgrounds)....one of none · pianoroll · punchcard · scope · spectrum · hydra-kaleid
get-sessionOnly 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...2 params

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

Parameters* required
session*string
The session id from play-live-pattern's result (16 lowercase letters/digits).
waitstring
Listen instead of just reading: 'pass' until the listener presses Pass, 'activity' until they play. Returns at once if that already happened since your last read, else after ~40 s — call again to k...one of pass · activity
update-sessionOnly 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 lengt...3 params

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

Parameters* required
code*string
The complete new Strudel pattern (same rules as play-live-pattern's code).
quantizeinteger
Land on the next multiple of this many cycles (bars). 1 = next bar (default), 4/8 = phrase, 0 = now.
session*string
The session id from play-live-pattern's result (16 lowercase letters/digits).
get-music-guideReference 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), arra...1 params

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

Parameters* required
topic*string
Reference topic. Start with 'genres' for complete examples, 'styles' to understand presets, or 'instruments' for the full instrument list.one of instruments · drums · abc-syntax · arrangements · genres · styles
get-strudel-guideReference 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 (s...2 params

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 (s...

Parameters* required
piecestring
With topic 'gallery': the complete code of one piece (the index lists them).one of first-light · duet · petri-dish · lossy-terminal · signal-corruption · weather-machine
topic*string
Reference topic. Start with 'genres' for working templates, 'sounds' for instruments, 'visuals' for draw methods and presets, 'hydra' for shader backgrounds, 'advanced' for sample loading. For a mu...one of mini-notation · sounds · effects · patterns · genres · tips
search-music-docsSearch 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, advanc...2 params

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, advanc...

Parameters* required
librarystring
Which library to search: 'strudel' for live coding patterns, 'abcjs' for sheet music notation.one of strudel · abcjsdefault: strudel
query*string
What you want to know. Be specific. Good: 'how to use FM synthesis with envelope' or 'chop and slice sample manipulation'. Bad: 'effects' or 'help'.
analyze-harmonyMusic 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...5 params

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

Parameters* required
chordsarray
Chord symbols, e.g. ["Dm7","G7","Cmaj7"]. For detect-key/scale-for-chord.
keystring
Key, e.g. "C", "A minor", "F# major". For suggest-progression/key-chords.
notesarray
Note names, e.g. ["c4","e4","g4","b4"] or ["C","Eb","G"]. For detect-chord/detect-key.
romanNumeralsarray
Roman numerals to render in the key, e.g. ["ii7","V7","Imaj7"] or ["I","V","vi","IV"]. Optional for suggest-progression — omit it to get common progressions instead.
task*string
What to work out. detect-chord needs notes; detect-key needs notes or chords; scale-for-chord needs chords; suggest-progression/key-chords need a key.one of detect-chord · detect-key · suggest-progression · scale-for-chord · key-chords
convert-abc-to-strudelTurn 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...3 params

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

Parameters* required
abcNotation*string
ABC notation to convert (the same string you'd pass to play-sheet-music).
soundstring
Strudel sound for the melody (defaults to the tune's %%MIDI program, else "gm_piano"). Use a GM soundfont name like gm_flute or gm_epiano1 — see get-strudel-guide topic 'sounds'.
voiceinteger
Which voice to convert, 1-based, counted across all staves (default 1). Multi-voice tunes report how many voices there are.

Sponsors

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.


View the full README on GitHub

Details

Repository
github.com/linxule/mcp-music-studio
Website
music-studio.linxule.com
Category
Media & Entertainment
Package
mcp-music-studio
Transport
STDIO, HTTP
Registry
MCP registry, active
Resources
26
Prompts
3
Tools verified
Nov 13, 2026

More from linxule

Related Media & Entertainment MCP servers

View all
1kirbah avatarYouTube Datakirbah/mcp-youtubeYouTube MCP server for token-optimized, structured data using the YouTube Data API v3.33stars
2synter-media-ai avatarSynter Adssynter-media-ai/mcp-serverRun ads across 16 ad platforms from any MCP client. Hosted OAuth at mcp.synterai.com.0stars
3kirbah avatarKirbah Mcp Youtubekirbah/mcp-youtubeProvide token-optimized, structured YouTube data to enhance your LLM applications. Access efficien…19stars
4zeropointrepo avatarTranscriptAPI: YouTube Transcript and Search MCPzeropointrepo/youtube-mcpTranscriptAPI.com: hosted YouTube transcripts, search, channels and playlists for AI agents13stars
5mcpware avatarInstagram Mcpmcpware/instagram-mcpInstagram MCP — 23 tools for Instagram Graph API: posts, DMs, stories, reels, analytics.12stars
6strato-space avatarMedia Gen Mcpstrato-space/media-gen-mcpMCP server for OpenAI Images/Videos and Google GenAI (Veo) media generation.8stars