B2match (unofficial) について
B2match (unofficial)は、イベント参加者向けの読み取り専用MCPサーバーで、イベント、マッチング、参加者の情報を取得できます。公開データは匿名で利用でき、個人データにはローカル認証が必要です。既読状態に影響する操作には制限があります。
主な機能
- 01イベントとアジェンダの詳細を取得
- 02参加者プロフィールを検索・取得
- 03ミーティングと空き時間を確認
- 04会話と通知を閲覧
- 05トークン保存と既読状態を保護
活用シーン
- 01イベントのアジェンダと登壇者を確認
- 02参加者や組織を検索
- 03個人のミーティングと空き時間を確認
- 04既読にせず会話の概要を確認
MCP 対応
B2matchのGraphQLクエリAPIを介してMCPクライアントに接続し、イベントやマッチング情報をツールとして公開します。ミューテーションを拒否し、既読状態に影響する可能性のあるクエリを制限します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
22掲載時のツール一覧 · 6 日前に更新
このツールにパラメーターはありません。
詳細
b2match-mcp
B2match のイベントおよびマッチメイキングプラットフォーム向けの読み取り専用 MCP サーバーです。
このパッケージは、ユーザーが npx と stdio MCP トランスポートを使ってローカルで実行することを想定して設計されています。
免責事項: このプロジェクトは非公式であり、B2match とは提携、承認、サポートのいずれも受けていません。B2match の非公開 Web GraphQL API を使用しているため、利用可能なフィールドは予告なく変更される場合があります。B2match の利用規約および GDPR に従ってご利用ください。参加者のプロフィールには他者の個人データが含まれる場合があります。エクスポートデータはローカルに保管し、各イベントの公開範囲ルールを尊重し、個人データを収集または再公開しないでください。
読み取り専用とプライバシーの保証
- MCP サーバーは GraphQL の
query操作のみを送信します。ミューテーションとサブスクリプションは、ネットワーク呼び出しの前に解析され、拒否されます。 - プロフィール閲覧、既読にする操作、セッション出席、ブックマークのミューテーションなど、読み取りのように見える既知の書き込み操作は明示的にブロックされます。
- 特定のクエリフィールドを選択すると、B2match が独自の閲覧数/既読数カウンターを更新する場合があります。サーバー側の副作用を参照してください。
- Plausible、Sentry、Google Analytics、HubSpot、LinkedIn pixel、その他 B2match 以外の分析エンドポイントを呼び出すことはありません。
https://api.b2match.com/v4/queryと CLI が開く B2match の Google ログイン URL 以外には、外部呼び出しを行いません。- このパッケージではテレメトリーや分析データを収集しません。
- ツールやステータスコマンドでトークンを出力することはありません。
- トークンは、利用可能な場合は OS のキーチェーンに保存され、それ以外の場合は
0600の設定ファイルに保存されます。
インストール/実行
Node.js 22 以降が必要です。Apple Silicon 搭載の macOS では、推奨されるインストール方法は npx です。認証情報の保存にネイティブビルドは必要ありません。
npx -y b2match-mcp
チェックアウトしたリポジトリから実行する場合:
npm install
npm run build
node dist/cli.js
MCP クライアントの設定
Claude Desktop
{
"mcpServers": {
"b2match": {
"command": "npx",
"args": ["-y", "b2match-mcp"]
}
}
}
Cursor
{
"mcpServers": {
"b2match": {
"command": "npx",
"args": ["-y", "b2match-mcp"]
}
}
}
VS Code
.vscode/mcp.json またはユーザー MCP 設定に追加します:
{
"servers": {
"b2match": {
"type": "stdio",
"command": "npx",
"args": ["-y", "b2match-mcp"]
}
}
}
このチェックアウトからローカル開発する場合:
{
"mcpServers": {
"b2match": {
"command": "node",
"args": ["/absolute/path/to/b2match-mcp/dist/cli.js"]
}
}
}
認証
公開イベントデータは匿名で利用できます。閲覧者のプロフィール、参加中のイベント、ミーティング、スケジュール、会話、通知、空き状況などの個人データには、ローカルに保存された B2match セッショントークンが必要です。
macOS/Linux でのログイン
b2match-mcp login https://www.b2match.com/e/<event-slug>
# or: npx b2match-mcp login https://www.b2match.com/e/<event-slug>
デフォルトのコマンドは次の処理を行います:
- イベントを匿名で解決し、B2match に Google ログイン URL を要求します。
- インストール済みの Chrome、Chromium、Edge、または Brave を別プロセスとして起動します。
- 普段使用しているブラウザのプロフィールではなく、ツールの設定ディレクトリに専用の永続プロフィールを使用します。
- その専用プロフィールのみを対象に
127.0.0.1でリモートデバッグポートを開きます(普段使用しているブラウザは対象外です)。ログイン完了後またはタイムアウト後にポートは閉じられます。 - Google へのサインインと 2FA は手動で完了します。CLI がフォームに入力することはありません。
- イベントタブの URL(
www.b2match.com/e/<slug>?token=…)またはイベントのセッションクッキーから JWT を取得し、簡易な閲覧者クエリで検証して保存した後、そのブラウザウィンドウを閉じます。Cookie が設定される前に Google ログイン後のイベントページが Chrome で 404 になる場合があります。その場合は URL トークンを使う方法が機能します。
専用プロフィールに Google セッションが保持されるため、通常、2 回目以降のログインはワンクリックで完了します。
CLI がトークンを初めて保存または読み取る際、macOS にキーチェーンアクセスの確認が表示される場合があります。キーチェーンに保存する場合は、b2match-mcp/使用中のターミナルにアクセスを許可してください。アクセスが拒否された場合、またはキーチェーンを利用できない場合、CLI は代わりにプライベートな設定ファイルを使用します。
貼り付け専用/環境トークン
専用のブラウザーフローを実行できない場合に限り、こちらを使用してください。
b2match-mcp login --paste
# or: npx b2match-mcp login --paste
B2MATCH_TOKEN='<session-cookie-value>' b2match-mcp
B2MATCH_TOKEN はメモリ内で使用され、永続化されません。トークンをコマンドラインに渡さないでください。シェルの履歴に残ってしまいます。
ステータス/ログアウト
b2match-mcp status
b2match-mcp logout
b2match-mcp logout --all
logout は、保存された B2match トークンのみを削除します。logout --all は専用のブラウザープロファイルも削除します。
専用のブラウザープロファイル
ログインには、~/.config/b2match-mcp/browser-profile(または $B2MATCH_MCP_CONFIG_DIR/browser-profile/$XDG_CONFIG_HOME/b2match-mcp/browser-profile)にある専用の Chromium プロファイルを使用します。このプロファイルには Google のセッションが保持されるため、次回の login では通常、ワンクリックでログインできます。
Google のセッションと保存された B2match トークンの両方を消去するには、次を実行します。
b2match-mcp logout --all
保存されたトークンはそのままにして、プロファイルだけを削除するには、次を実行します。
rm -rf ~/.config/b2match-mcp/browser-profile
--all を付けずに logout を実行すると、プロファイルは保持されるため、次回のログイン時に Google を再利用できます。
保存場所
- macOS:
/usr/bin/security経由のログイン Keychain(b2match-mcpサービス、defaultアカウント)。保存のたびに CLI が項目を読み戻します。シークレットが見つからない場合や誤っている場合は、プライベートファイルにフォールバックし、keychain read-back failed, stored in fileと表示します。 - Linux:インストールされ、ロックが解除されている場合は
secret-tool/libsecret。 - Windows:プライベートなフォールバックファイル。
- フォールバックファイル:
$B2MATCH_MCP_CONFIG_DIR/auth.json、$XDG_CONFIG_HOME/b2match-mcp/auth.json、または~/.config/b2match-mcp/auth.json。権限0600で書き込まれます。 - Keychain の項目が存在するものの空、または読み取れない場合、
b2match-mcp statusはsource: "none"としてログアウト状態を装うのではなく、再ログインのヒントとともにsource: "keychain-unreadable"を報告します。 - 専用のブラウザープロファイル:
~/.config/b2match-mcp/browser-profile(同じ設定ディレクトリ)。
トークンが JWT の場合、CLI はその exp クレームを expiresAt として記録します。B2match には不透明なトークンもあり、その場合、有効期間をローカルで確認することはできません。認証済みビューアーチェックで 401 が返された場合は、無効または期限切れとして報告され、その状態がプロセス内で記憶されます。その後、公開ツールは保存されたトークンを削除せずに匿名で処理を続けます。
ログインのトラブルシューティング
- 対応ブラウザーが見つからない: Chrome、Chromium、Edge、または Brave をインストールするか、
b2match-mcp login --pasteを使用してください。 - Google にウィンドウをブロックされる: 可能であれば専用ウィンドウでサインインを完了してください。できない場合は
--pasteを使用してください。 - Google の後にタイムアウト/404 が発生する: Chrome で Cookie が設定される前に 404 が発生した場合、CLI はイベントタブの URL からも JWT を読み取ります。サインインを完了して待つか、
--pasteを使用してください。 - Keychain のプロンプトが拒否される:
b2match-mcp logoutを実行してから再度loginを実行し、プロンプトを承認してください。または、B2MATCH_MCP_DISABLE_KEYCHAIN=1を設定してプライベートファイルへのフォールバックを使用してください。 statusにkeychain-unreadableと表示される: Keychain の項目が空または破損しており、使用可能なauth.jsonが見つかりません。b2match-mcp logoutを実行してから、再度loginを実行してください。ファイルのトークンが引き続き有効な場合、statusはsource: "file"を使用し、Keychain の項目に関するwarningを設定します。- トークンが間違っている/期限切れ:
b2match-mcp logoutを実行し、再度サインインしてからloginを繰り返してください。
ツール
公開/匿名:
get_event- イベントのメタデータ、日程、登録期間、ログイン方法、ナビゲーション。数値 ID とスラッグは同じフィールドを返します。list_participants- ページネーションと任意の検索に対応した、簡潔な参加者の概要。詳細なリストのペイロードを取得するには、detail=trueを設定します。get_participant- プロフィール閲覧のトラッキングを行わずに、1 人の参加者のプロフィールを取得します。list_organisations、get_organisation- 組織/参加ページ。/components/<id>のようなメニューパスは自動的に解決されます。list_opportunities、get_opportunity- マーケットプレイスのエントリー。メニューパスは自動的に解決されます。不明なオポチュニティは MCP の見つからないエラーを返します。get_agenda、get_session、list_session_attendees、list_speakers。
認証が必要:
auth_statuslist_my_eventsmy_participationmy_schedulemy_meetings- ステータス別のミーティング。フィルターなしのレスポンスでは、detail=trueを指定しない限り、簡潔な空き状況の概要が返されます。my_availability- デフォルトでは、日ごとに統合された空き時間帯を返します。タイムスロットの全グリッドを取得するには、detail=trueを指定します。find_meeting_slotsmeeting_recommendationslist_conversations- 最後のメッセージのプレビュー。会話を既読にはしません。get_conversation- メッセージの取得によって会話が既読になるため、デフォルトでは無効です。副作用を参照してください。list_notifications- デフォルトでは未読/未確認のカウンターを返します。全リストを取得すると未確認カウンターがリセットされます。
任意の生クエリ:
graphql_readはB2MATCH_ALLOW_RAW=1の場合にのみ登録されます。クエリ以外の操作と、B2MATCH_ALLOW_SIDE_EFFECT_READS=1が設定されていない場合にmessagesV2または通知リストを選択するクエリは、引き続き拒否されます。
サーバー側の副作用
このクライアントは、MarkConversationAsSeen や ReadNotification などの B2match ミューテーションを送信することはありません。ただし、特定のフィールドを選択するクエリによって、B2match 側で既読/確認済みの状態が変更される場合があります。
get_conversation(messagesV2)は、その会話を既読にします(未読会話の数が減少します)。notifications(...)リストフィールドを指定したlist_notificationsは、未確認カウンターをリセットします(未確認 → 0)。未読カウンターは変化しません。notificationsCounterのみを取得した場合、未確認カウンターはリセットされません。list_conversations(lastMessageV2を含む)に既知の副作用はありません。
制御:
- デフォルトの
list_notificationsはunread/unseenカウンターのみを返します。 get_conversationと通知の全リストを利用するには、B2MATCH_ALLOW_SIDE_EFFECT_READS=1および明示的なツール引数(acknowledge_marks_read/acknowledge_marks_seen)が必要です。graphql_readは、同じ環境変数が設定されていない場合、messagesV2またはnotificationsリストを選択するクエリを拒否します。
最後のメッセージだけが必要な場合は、list_conversations を使用してください。
イベントを指定する各ツールは、現在のイベント URL(https://www.b2match.com/e/<slug>)、旧形式のイベント URL(https://<slug>.b2match.io)、スラッグのみ、または数値のイベント ID を受け付けます。
認証が必要なツールは、トークンが保存されていない場合、ログイン方法を案内する MCP エラーを返します。保存されたトークンに対して HTTP 401 が返された場合にのみ、トークンが無効または期限切れであると通知します。
開発
npm install
npm run build
npm test
Lint、フォーマット、カバレッジ、Conventional Commits、読み取り専用ガードについては、CONTRIBUTING.md を参照してください。
公開イベントに対するライブスモークテスト(任意、CI では実行されません):
B2MATCH_LIVE_SMOKE=1 B2MATCH_SMOKE_EVENT='https://www.b2match.com/e/<event-slug>' npm test -- tests/live-smoke.test.ts
両方の環境変数が設定されていない限り、スモークテストはスキップされます。
公開
リリースは、main の Conventional Commits から Release Please によって作成されます。同じワークフロー(.github/workflows/release-please.yml)は、リリースの作成時に npm publish --provenance --access public で公開します(OIDC 信頼済み公開のみ — NODE_AUTH_TOKEN は不要)。Provenance には公開リポジトリが必要です。npm の信頼済み公開をワークフロー release-please.yml に対して設定してください。既存のタグを再公開するには、gh workflow run release-please.yml -f publish_tag=vX.Y.Z を実行します。.github/workflows/publish.yml は、ブランチ先端から手動で再公開する場合にのみ使用します。
検証状況
このリポジトリで検証済みです:
- TypeScript のビルドとユニットテスト。
- クエリ専用の強制、イベント識別子の解析、Cookie 名のヘルパー、専用ブラウザーの起動引数、セクションパスの解決、簡潔な参加者の概要、401/認証エラーポリシー。
- パッケージ化された CLI の
--help/status。 B2MATCH_SMOKE_EVENTが指定されている場合に、すべての公開ツールを実行する、オプトイン方式の匿名ライブスモークテスト。
実機での実際のログインが必要です:
- 専用プロファイルでの Google ログイン、Keychain のプロンプト、URL トークンまたは Cookie の取得。
- 認証が必要なツール:
list_my_events、my_participation、スケジュール、ミーティング、空き状況、ミーティング枠、おすすめ、会話、通知。
ライセンス
MIT。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。