# Music Studio (remote · music-studio.linxule.com)

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

- Trust score: 79/100 (medium)
- Change this week: +4
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-10-06

## Components

- remote · `music-studio.linxule.com`: 79/100 (this document), [markdown](https://verifymcp.io/servers/linxule-mcp-music-studio/music-studio.md), [page](https://verifymcp.io/servers/linxule-mcp-music-studio/music-studio)
- npm · `mcp-music-studio`: 38/100, [markdown](https://verifymcp.io/servers/linxule-mcp-music-studio/mcp-music-studio-2.md), [page](https://verifymcp.io/servers/linxule-mcp-music-studio/mcp-music-studio-2)

## Channel facts

- Endpoint: `https://music-studio.linxule.com/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `0.12.4`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-10-06.

- **Endpoint Security**: 77/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - No authorisation is required to call this server. Every tool declares its destructiveHint and none is destructive, so open access doesn't expose one.
  - HTTPS is enforced; there's no plaintext access path.
  - HSTS check failed: the Strict-Transport-Security header is absent.
  - DNSSEC is configured correctly; the domain's records validate against the full chain to the root.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 86/100
  - 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 3878 tokens (~107/item across 36 items; 10 tools + 26 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 33/100
  - Stability observed for 10 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 99/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 97% of tool parameters carry a description.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - We read all 10 captured tool definition(s), and no name or description among them implies an irreversible operation.
  - An AI judge read all 12 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.
  - Supports UI / widget rendering.

## Install

### How do I install the Music Studio MCP server?

Music Studio is a hosted endpoint at https://music-studio.linxule.com/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add --transport http linxule-mcp-music-studio 'https://music-studio.linxule.com/mcp'
```

### Cursor

```json
{
  "mcpServers": {
    "linxule-mcp-music-studio": {
      "url": "https://music-studio.linxule.com/mcp"
    }
  }
}
```

### VS Code

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

### Codex

```toml
[mcp_servers.linxule-mcp-music-studio]
url = "https://music-studio.linxule.com/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "linxule-mcp-music-studio": {
      "type": "remote",
      "url": "https://music-studio.linxule.com/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add linxule-mcp-music-studio --url 'https://music-studio.linxule.com/mcp' --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  linxule-mcp-music-studio:
    url: "https://music-studio.linxule.com/mcp"
```

### Netclaw

```json
{
  "McpServers": {
    "linxule-mcp-music-studio": {
      "Transport": "http",
      "Url": "https://music-studio.linxule.com/mcp"
    }
  }
}
```

### Vellum

```bash
assistant mcp add linxule-mcp-music-studio -t streamable-http -u 'https://music-studio.linxule.com/mcp'
```

### Other

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

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-10-06 (score 79, +1)

No change was recorded against any check on this day. Stability & Change Management went from 27 to 33. That category is still filling its 30-day observation window: 8 days of observed history at the previous scan, 10 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-04 (score 78, +1)

- [functional regression] Resource “ui://sheet-music/0.12.2/mcp-app.html” was removed
- [functional regression] Resource “ui://strudel/0.12.2/strudel-app.html” was removed
- [functional regression] Resource “ui://sheet-music/0.11.2/mcp-app.html” was removed
- [functional regression] Resource “ui://strudel/0.11.2/strudel-app.html” was removed
- [functional regression] Resource “ui://sheet-music/0.11.1/mcp-app.html” was removed
- [functional regression] Resource “ui://strudel/0.11.1/strudel-app.html” was removed
- [functional improvement] Schema quality: 122 → 107
- [functional improvement] Tool coverage: 92% → 97%
- [functional] New resource “ui://sheet-music/0.12.3/mcp-app.html”
- [functional] New resource “ui://strudel/0.12.3/strudel-app.html”
- [functional] New resource “ui://sheet-music/0.11.3/mcp-app.html”
- [functional] New resource “ui://strudel/0.11.3/strudel-app.html”
- [functional] New resource “ui://sheet-music/0.11.2/mcp-app.html”
- [functional] New resource “ui://strudel/0.11.2/strudel-app.html”
- [functional] Server version: 0.12.2 → 0.12.3
- [functional] Server version: 0.11.2 → 0.11.3
- [functional] Server version: 0.11.1 → 0.11.2

### 2026-10-03 (score 77, +1)

- [security] Tool “update-session” rewrote its description, which is the text the model reads
- [security] Tool “get-session” rewrote its description, which is the text the model reads
- [functional regression] Resource “ui://strudel/0.10.2/strudel-app.html” was removed
- [functional regression] Resource “ui://sheet-music/0.10.2/mcp-app.html” was removed
- [functional regression] Resource “ui://sheet-music/0.10.1/mcp-app.html” was removed
- [functional regression] Resource “ui://strudel/0.10.1/strudel-app.html” was removed
- [functional] New resource “ui://sheet-music/0.11.0/mcp-app.html”
- [functional] New resource “ui://strudel/0.11.0/strudel-app.html”
- [functional] New resource “ui://sheet-music/0.10.2/mcp-app.html”
- [functional] New resource “ui://strudel/0.10.2/strudel-app.html”
- [functional] Server version: 0.10.2 → 0.11.0
- [functional] Server version: 0.10.1 → 0.10.2

### 2026-10-02 (score 76, 0)

- [security] The server rewrote its instructions, which are the text every model session reads
- [security] Tool “get-session” rewrote its description, which is the text the model reads
- [security] Tool “get-strudel-guide” rewrote its description, which is the text the model reads
- [security] Tool “play-live-pattern” rewrote its description, which is the text the model reads
- [functional regression] Schema quality: 3170 → 4374
- [functional regression] Schema quality: 3170 → 4301
- [functional regression] Schema quality: 3170 → 3559
- [functional] Schema quality: good → excellent
- [functional] New resource “ui://strudel/0.10.1/strudel-app.html”
- [functional] New resource “ui://sheet-music/0.10.1/mcp-app.html”
- [functional] New resource “Strudel Guide: interactive”
- [functional] New resource “Strudel Guide: craft”
- [functional] New resource “Strudel Guide: debugging”
- [functional] New resource “Strudel Guide: film”
- [functional] New resource “Strudel Guide: stage”
- [functional] New resource “Strudel Guide: gallery”
- [functional] Server version: 0.9.2 → 0.10.1
- [functional] Server version: 0.9.0 → 0.9.2
- [functional] Server version: 0.7.0 → 0.9.0
- [functional] Server version: 0.6.0 → 0.7.0
- [functional] New tool “get-session”
- [functional] New tool “update-session”
- [cosmetic] “play-live-pattern” added an optional parameter “session”
- [cosmetic] “get-strudel-guide” added an optional parameter “piece”
- [cosmetic] “get-strudel-guide” reworded the description of “topic”

### 2026-10-01 (score 76, +1)

No change was recorded against any check on this day. Stability & Change Management went from 13 to 17. That category is still filling its 30-day observation window: 4 days of observed history at the previous scan, 5 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-09-29 (score 75, +1)

No change was recorded against any check on this day. Stability & Change Management went from 7 to 10. That category is still filling its 30-day observation window: 2 days of observed history at the previous scan, 3 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-09-28 (score 74, 0)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-09-27 (score 74, +1)

- [functional improvement] Stability: unverified → 0.03

## MCP tools (10)

### `create-share-link` (~173 tokens)

Create Music Share Link

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. Playback does not require this tool, and a play result's '▶ Play in browser' link already opens the piece for anyone when it fit in the link; this tool gives a short stored link. Provide kind 'score' with score, or kind 'play' with pattern. Never include private information or secrets.

Input parameters:

- `kind` (string, required)
- `pattern` (object): The arguments you gave play-live-pattern (theme and session are not carried).
- `score` (object): The arguments you gave play-sheet-music.

### `play-sheet-music` (~578 tokens)

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.

Input parameters:

- `abcNotation` (string): ABC notation string. Include chord symbols ("C", "Am7") above notes for auto-accompaniment with style presets.
- `drumIntro` (integer): 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.
- `instrument` (string): 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' give…
- `style` (string): 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, cl…
- `swing` (number): 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 tak…
- `tempo` (number): Tempo in BPM (40-240). Overrides Q: in ABC notation.
- `title` (string): Piece title (overrides T: in ABC). Shown in the widget header and used as the filename stem for the WAV/MIDI downloads.
- `transpose` (integer): 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-pattern` (~716 tokens)

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.

Input parameters:

- `autoplay` (boolean): Start playing immediately (default: true). May require user click due to browser autoplay policy.
- `bpm` (number): Tempo in BPM (40-300). Converts to setcps() automatically.
- `code` (string, required): 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 exp…
- `session` (boolean): 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 while…
- `theme` (string): 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').
- `title` (string): Pattern title displayed in the widget header (e.g. 'Midnight Rain').
- `visuals` (string): 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). It…

### `get-session` (~192 tokens)

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.

Input parameters:

- `session` (string, required): The session id from play-live-pattern's result (16 lowercase letters/digits).
- `wait` (string): 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 kee…

### `update-session` (~216 tokens)

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

Input parameters:

- `code` (string, required): The complete new Strudel pattern (same rules as play-live-pattern's code).
- `quantize` (integer): Land on the next multiple of this many cycles (bars). 1 = next bar (default), 4/8 = phrase, 0 = now.
- `session` (string, required): The session id from play-live-pattern's result (16 lowercase letters/digits).

### `get-music-guide` (~127 tokens)

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

Input parameters:

- `topic` (string, required): Reference topic. Start with 'genres' for complete examples, 'styles' to understand presets, or 'instruments' for the full instrument list.

### `get-strudel-guide` (~349 tokens)

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

Input parameters:

- `piece` (string): With topic 'gallery': the complete code of one piece (the index lists them).
- `topic` (string, required): 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 musi…

### `search-music-docs` (~160 tokens)

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.

Input parameters:

- `library` (string): Which library to search: 'strudel' for live coding patterns, 'abcjs' for sheet music notation.
- `query` (string, required): 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-harmony` (~359 tokens)

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.

Input parameters:

- `chords` (array): Chord symbols, e.g. ["Dm7","G7","Cmaj7"]. For detect-key/scale-for-chord.
- `key` (string): Key, e.g. "C", "A minor", "F# major". For suggest-progression/key-chords.
- `notes` (array): Note names, e.g. ["c4","e4","g4","b4"] or ["C","Eb","G"]. For detect-chord/detect-key.
- `romanNumerals` (array): 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, required): 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.

### `convert-abc-to-strudel` (~303 tokens)

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.

Input parameters:

- `abcNotation` (string, required): ABC notation to convert (the same string you'd pass to play-sheet-music).
- `sound` (string): 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'.
- `voice` (integer): Which voice to convert, 1-based, counted across all staves (default 1). Multi-voice tunes report how many voices there are.

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/linxule-mcp-music-studio/music-studio#diagnostics

## Score history

- 2026-10-06: 79
- 2026-10-04: 78
- 2026-10-03: 77
- 2026-10-02: 76
- 2026-10-01: 76
- 2026-09-30: 75
- 2026-09-29: 75
- 2026-09-28: 74
- 2026-09-27: 74
- 2026-09-26: 73

## Common questions

### What is the Music Studio MCP server?

Music Studio is an MCP server listed in the public MCP registry as io.github.linxule/mcp-music-studio. ABC sheet music + Strudel live coding: songs, videos and live jam sessions in ext-apps widgets. This page covers its hosted endpoint (https://music-studio.linxule.com/mcp).

### Is the Music Studio MCP server safe to use?

Music Studio scores 79 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the Music Studio MCP server expose?

Music Studio exposes 10 tools: create-share-link, play-sheet-music, play-live-pattern, get-session, update-session, and 5 more. Their descriptions and schemas cost roughly 3,173 tokens of context every time the server is loaded.

### Does the Music Studio MCP server require authentication?

No. We connected to Music Studio without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.

### Is the Music Studio MCP server still maintained?

Music Studio is still listed as active in the MCP registry. We last reached this channel on 6 October 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

## Links

- Remote endpoint: https://music-studio.linxule.com/mcp
- Repository: https://github.com/linxule/mcp-music-studio
- Website: https://music-studio.linxule.com/
- Changelog RSS feed: https://verifymcp.io/servers/linxule-mcp-music-studio/music-studio.xml
- Changelog JSON feed: https://verifymcp.io/servers/linxule-mcp-music-studio/music-studio.json
- HTML version of this page: https://verifymcp.io/servers/linxule-mcp-music-studio/music-studio
