mcpField
M
moontide

moontide

ローカル
github.com/konni-arcadiaメディア・デザイン42 週間前に更新

moontide について

Moontide は Claude とブラウザ上の Strudel 音楽エディターをつなぎ、Claude がコードを書いて音楽を再生・更新します。コードを見て編集しながら、会話を通じて音楽を作りたい人向けの個人プロジェクトです。

主な機能

  1. 01ブラウザで Strudel コードを生成・再生
  2. 02再生を止めずに音楽を更新
  3. 03コードと過去のバージョンを表示・編集
  4. 04タイムライン、曲、履歴、ミキサー、ジャム表示
  5. 05テンポの段階的な変更とページ文脈付きリクエスト
  6. 06Web MIDI による MIDI 楽器の再生

活用シーン

  1. 01ムードやテーマからライブ演奏を作成
  2. 02再生中の曲を変更内容の説明で調整
  3. 03音楽のアイデアを以前のバージョンに戻す
  4. 04ブラウザの選択箇所やタイムライン上の時点を Claude に送信

MCP 対応

Moontide は stdio MCP サーバーとして Claude に接続します。音楽の開始・変更、ページリクエスト、Strudel の参照情報をツールとして提供し、参照情報は MCP リソースとしても公開します。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"konni-arcadia-moontide": {
"command": "npx",
"args": [
"-y",
"moontide-mcp"
]
}
}
}
起動コマンドnpx -y moontide-mcp

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

パッケージ
npmmoontide-mcp2.2.0

ツール

14

掲載時のツール一覧 · 2 週間前に更新

このツールにパラメーターはありません。

詳細

Moontide

月が潮を導きます。

趣味のプロジェクトです。Claude があなたのために生演奏します。気分やテーマ、アイデアを伝えると、Claude が Strudel のコードを書き、ブラウザー上で再生します。音楽は止まることなく変化し続けます。

npm バージョン CI

Moontide のデモ:Claude がいくつかの言葉からダンジョンのテーマ曲を始め、ページ上で入力されたリクエストに応じて曲を変化させます

▶ YouTube でデモを見る(音声付き、3 分)

どのように作られたか

Moontide は個人プロジェクトです。コード、調査、ドキュメントの大部分は、私の指示のもとで AI コーディングアシスタントが作成しました。私は目標を設定し、変更をすべて聴き、自分の楽器で試し、耳で結果を判断し、方針を決めました。ここにあるものについては、間違いも含めて私が責任を負います。

理由

好奇心です。優れた楽器を与えられた AI アシスタントが、技術デモではなく、本物の音楽を作るうえでどこまでできるのかを確かめたかったのです。Strudel はまさにその楽器です。変更が次のサイクルで途切れることなく反映され、音楽が私たち双方に読めるプレーンテキストで表されるライブコーディング言語です。

Claude がコードを書き、そのコードは演奏中も画面に表示されます。演奏を見ながら手動で編集したり、以前のどのバージョンにも戻したり、ページ上のものを指定して変更を頼んだりできます。

できること

  • 「D マイナーで夢見るような曲を始めて」「もっと暗くして」「ベースを加えて」のように話しかけると、Claude が Strudel のコードを書き、ブラウザーのページですぐに再生します。変更は一瞬で反映され、音楽は止まりません。
  • コードは常に表示され、編集できます。再生されたすべてのバージョンが保存され、Claude はどのバージョンにも戻せます。
  • ページではコードを囲むように、さまざまな表示で音楽を確認できます。名前付きトラックと音符を編集できるタイムライン、曲のセクションを表示する Song グリッド、リストまたはツリー形式の履歴、操作によってコードを書き換えるグループとライト付きのミキサー、そしてピアノやギターでスケールを表示するジャムビューがあります。音符が複数のスケールに当てはまる場合、ジャムビューは候補を提示し、その理由も説明します。
  • Claude はテンポを急に変えるのではなく、複数の小節にわたって徐々に上げたり下げたりできます。
  • ページ上の項目を右クリックすると、そのコンテキストを含めて Claude にリクエストを送信できます。トップバーの Requests リストで、各リクエストの結果を確認できます。
  • 同じコードを、Web MIDI を介してページから実際の MIDI 楽器で再生することもできます。

Moontide はゼロから作っているわけではありません。音楽エンジンには、Felix Roos、Alex McLean、Strudel のコントリビューターが開発した TidalCycles の JavaScript 移植版である Strudel を使用しています。Moontide は Claude と Strudel のページをつなぐ橋渡し役です。

動作の仕組み

 you ──talk──► Claude ──MCP (stdio)──► Moontide ──WebSocket (localhost)──► browser page
                                          │                                 Strudel plays
                                          └─ history file on your disk      the code, sound
                                                                            and Web MIDI out
  1. Moontide は MCP サーバーとして動作し、Claude が接続します。音楽をリクエストするか「start Moontide」と言うまで、何も起動しません。

  2. 次に、ブラウザーで Strudel エディターのページを開きます。

  3. Claude がコードを書き、ページで再生します。コードが動き出す様子を確認できます。

  4. Claude はいつでも音楽を停止できます。ページにも専用の再生ボタンと停止ボタンがあります。

  5. ページ上の項目を右クリックすると、Claude に質問できます。タイムラインを右クリックすると、ポインターの位置にある情報も送信されます。送信されるのは、サイクルとビート、再生されていたバージョン、その位置で鳴っているノートや同じ16分音符で鳴り始めるノート、およびそれらのベロシティです。MIDI トラックの場合は、楽器とチャンネルも送信されます。セッションドロワー(上部バーの[Session]ボタン)には、ページからのリクエストがライブ(すぐに Claude に届く)か、Claude の応答待ち(次のアクション時に届く)かが表示されます。(i)をクリックすると切り替え方法を確認できます。

    上部バーの Requests ボタンには、処理中のリクエスト数が表示され、クリックするとリクエストの一覧が開きます。各リクエストは1行で表示され、処理状況と経過時間を確認できます。リクエストはまず「Sent」と表示され、その後「Waiting for Claude's next action」または「Received」と表示されます。続いて、リクエストの到着後に Claude が呼び出しを行うと、「Claude has started on it」と表示されます。リクエストに対する変更は、次の小節またはフレーズを待っている間は「Waiting for its line」と表示され、その後「Applied as v12」と表示されます(バージョンは[History]ビューで確認できます)。変更に失敗した場合は、エラーとともに「Failed」と表示されます。新しい変更に置き換えられた場合や、[Stop]によってキャンセルされた場合も、その旨が表示されます。Claude が文章で回答したリクエストは、Claude の文章とともに「Answered」または「Declined」と表示されます。リクエストが適用済みと表示されるのは、Claude がその変更とともにリクエストを明示した場合だけです。タイミングだけで適用済みになることはありません。30秒間更新がない場合、行には「No change yet」と表示され、時間のカウントが続きます。これは失敗を意味するものではありません。ページの接続が切れると、未完了の行には「Connection lost」と表示されます。行をクリックすると、リクエスト全体とその状態の意味を確認できます。完了した行は、30秒後に短い[Recent]リストへ移動します。Moontide サーバーの停止後は何も保持されません。

インストール

Node 22 以降と Claude Code をすでにお持ちの方向けの簡単な手順です。

claude mcp add --scope user moontide -- npx -y moontide-mcp

その後、新しい Claude セッションを開始して、音楽をリクエストしてください。以下の手順では、それぞれの項目について説明します。

1. 必要なもの
  • Node 22 以降。npm と npx が付属しています。
  • Claude Code または Claude Desktop。 Moontide は MCP サーバーです。Claude が接続します。
  • Chrome。Moontide の動作確認に使用したブラウザーです。MIDI(Web MIDI)を使用する場合は、Chrome または Edge をお使いください。
  • インターネット接続:Strudel とそのサウンドはウェブから読み込まれます。
  • スピーカーまたはヘッドホン。
2. Node を確認する

ターミナルで次を実行します。

node --version

v22 以降が表示される必要があります。Node がインストールされていない場合、または古いバージョンの場合は、 nodejs.org から LTS バージョンをインストールしてください。Homebrew を使用している macOS では、brew install node でもインストールできます。その後、新しいターミナルを開いて再度確認してください。

3. Claude を入手する

claude.com から Claude Code または Claude Desktop をインストールし、サインインしてください。Moontide はどちらでも動作しますが、主に Claude Code で動作確認されています。

4. Claude に Moontide を追加する
Claude Code(macOS でテスト済み;Linux は未テスト)

ターミナルで次を実行します。

claude mcp add --scope user moontide -- npx -y moontide-mcp

--scope user を指定すると、すべてのフォルダーで Moontide を利用できます。デフォルトのスコープ(local)は、コマンドを実行したフォルダーでのみ機能します。スコープに project を指定すると、.mcp.json ファイルを通じて共有されます。

名前は moontide のままにしてください。以下のページリクエスト用コマンドでは、この名前を使用します。

次のコマンドでインストールを確認します。

claude mcp get moontide

同じコマンドを Linux でも使う想定ですが、Linux ではテストしていません。

Claude Desktop(macOS でテスト済み;Windows は未テスト)

「Settings」を開き、「Developer」を選択してから、「Edit Config」を選択します。ファイルの場所は次のとおりです。

  • macOS:~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows:%APPDATA%\Claude\claude_desktop_config.json

Moontide を追加します。

{
  "mcpServers": {
    "moontide": {
      "command": "npx",
      "args": ["-y", "moontide-mcp"]
    }
  }
}

ファイルにすでに mcpServers ブロックがある場合は、その中に moontide エントリーを追加します。Claude Desktop を完全に終了してから、再起動してください。Claude Desktop に Linux 版はありません。

Claude Code を使う Windows(未テスト)

PowerShell またはコマンドプロンプト(Git Bash ではありません)から、次を実行します。

claude mcp add --scope user moontide -- cmd /c npx -y moontide-mcp

claude mcp get moontide で確認してください。コマンドには cmd と /c npx -y moontide-mcp が表示される必要があります。/c ではなく C:/ と表示される場合は、ユーザーフォルダーにある .claude.json ファイルの moontide エントリーを編集し、"command": "cmd", "args": ["/c", "npx", "-y", "moontide-mcp"] となるようにしてください。

この方法はコミュニティからの報告に基づいています。ここでは試していません。

ソースコードから実行する

npm の代わりに、このリポジトリのコピーから Moontide を実行するには、次のコマンドを実行します。

git clone https://github.com/konni-arcadia/moontide.git
cd moontide
npm ci
npm run build

次に、dist/index.js のフルパスを指定して追加します。ここでは <folder> と表記しています。

claude mcp add --scope user moontide -- node <folder>/dist/index.js

npm test でテストスイートを実行します。実ブラウザーでのチェック(npm run probe:page)には Chrome が必要です。

5. 最初の音楽
  1. Claude の新しいセッションを開始します。まだ何も開きません。Moontide は、音楽を聴きたいときまで待機します。
  2. たとえば、「一日の始まりに、落ち着いた曲をかけて」や「ゆったりとした温かみのあるグルーヴを流して」と頼みます。または「Moontide を起動して」と伝えます。Claude Code では、/mcp__moontide__start を実行しても同じです。
  3. ページが新しいタブで http://localhost:5757 に開きます。5757 が使用中の場合は、別のポートで開きます。Claude の返信にアドレスが表示されます。タブのタイトルには、Claude が実行されているフォルダー名とポートが表示されます。たとえば、「Moontide · my-project · 5757」です。
  4. ページ内のどこかを一度クリックします。ブラウザーで音声が再生されるのは、クリックした後だけです。
  5. 変更を頼みます。「もっと暗く」「ベースを追加」「テンポを落として」などと伝えます。

環境変数に MOONTIDE_NO_BROWSER=1 を設定して Moontide を起動すると、タブは開きません。Claude の返信にあるアドレスを自分で開いてください。

更新

実行中のバージョンを確認するには、npx -y moontide-mcp --version を実行します。リリース一覧は CHANGELOG.md で確認できます。npx はすでにダウンロードしたコピーを引き続き使うことがあります。最新リリースに更新するには、@latest を指定して Moontide を再度追加します。

claude mcp remove moontide --scope user
claude mcp add --scope user moontide -- npx -y moontide-mcp@latest
アンインストール
claude mcp remove moontide --scope user

Claude Desktop では、設定ファイルから moontide エントリーを削除して、Claude Desktop を再起動します。Moontide は履歴と設定をデータフォルダーに保存しています(「履歴」を参照)。これらも削除したい場合は、そのフォルダーを削除してください。

MIDI 楽器(任意)

Moontide は Web MIDI を通じて、コードから MIDI 楽器を演奏できます。Roland MT-32 と SC-55 のモデルが同梱されています。独自の楽器やモデルを記述したり、サウンドカタログを追加したり、MIDI クロックを送信したりできます。設定方法は docs/midi.md を参照してください。

許可プロンプトなしでページリクエストを有効にする

Claude アプリの「Code」タブで、ページリクエストをオンまたはオフにするよう Claude に頼みます。Claude は Moontide の set_page_requests ツールを呼び出します。ターミナルの Claude Code では、/mcp__moontide__page-requests-on と入力するとページリクエストが有効になり、/mcp__moontide__page-requests-off と入力すると待機状態になります。有効にすると、Claude はモニターを開始します。モニターは最長 30 分間動作し、ツールの応答によって開始を求められると再び開始します。待機状態では、ページリクエストが再びオンになるまで、ツールの応答からモニターの開始を求められなくなります。ページリクエストにはページを開いておく必要があるため、まず Moontide を起動してください。これらの名前は、サーバーを moontide として追加した場合のものです。

Claude Code はコマンドを実行するため、ページリクエスト用のモニターを開始する前に許可を求めます。毎回許可できます。より限定的な許可ルールを設定する場合は、Claude Code のドキュメントにある「permissions」セクションを参照してください。広範な node コマンドは許可しないでください。

音楽のリファレンス

Claude は get_strudel_reference ツール(MCP リソースとしても提供)を通じて、ページで実行される正確なバージョンの Strudel に関する事実ベースのリファレンスを取得します。対象は、Strudel と TidalCycles の比較、ミニ記法、パターン関数、エフェクトとサウンドコントロール、サウンドパレット、Strudel での音楽理論、トランジション、曲の構成、MIDI 出力の 9 つのトピックです。ここには事実のみが含まれます。何が使え、どのように記述するかです。Moontide にはムードを表す語彙、スタイルの素材、サンプル曲は含まれていません。Claude は音楽理論に関する自身の知識を使ってあなたの言葉を解釈し、選んだ内容を一行で伝えます。驚きを求める場合は、自分の言葉で頼んでください。そのためのメニューコマンドはありません。たとえば変化を徐々にするなど、セッションの方針を設定すると、解除するまで Claude は変更のたびにそれに従います。メロディーやリズムなど、何を重視するかを伝えると、Claude はそれを維持し、全面的な書き換えの前には確認を求めます。

小さな編集とハーモニー

Claude は edit_code ツールを使って、長い曲全体を再送信せずに数行だけ変更できます。小節の開始を待っている変更は、該当する小節で編集され、手動で加えた編集は保持されます。

コードでは、パターンの上に置くトップレベルの行で、意図するハーモニーを指定できます。たとえば const harmony = 'C:minor' のように記述します。この行は音を鳴らさず、トラックにもなりません。すると Jam ビューには、「Declared:」と「Heard:」の 2 行が並んで表示されます。

音符が複数のスケールに当てはまる場合、Jam ビューはそのうちの 1 つを提案し、たとえば「Proposed: C major, C is the note heard most.」のように、一文で理由を示します。演奏中のセクションで宣言されたスケールが当てはまる候補に含まれていれば、そのスケールを選びます。そうでなければ、音符に最もよく合うスケールを選びます。警告は有効なままです。「Scales that fit, click to switch:」には該当するスケールが一覧表示され、1 回のクリックまたは Enter キーでビュー全体を切り替えられます。同じスケールが引き続き当てはまる間は選択が維持されますが、再読み込みすると選択はリセットされます。音符が異なるスケールが候補にあり、コードでそのいずれも宣言されていない場合、警告は無効になります。ビューにはその理由とスケールの一覧が表示されますが、切り替えはできません。ピアノはギターと同じように色分けされ、凡例も共通です。また、それぞれの役割には形状またはテキストによる手がかりもあるため、色がなくても判別できます。

曲の構成

Claude が新しい曲を書くときは、必ず先頭に 1 つの const song を置きます。そこにはセクション名とサイクル数、各セクションでどのトラックのどのバージョン(バリエーション)を再生するか、またはトラックを休止するかが記され、トラックをグループにまとめることもできます。これは通常の Strudel のままで、同じコードを通常の Strudel でも再生できます。以前の曲に小さな変更を加える場合は、その場で編集され、構成は変わりません。song のない曲は、これまでどおり再生され、表示されます。

song のある曲では、Parts ビューは Song と呼ばれます。Song グリッドには、折りたたみ可能なグループの下にトラックが表示され、セクションごとに列が 1 つずつ並び、再生中のセクションが示されます。

  • セクションのヘッダーをクリックすると、ツールバーに表示されている次のタイミング、つまり再生中のセクションの終わり、次のフレーズ、または次の小節に、そのセクションを再生します。もう一度クリックするとキャンセルされます。
  • セルをクリックすると、そのトラックとセクションの別のバリエーション、または休止を選べます。いつもの手動編集のタイミングで切り替わります。
  • 固定されたバリエーションには、その音がセクションのハーモニーに合っているかどうかが表示されます。合っている、合っていない、または確認できない、のいずれかです。結果を表示するだけで、再生を妨げることはありません。
  • Stop の後に Play を押すと、最初のセクションから再生が始まります。Jam ビューの Declared 行は、再生中のセクションに合わせて更新されます。

Mixer では、グループがグリッドと連動して折りたためる枠として表示されます。グループの M または S を 1 回クリックすると、その下のすべてのトラックがまとめてミュートまたはソロになり、変更は 1 回の操作として扱われます。通常の Strudel にはグループ用のゲインがないため、グループフェーダーはありません。各ストリップとグループの小さなライトは、その音が聞こえると点滅します。Session ドロワーで動きをオフにすると、音が鳴っている間はライトが点灯したままになります。

Timeline では、音符をクリックして選択します。上下にドラッグするか、Up キーまたは Down キーを押すと、半音単位で音程が変わります。Delete、Backspace、または「Make a rest」を使うと、音符が休符になります。2 つのボタンでベロシティを 10 分の 1 ずつ変更できます。ページは編集内容を書き込む前にチェックを行い、1 回の編集で複数箇所の音符が変わる場合は事前に知らせ、いつもの手動編集のタイミングを使います。ページで編集できない音符には、その理由が表示されます。操作すると、あらかじめ入力されたリクエストとともに Ask ボックスが開き、Enter を押したときにだけ Claude に送信されます。1 つのレーンをドラッグするか、Shift を押しながら Left または Right を押してサイクル単位の範囲を選択し、「Ask Claude」を使って送信できます。

セクション、トラック、セル、またはグループを右クリックすると、その項目について Claude に尋ねられます。

テンポランプ

「8 小節かけて 140 まで上げて」のように、数小節かけてテンポを上げたり下げたりするよう Claude に頼めます。Claude は、新しいコードと、到達するテンポ、および 1〜64 の整数で指定された小節数の glideBars を、set_code または edit_code で送信します。すると、再生中のテンポからコード内のテンポまで、均等な小刻みで変化し、最後は正確にそのテンポになります。すぐに開始するか、変更が次の小節またはフレーズまで待機する場合は、そのタイミングで開始します。

実行中は、上部バーのテンポ表示に現在のテンポ、矢印、到達するテンポが表示されます。ホバーすると、残りの小節数を確認できます。

Mixer の操作、Song グリッドのセル変更、Timeline の編集、手動編集を行っても、ランプは継続します。別のテンポを指定したコードを送るとランプはキャンセルされ、そのテンポがすぐに再生されます。テンポを指定しないコードを送るとランプはキャンセルされ、テンポはその時点のままになります。新しい glideBars を指定すると、既存のランプが置き換わります。Stop を押してもキャンセルされ、次に Play を押すとコードのテンポで再生が始まります。再読み込み、または別のタブへの切り替えでも終了します。専用のキャンセルボタンはありません。

何も再生されていない場合、コードにテンポが設定されていない場合、または設定されたテンポがすでに再生中のテンポと同じ場合は、ランプは拒否され、何も変わりません。ランプはバージョンではなく、コードにも履歴にも書き込まれません。

MIDI クロックはランプの各ステップに追従します。アルペジエーターやステップシーケンサーなど、クロックに追従するハードウェアがランプにどう反応するかは確認されていません。

履歴

再生されたすべてのバージョンが保存されます。Claude 自身による変更も、Ctrl+Enter での編集も、それぞれ時刻、変更者、短いラベルとともに記録されます。コードの実行に失敗したものや停止は、バージョンとして保存されません。

Claude に「前のバージョンに戻して」「3 つ前のもの」「ベースが入っているもの」「これは残して、Take two と呼んで」「お気に入りを一覧表示して」などと頼めます。セッションドロワーの「最後の変更」カードには、再生中のバージョン番号(例:v42)が表示されます。

履歴ファイルは、OS のユーザー別データフォルダーにあります。

  • macOS:~/Library/Application Support/moontide/history.jsonl
  • Linux:$XDG_DATA_HOME/moontide/history.jsonl、または ~/.local/share/moontide/history.jsonl
  • Windows:%APPDATA%\moontide\history.jsonl

別のフォルダーを使うには、MOONTIDE_DATA_DIR を設定します。履歴は、1 行につき 1 件のエントリを記録するテキストファイルで、Claude のセッションが終了しても保持されます。

履歴には直近の 1000 バージョンが保存されます。それより古いものはまとめて削除され、Claude に通知されます。お気に入りは削除されません。

ファイルの行を読み取れない場合は、該当する行が Claude に通知されます。その行は変更されずにファイルに残ります。ファイルをまったく読み書きできない場合も、音楽は引き続き動作し、そのことが Claude に通知されます。

同じ履歴ファイルを使って複数の Moontide を同時に実行しないでください。同時に実行すると、2 つのバージョンに同じ番号が付くことがあります。

トラブルシューティング

インストール直後に「接続に失敗しました」と表示されます。 初回起動時にパッケージがダウンロードされますが、Claude Code は 30 秒後に処理を中断します。少し待ってから、claude mcp list で再度確認してください。失敗が続く場合は、タイムアウトを長くして Claude Code を起動します:MCP_TIMEOUT=60000 claude。PowerShell では、$env:MCP_TIMEOUT = "60000"; claude を使います。

別のフォルダーで Moontide が見つかりません。 --scope user を付けずに追加されています。Install の行を使って、もう一度追加してください。

ページが開きませんでした。 Claude の返信にページのアドレスが記載されています。自分で開くか、Claude に Moontide をもう一度起動するよう頼んでください。接続済みのページがない場合は、アドレスを知らせて新しいタブを開きます。

Moontide のタブが複数あります。 Moontide を起動した Claude の各セッションには、それぞれ専用のページとポートがあります。タブのタイトルは「Moontide · · 」で、セッションの実行フォルダーが表示されます。セッションドロワーにも同じ情報が表示されます。Claude に自分のタブを尋ねると、アドレス、ポート、タブのタイトルで答えます。

音が出ません。 ページを 1 回クリックしてください。ブラウザーのタブがミュートされていないことを確認し、ページを開いたままにしてください。

Claude Desktop が npx を見つけられません。 "command" にフルパスを指定します。macOS では which npx、Windows では where npx で表示されるパスを使います。ここでは <full path printed by which npx> と表記しています。これは一般的な対処法で、ここでは試していません。Claude Desktop のログは、macOS では ~/Library/Logs/Claude、Windows では %APPDATA%\Claude\logs にあります。

MIDI で Chrome または Edge を使うよう表示されます。 そのブラウザーでは Web MIDI を利用できません。

ステータス

まだ初期段階で、個人向けのソフトウェアです。動作確認済みの環境は 1 つだけです。Mac、Chrome、Claude Code、Claude Desktop と、MIDI 用の Roland SC-55、Munt MT-32 エミュレーター、Roland JUPITER-Xm で動作します。他の環境では試していません。テストスイートは CI で Windows、Linux、macOS 上で実行されますが、Windows や Linux で音楽を再生した人はいません。既知のバグがあります。フィードバックは歓迎しますが、サポートを保証することはできません。

既知の制限:

  • 手動での動作確認は、macOS、Chrome、Claude Code、Claude Desktop の組み合わせのみです。
  • Windows と Linux での手動テストは未実施です。Edge、Safari、Firefox も未テストです。
  • インターネット接続が必要です。
  • MIDI の利用には Chrome または Edge が必要です。
  • アルペジエーターやステップシーケンサーなど、Moontide の MIDI クロックに従うハードウェアがテンポランプにどう反応するかは、検証されていません。
  • 同じ履歴ファイルを使って複数の Moontide を同時に実行しないでください。
  • npx での初回起動時にパッケージがダウンロードされるため、時間がかかることがあります。

ネットワークとプライバシー

  • サーバーは 127.0.0.1 のみでリッスンし、ほかのホスト名へのリクエストは拒否します。
  • Moontide 独自のサーバーコードは外部へのリクエストを行わず、テレメトリーも送信しません。
  • ページは @strudel/repl 1.3.0 と acorn 8.18.0 を unpkg から読み込みます。バージョンを正確に固定し、インテグリティハッシュを指定しています。
  • その後、Strudel は raw.githubusercontent.com と cdn.jsdelivr.net からサウンドリストとサンプルを取得します。これらを対象とするハッシュはありません。
  • Claude が書いたコードはページ内で実行され、ほかのアドレスからサンプルを読み込む場合があります。
  • 履歴は、上記のローカルデータフォルダーに保存されます。

コントリビューションとセキュリティ

バグ報告やアイデアは、イシュー(バグ報告フォームを使用してください)で歓迎します。プルリクエストの取り扱いについては、 CONTRIBUTING.md をご覧ください。

セキュリティ上の問題は非公開で報告してください。公開イシューにはしないでください。詳しくは https://github.com/konni-arcadia/moontide/security/policy をご覧ください。

クレジット

このプロジェクトは、ほかの方々の成果を基盤としています。

  • Felix Roos、Alex McLean、Strudel のコントリビューターの皆さん:Strudel (ソース:https://codeberg.org/uzu/strudel)。あらゆる音を奏でるライブコーディングエンジンです。
  • Alex McLean と TidalCycles コミュニティ:Strudel が JavaScript に移植しているパターン言語、TidalCycles。
  • サンプル制作者の皆さん:Strudel がデフォルトで読み込むサンプルセットの制作者です。TidalCycles Dirt-Samples と Versilian Community Sample Library(VCSL)も含まれます。
  • Anthropic:Model Context Protocol とその TypeScript SDK により、Claude は Moontide と通信できます。
  • acorn の作者の皆さん:ページがコードの読み取りに使用する JavaScript パーサーを開発しました。

ライセンス

Moontide は Strudel を再生します。Strudel は AGPL-3.0-or-later の下で提供されています。Moontide も同じライセンスを使用します。実行時に Strudel を unpkg から読み込み、同梱はしていません。ライセンステキストは LICENSE にあります。Moontide は Strudel または TidalCycles の各プロジェクト、あるいは Anthropic と提携しておらず、これらから推奨を受けているものでもありません。


Konni — AI コーディングアシスタントを使って開発しました。

コメント

MCP は初めてですか?

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

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