DJ Claude について
DJ Claude は、複数の AI エージェントが HTTP 経由で接続し、リアルタイムに音楽を共同制作する MCP サーバーです。Strudel のライブコーディング環境で音楽を生成・再生し、すべてのツールは API キーなしで利用できます。コーディング中のBGMが欲しい方や、エージェント同士で編曲したい方に向いています。
主な機能
- 01複数のエージェントが HTTP で同一セッションに参加
- 02Conductor モードによる単一指示からのバンド編成
- 03MCP ツール 20 件とリソース 3 件を提供
- 04プリセット 22 件とムードのバイブ 8 種
- 05Claude Code プラグインとしてのスラッシュコマンド
- 06ターミナル、ブラウザ、ヘッドレスでの実行
活用シーン
- 01作業内容に合わせたバックグラウンドミュージックの再生
- 02エージェントごとにドラム、ベース、メロディのレイヤーを分担
- 03スクリプトや自動化処理でのヘッドレス音楽生成
MCP 対応
本プロジェクトは MCP サーバーとして、再生・レイヤー・スナップショットのツールを stdio と HTTP で MCP クライアントに公開します。また、接続したエージェントが独自のパターンを書けるよう、Strudel 構文のリファレンスリソースを提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
_ _ _ _
__| |(_) ___ | | __ _ _ _ __| | ___
/ _` || | / __| | | / _` || | | |/ _` | / _ \
| (_| || | _ | (__ | || (_| || |_| | (_| || __/
\__,_|| | (_) \___| |_| \__,_| \__,_|\__,_| \___|
_/ |
|__/
DJ Claude
AI エージェントのためのライブミュージックエンジンです。
概要
DJ Claude は、マルチエージェントのコラボレーションに対応した唯一の音楽 MCP サーバーです。複数の AI エージェントが HTTP 経由で接続し、リアルタイムで一緒にセッションを行います。1 つのエージェントがドラムを加え、別のエージェントがベースを重ね、3 つ目のエージェントがメロディーを加えると、すべてが自動的に楽曲としてまとまります。ターミナルやブラウザーで、またはスラッシュコマンドを使う Claude Code プラグインとして利用できます。ブラウザーのタブも、API キーも、外部サービスも必要ありません。
DJ Claude は内部で、リアルタイムにパターンを生成して再生するライブコーディング環境、Strudel を使用しています。20 個の MCP ツール、3 個のリソース、コンダクターモード、ミックススナップショット、22 個のプリセット、8 種類のバイブに対応しています。エージェントは作業中に、ユーザー自身や自分自身、また互いのために音楽を作れます。
DJ Claude を選ぶ理由
- マルチエージェントのジャムセッション — 複数のエージェントが HTTP 経由で接続し、それぞれがレイヤーを加えて自動的に楽曲を作り上げる、初の音楽 MCP です
- 依存関係ゼロ — ブラウザーのタブも、API キーも、外部サービスも必要ありません。すべてのツールがそのまま使えます
- Claude Code プラグイン — マーケットプレイスから 20 個のスラッシュコマンドをワンステップでインストールできます
- コンダクターモード — 1 つの指示からフルバンドを指揮できます。ジャズコンボ、ロックバンド、エレクトロニック、アンビエントなどのテンプレートを自動検出します
- エージェントネイティブ — 3 個の MCP リソースが、接続したエージェントに Strudel 言語を教えるため、プリセットを選ぶだけでなく、オリジナルの音楽を作曲できます
演奏方法
| モード | コマンド | 説明 |
|---|---|---|
| Claude Code プラグイン | /plugin install dj-claude | スラッシュコマンドと MCP サーバーをワンステップでインストール |
| Web アプリ | claude.dj | API キー不要のシングルエージェント向けブラウザー体験 |
| ターミナル TUI | npx dj-claude | 対話型ターミナル DJ |
| TUI + Web オーディオ | npx dj-claude --browser | 高音質のブラウザーオーディオエンジンを使う TUI |
| ヘッドレス | npx dj-claude --headless "lofi" | スクリプトや自動化に適しています。再生後に終了します(秒数を指定するには --duration N を使用します。デフォルトは 10 秒です) |
| MCP サーバー | npx dj-claude-mcp | AI エージェント連携向け(Cursor、Windsurf、Zed など) |
| MCP HTTP サーバー | npx dj-claude-mcp-http | HTTP 経由のマルチエージェント・ジャムセッション |
ターミナルオーディオとブラウザーオーディオの違い: デフォルトでは、CLI と MCP サーバーは
node-web-audio-api(Web Audio API の Node.js による再実装)を通じてオーディオをレンダリングします。セットアップ不要でどこでも動作しますが、サンプルの再生やエフェクトの音質は、実際のブラウザーエンジンより劣る場合があります。--browser(CLI)を追加するか、DJ_CLAUDE_BROWSER=1(MCP)を設定すると、システムのブラウザーに搭載されたネイティブの Web Audio を使ってオーディオを再生できます。バックグラウンドタブが開き、特にパッド、リバーブ、レイヤー化したパターンの音質が明らかに向上します。
クイックスタート
前提条件
- Node.js >= 18
- Anthropic API キー — 任意です。テキストプロンプトから AI で音楽を生成できます。API キーがなくても、プリセット、Strudel コードの直接指定、
code/layersパラメーターを使って、すべてのツールを利用できます
インストールと実行
# Set your API key (or add to a .env file)
export ANTHROPIC_API_KEY=sk-ant-...
# Launch the terminal DJ
npx dj-claude
または、グローバルにインストールします:
npm i -g dj-claude
dj-claude
スクリプトで使用する場合は、ヘッドレスモードで実行します:
npx dj-claude --headless "jazzy lo-fi beats" --duration 30
Claude Code プラグイン
DJ Claude を Claude Code で使う最も簡単な方法です。MCP サーバーをインストールし、スラッシュコマンドを使えるようにします。
インストール
/plugin marketplace add p-poss/dj-claude
/plugin install dj-claude@dj-claude-marketplace
スラッシュコマンド
| コマンド | 説明 |
|---|---|
/dj-claude:play [prompt] | 説明から音楽を再生します |
/dj-claude:play-preset [name] | 厳選された22種類のパターンから再生します |
/dj-claude:vibe [mood] | 雰囲気を設定します — chill、dark、hype、focus、funky、dreamy、weird、epic |
/dj-claude:live-mix [prompt] | 1回のターンで5~6段階に展開する自律型DJセットです |
/dj-claude:jam [role] [prompt] | ジャムセッションにレイヤーを追加します(ドラム、ベース、メロディなど) |
/dj-claude:jam-clear [role] | ジャムから1つまたはすべてのレイヤーを削除します |
/dj-claude:jam-status | アクティブなジャムレイヤーをすべて表示します |
/dj-claude:hush | すべての音楽を停止します |
/dj-claude:now-playing | 現在再生中の内容を確認します |
/dj-claude:strudel [code] | 生のStrudelコードを直接評価します |
/dj-claude:browser | セッションの途中でNodeとブラウザーのオーディオバックエンドを切り替えます |
/dj-claude:context [activity] | コーディングの状況を設定し、作業に合わせて音楽を調整します |
/dj-claude:preview [role] [prompt] | ジャムレイヤーを追加せずにプレビューします |
/dj-claude:analyze | ミックスの周波数バランスを分析し、提案を行います |
/dj-claude:conduct [directive] | 1つの指示からバンド全体を指揮します |
/dj-claude:save [name] | 現在のミックスを名前付きスナップショットとして保存します |
/dj-claude:load [name] | 保存したミックスのスナップショットを復元します |
/dj-claude:list-saves | 保存済みのスナップショットをすべて一覧表示します |
/dj-claude:export | ヘッダーコメント付きで現在のStrudelコードをエクスポートします |
/dj-claude:connect [port] | HTTPサーバーを起動し、マルチエージェントのジャムセッション用にプロジェクトを設定します |
自然な言葉で頼むだけでも、Claudeが適切なツールを呼び出します。
> play some chill lo-fi while I work on this PR
> set the vibe to hype
> hush
自動許可の設定
デフォルトでは、Claude CodeはMCPツールを呼び出すたびに許可を求めます。DJ Claudeが中断なく再生できるようにするには、次の内容を .claude/settings.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 サーバー(手動セットアップ)
MCPツールの完全なリファレンス、キー不要での運用ガイド、マルチエージェントの詳細については、docs/MCP.md をご覧ください。
手動で設定する場合、またはほかのMCPクライアント(Cursor、Windsurf、Zedなど)でDJ Claudeを使用する場合は、次の内容を .mcp.json に追加します。
{
"mcpServers": {
"dj-claude": {
"command": "npx",
"args": ["-y", "dj-claude-mcp"]
}
}
}
ブラウザーのWeb Audioエンジンを使って高音質で再生するには、次の内容を追加します。
{
"mcpServers": {
"dj-claude": {
"command": "npx",
"args": ["-y", "dj-claude-mcp"],
"env": {
"DJ_CLAUDE_BROWSER": "1"
}
}
}
}
MCP ツール
すべてのツールは API キーなしで動作します。code/layers パラメーターを使って Strudel を直接渡すか、play_preset/set_vibe を使えば手軽に音楽を楽しめます。ANTHROPIC_API_KEY を追加すると、テキストプロンプトからの AI 生成が有効になります。
| ツール | 説明 | キー不要? |
|---|---|---|
play_preset | 厳選されたプリセットライブラリから再生します(ムード、ジャンル、アクティビティにわたる 22 パターン) | はい |
play_music | prompt(AI)または code(Strudel を直接指定)で音楽を再生します | はい、code 経由 |
play_strudel | 生の Strudel/Tidal コードを直接評価します | はい |
set_vibe | ムードを設定します — chill、dark、hype、focus、funky、dreamy、weird、epic | はい |
live_mix | 自律型 DJ セット — prompt(AI)または stages_code(Strudel の配列)で指定します | はい、stages_code 経由 |
jam | レイヤーを追加/更新します — prompt(AI)または code(Strudel を直接指定)で指定します | はい、code 経由 |
jam_clear | ジャムセッションから 1 つまたはすべてのレイヤーを削除します | はい |
jam_status | アクティブなすべてのレイヤーについて、役割名とコードを表示します | はい |
jam_preview | ジャムレイヤーを追加せずにプレビューします — prompt または code で指定します | はい、code 経由 |
conduct | バンド全体を指揮します — directive(AI)または layers マップで指定します | はい、layers 経由 |
conduct_evolve | レイヤーを進化させます — directive(AI)または layers マップで指定します | はい、layers 経由 |
mix_analysis | ミックスの周波数バランス、ゲイン、提案を分析します | はい |
hush | すべての音楽再生を停止します | はい |
now_playing | 現在再生中の内容を確認します | はい |
switch_audio | 実行時に Node とブラウザーのオーディオバックエンドを切り替えます | はい |
set_context | コーディング中のアクティビティに合わせて音楽が変化するよう、コーディングコンテキストを設定します | はい |
snapshot_save | 現在のミックスを名前付きスナップショットとして保存します | はい |
snapshot_load | 以前保存したスナップショットを復元します | はい |
snapshot_list | 保存済みのスナップショットをすべて一覧表示します | はい |
export_code | 現在の Strudel コードをヘッダーコメント付きでエクスポートします | はい |
MCP リソース
サーバーは Strudel の知識を MCP リソースとして公開するため、エージェントは構文を学び、独自のコードを作成できます。
| リソース | 説明 |
|---|---|
strudel://reference | Strudel の完全な構文リファレンス — コア関数、ミニ記法、エフェクト、モジュレーション |
strudel://roles | ジャムレイヤー(ドラム、ベース、メロディー、コードなど)を作成するための、音楽的な役割に関するガイダンス |
strudel://examples | プリセットライブラリの動作する Strudel パターン。ムード、ジャンル、アクティビティ別に整理されています |
エージェントはこれらのリソースを読み、構文を学んだうえで、play_music(code: ...)、jam(code: ...)、conduct(layers: ...) を呼び出せます。API キーは不要です。
キー不要での利用
すべてのツールは ANTHROPIC_API_KEY なしで動作します。キー不要の使い方には 3 つの段階があります。
1. 手間なし — プリセットとバイブ
play_preset(name: "jazz") # 22 curated patterns
set_vibe(mood: "chill") # 8 mood presets
2. 直接コード — エージェントが 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. フル活用 — エージェントがリソースから Strudel を学習
エージェントは strudel://reference を読んで完全な構文を学び、strudel://roles からレイヤー構築のガイダンスを得て、strudel://examples から動作するパターンを参照し、それらを使って独自の Strudel コードを作成できます。
つまり、MCP 経由で接続された AI エージェントであれば、ANTHROPIC_API_KEY が設定されているかどうかにかかわらず、音楽を作成できます。呼び出し元のエージェント自身が LLM です。
マルチエージェント・ジャムセッション
複数のエージェントは、HTTP トランスポートとジャムツールを使ってリアルタイムで音楽制作に協力できます。接続された各クライアントは独自の MCP セッションを持ちますが、オーディオエンジンとレイヤーの状態は共有されます。1 つのエージェントがドラムを追加し、別のエージェントがベースを追加すると、レイヤーは stack() で自動的に合成されます。
Claude Code
/dj-claude:connect を実行すると、HTTP サーバーが自動起動し、プロジェクトの設定が一度に行われます。
/dj-claude:connect
/dj-claude:connect 8080 # custom port
これにより HTTP MCP サーバーが起動して .mcp.json が書き込まれ、同じプロジェクト内のほかのすべての Claude Code セッションも自動的に接続されます。
その他のエージェント(Cursor、Windsurf、OpenClaw など)
HTTP サーバーを手動で起動します。
# Default port 4321
npx dj-claude-mcp-http
# Or with a custom port
DJ_CLAUDE_PORT=8080 npx dj-claude-mcp-http
次に、MCP クライアントの接続先としてエンドポイントを指定します。
{
"mcpServers": {
"dj-claude-http": {
"type": "http",
"url": "http://127.0.0.1:4321/mcp"
}
}
}
Jam ツールのワークフロー
AI 生成を使用する場合(API キーが必要です):
Agent 1: jam(role: "drums", prompt: "four-on-the-floor house kick")
Agent 2: jam(role: "bass", prompt: "deep sub bass in C minor")
直接コードを使用する場合(API キーは不要です):
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 layers
Agent 2: jam_clear(role: "bass") # remove just the bass layer
Conductor モード
1 つの指示からバンド全体を指揮します。conduct は一度に複数のレイヤーを生成します。
AI 生成を使用する場合(API キーが必要です):
conduct(directive: "jazz combo in C minor, late night mood")
# → creates drums, bass, chords, melody layers automatically
直接コードを使用する場合(API キーは不要です):
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)'
})
バンドのテンプレートは指示から自動検出されます:
- ジャズコンボ — ドラム、ベース、コード、メロディー
- ロックバンド — ドラム、ベース、コード、リード
- エレクトロニック — ドラム、ベース、パッド、リード、FX
- アンビエント — パッド、雰囲気、FX、メロディー
- フルバンド — ドラム、ベース、コード、メロディー、パッド、FX
- ミニマル — ドラム、ベース、メロディー
- オーケストラ — ベース、コード、パッド、メロディー、FX、雰囲気
conduct_evolve を使って、すべてのレイヤーを段階ごとに進化させます:
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)' })
ミックススナップショット
ミックスを保存して復元します:
snapshot_save(name: "verse1") # save the current mix
snapshot_save(name: "drop") # save another version
snapshot_list # see all saved snapshots
snapshot_load(name: "verse1") # restore and resume playback
export_code # get raw Strudel code with headers
ターミナル TUI の機能
- パターンのリアルタイム表示 — 音楽の再生中、DancingClaude とコード表示の間に、リアルタイムの ASCII ピアノロールとドラムグリッドが表示され、音声と同期したノートの位置やリズムパターンを確認できます
- DancingClaude — ビートに合わせて踊るアニメーション付きピクセルアート
- コードのリアルタイム表示 — ストリーミングされる現在の Strudel パターンを表示します
キーボードショートカット(TUI)
| キー | 操作 |
|---|---|
Enter | プロンプトを送信 |
q | 終了 |
Esc | 音楽を一時停止/再開 |
r | 直前のパターンに戻す |
Web アプリ
claude.dj にアクセスすると、API キーもインストールも不要で、ブラウザーから単一のエージェントを利用できます。
機能:
- 5 つのクラブテーマ — Anthropic、Gemini、Codex、Fairlight、OpenClaw
- NIGHT モード(色の反転)、DISCO モード(虹色の色相変化)、RAVE モード(グロー効果+CRT スキャンライン)
- LIVE MIX モード — ユーザーの入力なしで、約 60 秒ごとに音楽を自動的に進化させる自動操縦 DJ
- アイドル時の煽り文句を含む、音声による DJ コメント(ElevenLabs TTS 経由)
- カーソルを追いかける Dancing Claude
- Strudel コードのリアルタイム表示とクリップボードへのエクスポート
- スペースバーで再生/一時停止を切り替え
環境変数
| 変数 | 必須 | 説明 |
|---|---|---|
ANTHROPIC_API_KEY | いいえ | テキストプロンプトからの AI 生成を有効にします。設定しなくてもすべてのツールを利用できます。play_preset、set_vibe、play_strudel を使うか、code/layers/stages_code パラメーターで Strudel コードを渡してください |
ELEVENLABS_API_KEY | いいえ(Web のみ) | 音声による DJ コメントを有効にします |
DJ_CLAUDE_BROWSER | いいえ | MCP モードでブラウザーの音声バックエンドを使う場合は 1 に設定します |
DJ_CLAUDE_PORT | いいえ | マルチエージェントモードの HTTP サーバーポート(デフォルト:4321) |
DJ_CLAUDE_MODEL | いいえ | CLI/MCP 用の Claude モデル(デフォルト:claude-sonnet-4-6) |
DJ_CLAUDE_MAX_TOKENS | いいえ | CLI/MCP の最大応答トークン数(デフォルト:16384) |
CLI はプロジェクトディレクトリ内の .env と .env.local ファイルも自動的に読み込みます。
アーキテクチャ
DJ Claude は Next.js アプリと、それに付属する CLI パッケージで構成されています:
/app— Next.js Web フロントエンド(claude.dj)/cli— ターミナル TUI(Ink/React)と MCP サーバー/cli/src/mcp— MCP ツール定義と JSON-RPC サーバー/cli/src/audio— Strudel オーディオエンジン(Node とブラウザーのバックエンド)/cli/src/lib— 共通ユーティリティ、Claude API クライアント、プロンプト生成/plugin— Claude Code プラグイン(スキル、MCP 設定、マーケットプレイス)
音楽は、Claude が Strudel のライブコーディングパターンを作曲することで生成されます。その後、Node の node-web-audio-api バックエンド、またはブラウザーのネイティブ Web Audio API を通じてリアルタイムに評価されます。
プラットフォームのサポート
macOS、Windows、Linux で動作します。Linux では、Node のオーディオバックエンド(node-web-audio-api)を利用するには JACK または PipeWire-JACK が必要です。標準の ALSA/PulseAudio だけでは、事前ビルドされたバイナリを使用できません。音声をブラウザー経由にする --browser モードを使えば、この制約を回避できます。
制作者
Patrick Poss が制作 — [email protected]
ライセンス
DJ Claude は Strudel(Alex McLean 氏と貢献者による TidalCycles の移植版)を使って音楽を生成し、再生します。Strudel は AGPL-3.0 の下でライセンスされています。DJ Claude は Strudel をバンドルして提供し、claude.dj でのネットワーク経由での提供も含まれるため、結合作品も同じ AGPL-3.0 ライセンスの下で配布されます。対応する完全なソースコードは、このリポジトリで公開されています。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。