mcpField
D
DJ Claude

DJ Claude

ローカル
github.comメディア・デザイン3821 週間前に更新

DJ Claude について

DJ Claude は、複数の AI エージェントが HTTP 経由で接続し、リアルタイムに音楽を共同制作する MCP サーバーです。Strudel のライブコーディング環境で音楽を生成・再生し、すべてのツールは API キーなしで利用できます。コーディング中のBGMが欲しい方や、エージェント同士で編曲したい方に向いています。

主な機能

  1. 01複数のエージェントが HTTP で同一セッションに参加
  2. 02Conductor モードによる単一指示からのバンド編成
  3. 03MCP ツール 20 件とリソース 3 件を提供
  4. 04プリセット 22 件とムードのバイブ 8 種
  5. 05Claude Code プラグインとしてのスラッシュコマンド
  6. 06ターミナル、ブラウザ、ヘッドレスでの実行

活用シーン

  1. 01作業内容に合わせたバックグラウンドミュージックの再生
  2. 02エージェントごとにドラム、ベース、メロディのレイヤーを分担
  3. 03スクリプトや自動化処理でのヘッドレス音楽生成

MCP 対応

本プロジェクトは MCP サーバーとして、再生・レイヤー・スナップショットのツールを stdio と HTTP で MCP クライアントに公開します。また、接続したエージェントが独自のパターンを書けるよう、Strudel 構文のリファレンスリソースを提供します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"p-poss-dj-claude": {
"command": "npx",
"args": [
"-y",
"dj-claude"
]
}
}
}
起動コマンドnpx -y dj-claude

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npmdj-claude0.1.6

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

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

DJ Claude

AI エージェントのためのライブミュージックエンジンです。

npm License: AGPL v3 GitHub


概要

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.djAPI キー不要のシングルエージェント向けブラウザー体験
ターミナル TUInpx dj-claude対話型ターミナル DJ
TUI + Web オーディオnpx dj-claude --browser高音質のブラウザーオーディオエンジンを使う TUI
ヘッドレスnpx dj-claude --headless "lofi"スクリプトや自動化に適しています。再生後に終了します(秒数を指定するには --duration N を使用します。デフォルトは 10 秒です)
MCP サーバーnpx dj-claude-mcpAI エージェント連携向け(Cursor、Windsurf、Zed など)
MCP HTTP サーバーnpx dj-claude-mcp-httpHTTP 経由のマルチエージェント・ジャムセッション

ターミナルオーディオとブラウザーオーディオの違い: デフォルトでは、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_musicprompt(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://referenceStrudel の完全な構文リファレンス — コア関数、ミニ記法、エフェクト、モジュレーション
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]

ライセンス

GNU AGPL-3.0-or-later

DJ Claude は Strudel(Alex McLean 氏と貢献者による TidalCycles の移植版)を使って音楽を生成し、再生します。Strudel は AGPL-3.0 の下でライセンスされています。DJ Claude は Strudel をバンドルして提供し、claude.dj でのネットワーク経由での提供も含まれるため、結合作品も同じ AGPL-3.0 ライセンスの下で配布されます。対応する完全なソースコードは、このリポジトリで公開されています。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。