About Chocodrop
Chocodrop is an MCP server in the AI category: real-time AI content drops for 3D scenes via natural language.
Install
git clone https://github.com/nyukicorn/chocodropThis server has no ConduID identity, so agent calls to it are not receipted. Pin the version you install and review the source before granting it credentials.
Ask AI
Ask AI about Chocodrop
Powered by Claude · Grounded in docs
Security checks
- ✓README presentThe repository ships documentation.
5 checks have not been run yet.
README
ChocoDrop
ちょこっとDrop。世界が咲く。 Drop a little, bloom a lot.
テキストや音声で、Three.js シーンに瞬時にオブジェクトを追加できるブラウザツール
A browser-based tool that enables instant 3D object creation and scene manipulation in Three.js using natural language commands.
🌐 Website | 🎮 Try Demo | 📚 Docs
✨ できること / What You Can Do
誰でもすぐ試せる
1. 多彩なデモで雰囲気を体験
ChocoDrop には複数の世界観のデモが用意されています:
- Basic (基本) - シンプルな操作体験
- Music Garden (音楽の庭) - 夜桜と音楽
- Space (宇宙) - 宇宙空間
- Toy City (おもちゃの街) - カラフルな街
- その他多数 → examples/
2. ブックマークから Three.js サイトにも導入可能
threejs.org など、Three.js を使っている既存サイトにも ChocoDrop UI を表示できます。 ※技術的には「ブックマークレット (bookmarklet)」と呼ばれる機能です
開発者向け: AI生成機能も使える
daemon (配布版) を起動すると:
- ✅ ChocoDrop UI が使える
- ✅ シーンの操作やスクリーンショットが可能
- ❌ AI生成機能は使えない(KAMUI Code 設定が必要)
さらに KAMUI Code を設定すると:
- ✅ "右上に桜の3Dモデルを置いて" → AI が生成・配置
- ✅ "このオブジェクトをモノクロにして" → AI が変換
⚠️ AI生成機能を使うには: リポジトリをcloneし、KAMUI Code設定が必要です。 詳細: D. 生成機能まで有効化する
🚀 クイックスタート
1. まずは目的に合わせてルートを選ぶ
| 目的 | 推奨ルート | 所要時間 | 主な手順 |
|---|---|---|---|
| 雰囲気をすぐ体験したい | デモ版(ホスト済み) | 1 分 | ブラウザでサンプルを開くだけ |
| threejs.org 等の Three.js サイトで試したい | ブックマークから注入 + daemon | 2–3 分 | daemon 起動 → ブックマーク登録 → 対象ページで実行 |
| 自分のプロジェクトに組み込みたい | daemon + SDK | 5–10 分 | daemon 起動 → SDK 読み込み → ready() attach() |
| AI生成機能も使いたい | リポジトリ clone + KAMUI Code 設定 | 10 分〜 | clone → npm run setup:mcp → npm run dev |
気になる行をクリック(またはスクロール)して、下記の詳細セクションから該当手順をたどってください。
2. シナリオ別ガイド
A. ブラウザで今すぐ試す(デモ版)
- オンラインですぐ試す: Basic Demo を開くだけで UI を体験できます。
- ローカルで試す:
ブラウザでnpm run example:basichttp://localhost:8000/basic/index.htmlを開きます。ネットワークが制限されている環境でも動作確認できます。 - さらに世界観を試したい場合は
examples/ディレクトリに複数のシーンが用意されています。
B. Three.js サイトにワンクリック注入
ブックマークバーに登録したボタンをクリックするだけで、Three.js を使っている既存サイトに ChocoDrop を導入できます。 ※技術的には「ブックマークレット (bookmarklet)」と呼ばれる機能です
- daemon を起動(初回のみ)
起動後は# npm 推奨 npx --yes @chocodrop/daemon@alpha # または pnpm pnpm dlx @chocodrop/daemon@alphahttp://127.0.0.1:43110で SDK/UI が配信されます。 - ブックマークを登録 Bookmarklet v2 を開き、「🍫 ChocoDrop v2」ボタンをブックマークバーへドラッグ&ドロップします。
- 対象ページで実行 threejs.org など任意の Three.js ページで登録したブックマークをクリックすると、右下に ChocoDrop UI が表示されます。daemon が停止している場合は Toast UI が起動コマンドを案内します。
- DevTools スニペット派のための代替
bookmarklet-code.jsの内容を Chrome の Snippets に貼り付けて実行すれば、同じトースト UI を呼び出せます。
C. 自分の Three.js プロジェクトに組み込む(配布版)
- 前提
- Node.js 16+ / npm または pnpm
- Three.js r170 付近(推奨)
- daemon をローカルで起動
npx --yes @chocodrop/daemon@alpha # 既存ポートと衝突する場合は --port 43111 などを付与 - SDK を読み込む(CDN 方式)
HTML の
<head>などに以下を追加します。
🧪 Testing & Validation
- XR ブリッジ/Remote Scene の最小E2Eは Playwright で提供しています。
- 事前にブラウザをインストールする場合は
npx playwright install webkitをワークスペース内で実行してください。 - 実行コマンド:
npm run test:e2e- XRBridge が既存レンダーループを捕捉し、
XRFrameをホストループに渡せているか - RemoteScene Loader が CORS エラー→プロキシ再試行→成功のテレメトリを発火するか の2シナリオを自動で検証します。
Three.js/OrbitControls をすでに読み込んでいれば、そのまま<script src="http://127.0.0.1:43110/sdk.js"></script>ready()→attach()を呼べます。 - XRBridge が既存レンダーループを捕捉し、
- シーンにアタッチ
UI が表示され、await window.chocodrop.ready(); await window.chocodrop.attach(scene, { camera, renderer, onControlsToggle: (disabled) => { controls.enabled = !disabled; } });@キーから操作できれば成功です。 - npm で取り込む場合
npm install chocodrop three
bundler 向けの詳細手順はimport { createChocoDrop } from 'chocodrop'; const choco = createChocoDrop(scene, { camera, renderer, serverUrl: 'http://127.0.0.1:43110' });docs/INTEGRATION.mdを参照してください。
D. 生成機能まで有効化する(KAMUI Code + ローカルサーバー)
- リポジトリを clone し、依存関係をインストールします。
git clone https://github.com/nyukicorn/chocodrop.git cd chocodrop npm install npm run setup:mcpで KAMUI Code の設定ファイルパスを登録します。npm run devを実行するとhttp://localhost:3011でサーバーが起動し、生成 API が利用可能になります。- 詳細な構成やモデル設定は
docs/SETUP.mdを参照してください。
🔍 ヒント: daemon や
sdk.jsのレスポンスヘッダーにX-ChocoDrop-SDK-Source: distが表示されていれば、ビルド済みバンドルが正しく配信されています。ブラウザでawait window.chocodrop.ready()を実行して接続状況をチェックできます。
💡 主な機能
🍬 Toast UI - 優しい起動案内
デーモンが起動していない場合、右下にToast UIが表示されます:
- 起動コマンドのコピー: ワンクリックでコマンドをクリップボードにコピー
- 自動ポーリング: 2.5秒間隔でデーモンの起動を自動チェック
- 接続成功: デーモンが起動すると自動的にSDKを読み込み
🔄 reload() API
設定をリロードできる新しいAPI:
const result = await window.chocodrop.reload();
console.log(result); // {ok: true, message: "Configuration reloaded"}
🌐 Three.js サイト対応 - Full UI表示
ブックマークから Three.js を使っている外部サイト(threejs.org、CodePen、Glitch等)に統合した場合も、フル機能のUIが表示されます(プレースホルダーUIではありません)。
特徴:
- ✅ 完全なChocoDrop UIが表示
- ✅ THREE.jsが未読み込みでも自動的にCDNから取得
- ✅ ローカルデーモン(127.0.0.1)との通信のみ(外部送信なし)
- ⚠️ 現在は読み取り専用モード(AI生成機能はローカル環境でのKAMUI Code設定が必要)
🏢 企業ポリシー配慮 - CDN制御
企業ネットワークでCDNアクセスが制限されている環境向けに、THREE.js読み込み動作をカスタマイズできます:
<script>
// CDNからのTHREE.js読み込みを無効化(ローカルフォールバックのみ使用)
window.chocodropConfig = {
allowCdn: false // デフォルト: true
};
</script>
<script src="http://127.0.0.1:43110/sdk.js"></script>
カスタムTHREE.jsソース指定:
<script>
window.chocodropConfig = {
threeSrc: '/path/to/your/three.module.js' // カスタムTHREE.jsパスを指定
};
</script>
THREE.js読み込みの優先順位:
- 既存の
window.THREE(既に読み込まれている場合) window.chocodropConfig.threeSrc(カスタムソース指定時)- CDN(
allowCdn: trueの場合、SRI付き安全な読み込み) - ローカルフォールバック(
/vendor/three-0.170.0.min.js)
セキュリティ機能:
- THREE.js v0.170.0 に固定(バージョン固定で安全性向上)
- SRI(Subresource Integrity)による改ざん検知
- CDN失敗時のローカルフォールバック
🏗️ アーキテクチャ・技術詳細
🌐 推奨ブラウザ
Chrome(推奨・動作確認済み)
- ✅ Private Network Access (PNA) 完全サポート
- ✅ localStorage persistence 実装
- ✅ すべての機能が安定動作
⚠️ 他のブラウザについて: Safari/Firefox/Edgeは現在サポートしていません。Chromeの使用を強く推奨します。
🔒 Origin許可設定
ChocoDrop は CORS allowlist でアクセスを制御しています。
デフォルトで許可されているOrigin:
http://localhost:*(全ポート)- 開発環境http://127.0.0.1:*(全ポート)- 開発環境https://threejs.org- ブックマークレット用
自分のサイトで使う場合:
~/.config/chocodrop/allowlist.json を作成・編集:
{
"origins": [
"http://localhost:*",
"http://127.0.0.1:*",
"https://threejs.org",
"https://your-site.com"
]
}
Daemon を再起動すると反映されます。
⚠️ 信頼できるサイトのみ追加してください
🔐 セキュリティ
ChocoDrop は常駐 daemon + ブラウザ SDK の構成で動作します。
- ローカル専用: デフォルトで
127.0.0.1のみアクセス可能 - CORS制御: allowlistで許可したOriginのみアクセス可能
- 読み取り専用モード: ブックマークレット等では UI表示のみ(生成APIは無効)
- 生成機能: KAMUI Code 設定時のみ有効(ローカル環境のみ)
❓ トラブルシューティング
ブックマークから注入できない
- ブラウザのコンソール(F12)でエラーを確認
- デーモンが起動しているか確認:
http://127.0.0.1:43110/v1/healthにアクセス
Toast UIが表示されない
- デーモンが既に起動している可能性(正常な動作)
- ページをリロードしてもう一度試す
CORSエラー
- allowlist設定が必要な場合があります(詳細なガイドは次バージョンで追加予定)
~/.config/chocodrop/allowlist.jsonで設定可能
🧪 開発者向けテストガイド
ChocoDrop のフォームUI(CommandUI.js / CommandUIDemo.js)を修正した際のテスト手順です。
SDK版テスト(画像生成・MCP設定機能)
# 既存サーバー停止
lsof -ti:3011 | xargs kill -9 2>/dev/null || true
lsof -ti:8080 | xargs kill -9 2>/dev/null || true
# サーバー起動
node src/server/server.js --port 3011 &
python -m http.server 8080 --directory examples/sdk-test &
→ ブラウザで http://localhost:8080/ を開く
- ✅ 画像生成機能・MCP設定が動作確認できます
- ✅ ビルド不要(ソース直読み込み)
デモ版テスト(インポート機能のみ)
# ビルド
npm run build
# 既存サーバー停止
lsof -ti:3011 | xargs kill -9 2>/dev/null || true
lsof -ti:8000 | xargs kill -9 2>/dev/null || true
# サーバー起動(プロジェクトルートから)
node src/server/server.js --port 3011 &
python -m http.server 8000 &
→ ブラウザで http://localhost:8000/examples/basic/ を開く
- ✅ インポート機能が動作確認できます
- ⚠️ ビルド必要(
npm run build)
⚠️ 重要
- ❌
http://localhost:3011/は開かないでください(管理画面のみ・Three.jsシーンなし) - ✅ SDK版:
localhost:8080、デモ版:localhost:8000/examples/basic/が正しいURLです - 📝 詳細:
.claude/commands/edit-chocodrop-form.md
📚 詳細ドキュメント
📄 License
MIT License - see LICENSE file for details.
🔗 Links
- GitHub: https://github.com/nyukicorn/chocodrop
- Examples: examples/
README copy captured when this server was indexed; it may lag the repository. The original is authoritative.