DJ Claude

io.github.p-poss由 GitHub 帳號 p-poss 發布v0.1.6更新於 Nov 3, 2026

Agents can now live code music for you, themselves, and each other while they work.

發布方自己的服務:Claude Platform Docs

已驗證STDIO僅桌面媒體與設計AI 與機器學習

概覽

AI 產生的概覽

DJ Claude 是本地 MCP 伺服器,讓 AI 助理以 Strudel 即時編寫並播放音樂、疊加 jam 聲部,並儲存或匯出混音。

可以做什麼
  • 以預設、氛圍或直接傳入 Strudel 程式碼播放音樂,並停止或查看目前播放內容
  • 依角色(鼓、貝斯、旋律)新增、更新、預覽與清除 jam 聲部
  • 用單一指令編排整組樂團,並讓各聲部依階段演進
  • 分析混音的頻率平衡,並在 Node 與瀏覽器音訊後端之間切換
  • 儲存、列出、載入並匯出混音快照為 Strudel 程式碼
  • 讀取內建的 Strudel 語法、角色與範例資源,自行撰寫原創樂段
適用情境
適合在工作時播放背景或生成式音樂,或讓助理撰寫並演奏即時編碼樂段、與其他代理協作疊加聲部。若只需要一般音樂播放器、不需由助理控制,則不必安裝。
執行需求
透過 npx 在本機執行,需要 Node.js 18 以上版本。不需 API 金鑰:預設、氛圍與直接傳入 Strudel 程式碼皆可使用。選用 ANTHROPIC_API_KEY 可啟用文字提示生成;DJ_CLAUDE_BROWSER=1 改用瀏覽器音訊;DJ_CLAUDE_PORT 設定多代理模式的 HTTP 連接埠。Linux 上 Node 音訊後端需要 JACK 或 PipeWire-JACK。
安裝前請注意
選用的 ANTHROPIC_API_KEY 會從環境變數或 .env 檔讀取,使用提示生成時會傳送給 Anthropic;網頁版的 ELEVENLABS_API_KEY 屬另一用途。相關工具會改變播放狀態與已儲存的快照,README 也建議在 Claude Code 中自動允許全部工具呼叫,這會取消逐次確認。HTTP 多代理模式會在本機連接埠上監聽。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 DJ Claude,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

     _  _                _                 _  __| |(_)        ___  | |  __ _  _   _  __| |  ___ / _` || |       / __| | | / _` || | | |/ _` | / _ \| (_| || |  _   | (__  | || (_| || |_| | (_| ||  __/ \__,_|| | (_)   \___| |_| \__,_| \__,_|\__,_| \___|      _/ |     |__/

DJ Claude

The live music engine for AI agents.

[npm] [License: AGPL v3] [GitHub]


About

DJ Claude is the only music MCP server with multi-agent collaboration. Multiple AI agents connect over HTTP and jam together in real-time — one adds drums, another layers bass, a third drops a melody — and everything composes automatically. It works in your terminal, browser, or as a Claude Code plugin with slash commands. No browser tab, no API key, no external services required.

Under the hood, DJ Claude uses Strudel — a live coding environment for music — to generate and play patterns in real time. 20 MCP tools, 3 resources, conductor mode, mix snapshots, 22 presets, and 8 vibes. Agents can make music for you, themselves, and each other while they work.

Why DJ Claude?

  • Multi-agent jam sessions — the first music MCP where multiple agents connect over HTTP and build music together in real-time, each adding layers that compose automatically
  • Zero dependencies — no browser tab, no API key, no external services. Every tool works out of the box
  • Claude Code plugin — one-step install from the marketplace with 20 slash commands
  • Conductor mode — orchestrate a full band from a single directive, with auto-detected templates (jazz combo, rock band, electronic, ambient, and more)
  • Agent-native — 3 MCP resources teach any connected agent the Strudel language so it can compose original music, not just pick from presets

Ways to Play

ModeCommandDescription
Claude Code plugin/plugin install dj-claudeSlash commands + MCP server, one-step install
Web appclaude.djSingle-agent browser experience, no API key needed
Terminal TUInpx dj-claudeInteractive terminal DJ
TUI + Web audionpx dj-claude --browserTUI with browser audio engine for higher quality sound
Headlessnpx dj-claude --headless "lofi"Script and automation friendly, plays and exits (--duration N to set seconds, default 10)
MCP servernpx dj-claude-mcpFor AI agent integration (Cursor, Windsurf, Zed, etc.)
MCP HTTP servernpx dj-claude-mcp-httpMulti-agent jam sessions over HTTP

Terminal audio vs. browser audio: By default, the CLI and MCP server render audio through node-web-audio-api — a Node.js reimplementation of the Web Audio API. It works everywhere with zero setup, but sample playback and effects can sound rougher than a real browser engine. Add --browser (CLI) or set DJ_CLAUDE_BROWSER=1 (MCP) to route audio through your system browser's native Web Audio instead. This opens a background tab and produces noticeably higher quality sound — especially for pads, reverb, and layered patterns.

Quick Start

Prerequisites

  • Node.js >= 18
  • Anthropic API key — optional. Enables AI-generated music from text prompts. Without it, every tool still works via presets, direct Strudel code, or the code/layers parameters

Install & Run

bash
# Set your API key (or add to a .env file)export ANTHROPIC_API_KEY=sk-ant-...
# Launch the terminal DJnpx dj-claude

Or install globally:

bash
npm i -g dj-claudedj-claude

Or go headless for scripting:

bash
npx dj-claude --headless "jazzy lo-fi beats" --duration 30

Claude Code Plugin

The easiest way to use DJ Claude with Claude Code. Installs the MCP server and gives you slash commands.

Install

/plugin marketplace add p-poss/dj-claude/plugin install dj-claude@dj-claude-marketplace

Slash Commands

CommandDescription
/dj-claude:play [prompt]Play music from a description
/dj-claude:play-preset [name]Play from 22 curated patterns
/dj-claude:vibe [mood]Set the vibe — chill, dark, hype, focus, funky, dreamy, weird, epic
/dj-claude:live-mix [prompt]Autonomous DJ set — 5-6 evolving stages in one turn
/dj-claude:jam [role] [prompt]Add a layer to the jam session (drums, bass, melody, etc.)
/dj-claude:jam-clear [role]Remove one or all layers from the jam
/dj-claude:jam-statusShow all active jam layers
/dj-claude:hushStop all music
/dj-claude:now-playingCheck what's currently playing
/dj-claude:strudel [code]Evaluate raw Strudel code directly
/dj-claude:browserSwitch between Node and browser audio backends mid-session
/dj-claude:context [activity]Set coding context so music adapts to your work
/dj-claude:preview [role] [prompt]Preview a jam layer without adding it
/dj-claude:analyzeAnalyze the mix for frequency balance and suggestions
/dj-claude:conduct [directive]Orchestrate a full band from a single directive
/dj-claude:save [name]Save the current mix as a named snapshot
/dj-claude:load [name]Restore a saved mix snapshot
/dj-claude:list-savesList all saved snapshots
/dj-claude:exportExport current Strudel code with header comments
/dj-claude:connect [port]Start HTTP server and configure project for multi-agent jam sessions

Or just ask naturally — Claude will call the right tool:

> play some chill lo-fi while I work on this PR> set the vibe to hype> hush

Auto-Allow Permissions

By default, Claude Code prompts for permission on every MCP tool call. To let DJ Claude play without interruptions, add this to .claude/settings.json:

json
{  "permissions": {    "allow": [      "mcp__dj-claude__play_music",      "mcp__dj-claude__play_strudel",      "mcp__dj-claude__set_vibe",      "mcp__dj-claude__live_mix",      "mcp__dj-claude__hush",      "mcp__dj-claude__now_playing",      "mcp__dj-claude__jam",      "mcp__dj-claude__jam_clear",      "mcp__dj-claude__jam_status",      "mcp__dj-claude__set_context",      "mcp__dj-claude__jam_preview",      "mcp__dj-claude__mix_analysis",      "mcp__dj-claude__conduct",      "mcp__dj-claude__conduct_evolve",      "mcp__dj-claude__snapshot_save",      "mcp__dj-claude__snapshot_load",      "mcp__dj-claude__snapshot_list",      "mcp__dj-claude__export_code",      "mcp__dj-claude__play_preset",      "mcp__dj-claude__switch_audio"    ]  }}

MCP Server (Manual Setup)

For the full MCP tool reference, keyless operation guide, and multi-agent details, see docs/MCP.md.

If you prefer manual configuration, or want to use DJ Claude with other MCP clients (Cursor, Windsurf, Zed, etc.), add this to your .mcp.json:

json
{  "mcpServers": {    "dj-claude": {      "command": "npx",      "args": ["-y", "dj-claude-mcp"]    }  }}

For higher quality audio through the browser's Web Audio engine:

json
{  "mcpServers": {    "dj-claude": {      "command": "npx",      "args": ["-y", "dj-claude-mcp"],      "env": {        "DJ_CLAUDE_BROWSER": "1"      }    }  }}

MCP Tools

Every tool works without an API key — use the code/layers params to pass Strudel directly, or use play_preset/set_vibe for zero-effort music. Add ANTHROPIC_API_KEY to unlock AI generation from text prompts.

ToolDescriptionKeyless?
play_presetPlay from the curated preset library (22 patterns across mood, genre, activity)Yes
play_musicPlay music — via prompt (AI) or code (direct Strudel)Yes, via code
play_strudelEvaluate raw Strudel/Tidal code directlyYes
set_vibeSet the mood — chill, dark, hype, focus, funky, dreamy, weird, epicYes
live_mixAutonomous DJ set — via prompt (AI) or stages_code (array of Strudel)Yes, via stages_code
jamAdd/update a layer — via prompt (AI) or code (direct Strudel)Yes, via code
jam_clearRemove one or all layers from the jam sessionYes
jam_statusShow all active layers with their role names and codeYes
jam_previewPreview a jam layer without adding it — via prompt or codeYes, via code
conductOrchestrate a full band — via directive (AI) or layers mapYes, via layers
conduct_evolveEvolve layers — via directive (AI) or layers mapYes, via layers
mix_analysisAnalyze the mix for frequency balance, gains, and suggestionsYes
hushStop all music playbackYes
now_playingCheck what's currently playingYes
switch_audioSwitch between Node and browser audio backends at runtimeYes
set_contextSet coding context so music adapts to your activityYes
snapshot_saveSave the current mix as a named snapshotYes
snapshot_loadRestore a previously saved snapshotYes
snapshot_listList all saved snapshotsYes
export_codeExport current Strudel code with header commentsYes

MCP Resources

The server exposes Strudel knowledge as MCP resources so agents can learn the syntax and write their own code:

ResourceDescription
strudel://referenceComplete Strudel syntax reference — core functions, mini-notation, effects, modulation
strudel://rolesMusical role guidance for building jam layers (drums, bass, melody, chords, etc.)
strudel://examplesWorking Strudel patterns from the preset library, organized by mood, genre, and activity

Agents can read these resources, learn the syntax, and then call play_music(code: ...), jam(code: ...), or conduct(layers: ...) — no API key needed.

Keyless Operation

Every tool works without ANTHROPIC_API_KEY. There are three tiers of keyless usage:

1. Zero effort — presets and vibes

play_preset(name: "jazz")          # 22 curated patternsset_vibe(mood: "chill")            # 8 mood presets

2. Direct code — agent writes Strudel

play_music(code: 'stack(s("bd*4").gain(0.75), note("c2").s("sawtooth").lpf(300))')jam(role: "drums", code: 's("bd*4").gain(0.75)')conduct(layers: { drums: 's("bd*4")', bass: 'note("c1").s("sine")' })

3. Full power — agent learns Strudel from resources

An agent can read strudel://reference to learn the complete syntax, strudel://roles for layer-building guidance, and strudel://examples for working patterns — then compose its own original Strudel code.

This means any AI agent connected via MCP can make music, regardless of whether ANTHROPIC_API_KEY is set. The calling agent IS the LLM.

Multi-Agent Jam Session

Multiple agents can collaborate on music in real time using the HTTP transport and jam tools. Each connected client gets its own MCP session, but they all share the same audio engine and layer state — one agent adds drums while another adds bass, and the layers compose automatically with stack().

Claude Code

Run /dj-claude:connect to auto-start the HTTP server and configure your project in one step:

/dj-claude:connect/dj-claude:connect 8080   # custom port

This starts the HTTP MCP server, writes .mcp.json, and all other Claude Code sessions in the same project auto-connect.

Other agents (Cursor, Windsurf, OpenClaw, etc.)

Start the HTTP server manually:

bash
# Default port 4321npx dj-claude-mcp-http
# Or with a custom portDJ_CLAUDE_PORT=8080 npx dj-claude-mcp-http

Then point your MCP client at the endpoint:

json
{  "mcpServers": {    "dj-claude-http": {      "type": "http",      "url": "http://127.0.0.1:4321/mcp"    }  }}

Jam tool workflow

With AI generation (requires API key):

Agent 1: jam(role: "drums", prompt: "four-on-the-floor house kick")Agent 2: jam(role: "bass", prompt: "deep sub bass in C minor")

With direct code (no API key):

Agent 1: jam(role: "drums", code: 's("bd*4").gain(0.75)')Agent 2: jam(role: "bass", code: 'note("c1 ~ c1 ~").s("sawtooth").lpf(300).gain(0.5)')Agent 1: jam_status               # see all active layersAgent 2: jam_clear(role: "bass")  # remove just the bass layer

Conductor Mode

Orchestrate a full band from a single directive — conduct generates multiple layers at once.

With AI generation (requires API key):

conduct(directive: "jazz combo in C minor, late night mood")# → creates drums, bass, chords, melody layers automatically

With direct code (no API key):

conduct(layers: {  drums: 's("bd*4").gain(0.75)',  bass: 'note("c1 ~ c1 ~").s("sawtooth").lpf(300).gain(0.5)',  chords: 'note("<[c3,eb3,g3] [ab2,c3,eb3]>/2").s("triangle").gain(0.3)'})

Band templates are auto-detected from the directive:

  • jazz combo — drums, bass, chords, melody
  • rock band — drums, bass, chords, lead
  • electronic — drums, bass, pads, lead, fx
  • ambient — pads, atmosphere, fx, melody
  • full band — drums, bass, chords, melody, pads, fx
  • minimal — drums, bass, melody
  • orchestral — bass, chords, pads, melody, fx, atmosphere

Use conduct_evolve to evolve all layers through stages:

conduct_evolve(directive: "shift darker", stages: 3)# → evolves each layer 3 times with 15s pauses
# Or provide evolved code directly (no API key):conduct_evolve(layers: { drums: 's("bd ~ sd ~").gain(0.7)' })

Mix Snapshots

Save and restore your mixes:

snapshot_save(name: "verse1")    # save the current mixsnapshot_save(name: "drop")      # save another versionsnapshot_list                    # see all saved snapshotssnapshot_load(name: "verse1")    # restore and resume playbackexport_code                      # get raw Strudel code with headers

Terminal TUI Features

  • Live pattern visualization — a real-time ASCII pianoroll and drum grid appears between DancingClaude and the code display while music is playing, showing note positions and rhythm patterns synchronized to the audio
  • DancingClaude — animated pixel art that dances to the beat
  • Live code display — shows the current Strudel pattern as it streams in

Keyboard Shortcuts (TUI)

KeyAction
EnterSubmit prompt
qQuit
EscPause / resume music
rRevert to previous pattern

Web App

Visit claude.dj for the single agent browser experience — no API key or install needed.

Features:

  • 5 club themes — Anthropic, Gemini, Codex, Fairlight, OpenClaw
  • NIGHT mode (color inversion), DISCO mode (rainbow hue cycling), RAVE mode (glow + CRT scanlines)
  • LIVE MIX mode — autopilot DJ that automatically evolves the music every ~60 seconds without user input
  • Voice DJ commentary with idle hype phrases (via ElevenLabs TTS)
  • Dancing Claude that follows your cursor
  • Live Strudel code display with export to clipboard
  • Space bar to toggle play/pause

Environment Variables

VariableRequiredDescription
ANTHROPIC_API_KEYNoEnables AI generation from text prompts. Without it, all tools still work — use play_preset, set_vibe, play_strudel, or pass Strudel code via the code/layers/stages_code parameters
ELEVENLABS_API_KEYNo (web only)Enables voice DJ commentary
DJ_CLAUDE_BROWSERNoSet to 1 for browser audio backend in MCP mode
DJ_CLAUDE_PORTNoHTTP server port for multi-agent mode (default: 4321)
DJ_CLAUDE_MODELNoClaude model for CLI/MCP (default: claude-sonnet-4-6)
DJ_CLAUDE_MAX_TOKENSNoMax response tokens for CLI/MCP (default: 16384)

The CLI also loads .env and .env.local files from your project directory automatically.

Architecture

DJ Claude is a Next.js app with a companion CLI package:

  • /app — Next.js web frontend (claude.dj)
  • /cli — Terminal TUI (Ink/React) and MCP server
  • /cli/src/mcp — MCP tool definitions and JSON-RPC server
  • /cli/src/audio — Strudel audio engine (node + browser backends)
  • /cli/src/lib — Shared utilities, Claude API client, prompt generation
  • /plugin — Claude Code plugin (skills, MCP config, marketplace)

Music is generated by Claude composing Strudel live-coding patterns, which are then evaluated in real-time through either the Node node-web-audio-api backend or the browser's native Web Audio API.

Platform Support

Works on macOS, Windows, and Linux. On Linux, the Node audio backend (node-web-audio-api) requires JACK or PipeWire-JACK — vanilla ALSA/PulseAudio alone won't work with the prebuilt binaries. Use --browser mode to bypass this by routing audio through your browser instead.

Creator

Built by Patrick Poss — [email protected]

License

GNU AGPL-3.0-or-later

DJ Claude generates and plays music with Strudel (a port of TidalCycles by Alex McLean and contributors), which is licensed under the AGPL-3.0. Because DJ Claude bundles and serves Strudel — including over the network at claude.dj — the combined work is distributed under the same AGPL-3.0 license. The complete corresponding source is available in this repository.

來源:README.md,提交 f127c06

工具

0
SourceWeft 尚未在沙箱中啟動過該軟體包,因此其工具未知。

版本歷史

1
  1. v0.1.6最新Sep 16, 2026

評分

已滿足適用檢查項的 50%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分

其他 Claude 整合