vibo-mcp について
vibo-mcp は、イベント主催者やカップルが Vibo のイベント音楽を計画するための MCP サーバーです。タイムライン、リクエスト曲、質問、ゲスト、通知を扱い、選曲を Spotify または Apple Music にエクスポートできます。
主な機能
- 01イベントと音楽タイムラインの閲覧
- 02リクエスト曲の追加と曲へのいいね
- 03タイムラインのセクションと曲の管理
- 04通知、質問、ゲストの管理
- 05選曲を Spotify または Apple Music にエクスポート
- 06変更送信前の確認
活用シーン
- 01イベントのタイムラインとリクエスト曲の確認
- 02タイムラインのセクションごとに曲を整理
- 03イベントの質問への回答とゲスト管理
- 04イベントの選曲のエクスポート
MCP 対応
Vibo の主催者やカップル向け操作を MCP ツールとして提供します。Vibo に変更を送信する前に確認が必要です。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
npx -y vibo-mcpVIBO_EMAILVibo account email (or use VIBO_ACCESS_TOKEN for SSO accounts)VIBO_PASSWORDシークレットVibo account passwordVIBO_ACCESS_TOKENシークレットCaptured x-token from a signed-in web.vibodj.com session (SSO alternative)VIBO_REFRESH_TOKENシークレットMatching x-refresh-token so the session can renewVIBO_UPLOAD_DIROptional. The upload directory: vibo_set_profile_photo and photo/file answers to vibo_answer_question only read local files from it. Default ~/Downloads/vibo-mcp.VIBO_SESSION_FILEOptional. Where a browser-captured token pair is persisted so it survives MCP restarts. Default ~/.vibo-mcp/session.json.VIBO_API_URLOptional. Overrides the Vibo GraphQL endpoint. Default https://api.vibodj.com/v2/graphql.ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
42掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| view | enum | いいえ | レスポンス形式:"compact"(デフォルト)は、レスポンス内の他の場所にすでに含まれているフィールドを省略します。"full" は、このサーバーが認識するすべてのフィールドを返します。compact はレスポンスから画像/アバターの URL を削除し、"full" は Vibo のペイロードをそのまま返します。フィールドの選択には対応していません。このサーバーには、どの Vibo フィールドが重要かを示す検証済みの記録がなく、選択規則を作ると呼び出し元が必要とするフィールドを削除するおそれがあります。compact | full |
詳細
vibo-mcp
Vibo(vibodj.com)用 MCP サーバーです。主催者やカップルとして、イベントの音楽を計画できます。イベントやタイムラインの閲覧、曲のリクエストの確認と追加、曲への「いいね」、通知の管理、選曲の Spotify/Apple Music へのエクスポートを、すべて自然言語で行えます。
AI(Claude Code)が開発・保守しています。ご自身の判断でご利用ください。 非公式であり、Vibo とは提携していません。ご自身のアカウントとデータでのみ動作します。
インストール
{
"mcpServers": {
"vibo": {
"command": "npx",
"args": ["-y", "vibo-mcp"],
"env": {
"VIBO_EMAIL": "[email protected]",
"VIBO_PASSWORD": "your_password"
}
}
}
}
認証
次のいずれかの方法を選択してください。
| 方法 | 環境変数 | 使用する場面 |
|---|---|---|
| メールアドレスとパスワード(推奨) | VIBO_EMAIL、VIBO_PASSWORD | メールアドレスとパスワードで Vibo にサインインする場合。 |
| 取得済みトークン | VIBO_ACCESS_TOKEN(および VIBO_REFRESH_TOKEN) | アカウントで Apple/Google/Facebook サインインを使用している場合(パスワードなし)。サインイン済みの web.vibodj.com セッションから x-token/x-refresh-token を取得してください。 |
| ブラウザーで取得(SSO) | vibo_capture_session を実行 | ContextMint Bridge(SSO 取得用) のブラウザー拡張機能をインストールして web.vibodj.com にサインインした状態で、トークンを自動的に取得します(~/.vibo-mcp/session.json に保存されます)。 |
サーバーは認証情報なしで起動します。設定エラーは、最初のツール呼び出し時にのみ表示されます。
ContextMint Bridge(SSO 取得用)
vibo_capture_session は、ContextMint Bridge ブラウザー拡張機能を通じて、サインイン済みのタブを読み取ります。次の場所からインストールしてください。
github.com/nullnet-app/contextmint-bridge/releases:
- Chrome: Chrome 用の zip をダウンロードして解凍し、
chrome://extensionsで展開済みの拡張機能を読み込みます(デベロッパーモード → 展開した拡張機能を読み込む)。 - Safari: まだ利用できません。公開ダウンロードがない ContextMint アプリに組み込まれる予定です。当面は Chrome をご利用ください。
初回使用時に拡張機能に表示されるペアリングコードを承認してください。
ContextMint Bridge は、同じメンテナーによる fetchproxy ブラウザー拡張機能の新名称です。fetchproxy の README
(https://github.com/chrischall/fetchproxy#extension) からも案内されています。ソースコードは
https://github.com/nullnet-app/contextmint-bridge で公開されています。ご自身でビルドするか、リリースの zip を同梱の .sha256 ファイルと照合してください
(shasum -a 256 -c contextmint-bridge-chrome-<version>.zip.sha256)。
アップロード
vibo_set_profile_photo と vibo_answer_question への写真/ファイルによる回答は、アップロードディレクトリ(VIBO_UPLOAD_DIR、デフォルトは ~/Downloads/vibo-mcp)内のローカルファイルのみを読み取ります。Claude にアップロードを依頼する前に、ファイルをそこへコピーしてください。隠しファイル、ディレクトリ外を指すシンボリックリンク、25 MiB を超えるファイルは拒否されます。写真用スロットには実際の画像が必要です。拡張子が画像形式であることに加え、ファイルの内容もその形式と一致している必要があります(テキストファイルの拡張子を変更したものは拒否されます)。また、指定するパスはファイルそのものでなければなりません。写真の場合は、アップロードディレクトリ内を指すものも含め、シンボリックリンクはすべて拒否されます。
タイムラインのセクションと制限
vibo_create_sectionはセクションを追加し、配置できます(afterSectionIdまたは 0 始まりのposition)。ウェブアプリでは新しいセクションは末尾にのみ追加されます。 公開範囲はhost(デフォルト、「自分と DJ」)またはpublic(ゲストも含む)です。vibo_delete_sectionは削除前に、セクション名、曲数、回答済みの質問数を表示します。force: trueを指定しない限り、DJ の再生禁止リスト(dontPlay)とタイムラインの区切り(headline)は削除できません。vibo_reorder_sectionsは、1 つ以上のセクションを別のセクションの直後、または先頭に移動します。vibo_reorder_songsは、セクション内の曲に対して同じ操作を行います。
Vibo の制限は、何かを送信する前に確認されます。
| 対象 | 制限 |
|---|---|
| セクション名 | 45 文字(ウェブアプリの制限) |
曲のコメント(vibo_update_song) | 90 文字(絵文字は 2 文字としてカウント) |
ホストが一部の操作を行えるのは、DJ の設定で許可されている場合のみです。対象となるのは、セクションの追加や並べ替え(イベント設定)、またはセクション内の曲の並べ替え(そのセクションの「ホストが曲を並べ替え可能」)です。Vibo は、ホストが作成したすべてのセクションで「ホストが曲を並べ替え可能」をオフにします。この設定をオンにできるのは DJ だけです。設定によって操作がブロックされた場合、ツールは Vibo の簡素な「Action is not allowed for user」を返す代わりに、どの設定が原因かを伝えます。
Vibo はホストが設定したセクションの説明を保存しないため、vibo_create_section では代わりにメモ(DJ 向け)を指定します。
確認
書き込み操作(曲、コメント、招待、エクスポート、回答、アップロードの追加や削除など)はすべて、Vibo に送信する前に確認されます。
| 変数 | デフォルト | |
|---|---|---|
MCP_CONFIRM_MODE | ask-user | 確認プロンプトを表示できないクライアント(claude.ai、Claude Desktop)での書き込み動作です。ask-user:2 段階で処理します。最初の呼び出しでは何も行わず、プレビューとトークンを返します。その後、モデルが再度トークンを指定して呼び出す前に、チャットであなたの承認を得る必要があります。auto:同じく 2 段階で処理しますが、モデルはプレビューを確認した後、自らトークンを使用できます。refuse:そのようなクライアントでは書き込みを拒否します。プロンプトを表示できるクライアント(Claude Code)には、MCP_CONFIRM_ELICITATION=off でない限り、常に実際のプロンプトが表示されます。認識できない値は refuse として扱われます。 |
MCP_CONFIRM_ELICITATION | on | off にすると確認プロンプトは表示されず、すべてのクライアントで MCP_CONFIRM_MODE の動作が適用されます。プロンプトを表示できると言いながら実際には表示しないクライアント(書き込みが停止する opencode 2.0.x)では、この値を設定してください。それ以外の値は on として扱われ、stderr に警告が表示されます。 |
MCP_CONFIRM_TTL_SECONDS | 600 | トークンの有効期間です。 |
MCP_CONFIRM_SECRET | プロセスごとにランダム | 署名キーです。サーバーの再起動後もトークンを有効にする必要がある場合のみ設定してください。 |
トークンは一度だけ有効で、プレビュー時のツールと引数に対してのみ使用できます。引数を変更した場合や、使用済みトークンを再利用した場合は拒否され、何も送信されません。
仕組み
Vibo のアプリは、メールアドレスとパスワードによる signIn で取得した x-token ヘッダーを使って、https://api.vibodj.com/v2/graphql の GraphQL API と通信します。このサーバーは同じフローをサーバー側で再利用するため、ブラウザーは不要です。また、ホストとカップル向けの操作を MCP ツールとして提供します。変更を伴うツールはすべて、最初に確認を求めます。確認プロンプトを表示できるクライアント(Claude Code)にはプロンプトが表示されます(MCP_CONFIRM_ELICITATION=off の場合を除く)。それ以外の場合、最初の呼び出しではネットワークへのリクエストを行わず、プレビューと confirmToken を返します。そのトークンを指定して再度呼び出した場合にのみ変更が適用されます(確認を参照)。
リバースエンジニアリングで得られた API の説明は docs/VIBO-API.md、ツール一覧は skills/vibo-mcp/SKILL.md を参照してください。
開発
npm install
npm run build # tsc + esbuild bundle → dist/
npm test # vitest
ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。