mcpField
B
BoxTier Basketball Receipt

BoxTier Basketball Receipt

リモート
boxtier.krゲーム・エンタメ03 週間前に更新
リポジトリ公式サイト

BoxTier Basketball Receipt について

RankBallは、ReactとViteで作られた、友人同士のバスケットボール試合を登録するアプリです。両チームの承認後に結果とティアを記録でき、localStorageのデモモードとSupabaseによる永続保存に対応します。

主な機能

  1. 01バスケットボール試合の登録
  2. 02両チーム承認後の結果記録
  3. 03戦績とティアの管理
  4. 04localStorageデモモード
  5. 05Supabaseによる任意の永続保存

活用シーン

  1. 01友人同士の試合の運営
  2. 02双方が承認した試合結果の保存
  3. 03環境設定なしでのローカルデモ実行

設定

リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。

エンドポイントhttps://boxtier.kr/mcp
インストールコマンドをコピー
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。

ツール

5
パラメーター型必須説明
querystringはいユーザーがバスケットボールのマッチングルームを検索する際の検索語と、地域・日付・形式の条件。

詳細

RankBall

友人同士のバスケットボールの試合を今日の試合として登録し、試合後に両チームの承認を得て、戦績とティアを記録する React + Vite の MVP です。

実行

npm install
npm run dev

.env がなくても localStorage のデモモードで実行できます。

Supabase

Vite でも Vercel/Next スタイルの NEXT_PUBLIC_* 環境変数を読み取るように設定しています。

NEXT_PUBLIC_SUPABASE_URL=...
NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY=...

Supabase の永続化には、supabase/migrations を順番に適用します。Supabase 環境の設定後にリモート読み込みに失敗した場合、localStorage のデモ状態にはフォールバックせず、リモートの shell/error 状態を維持します。

Supabase CLI migration

Production DB の migration は、可能な限り Supabase CLI で適用します。

supabase --version
$env:SUPABASE_ACCESS_TOKEN="..."
$env:SUPABASE_DB_PASSWORD="..."
supabase link --project-ref olzxextphxpniwiiwwda --password $env:SUPABASE_DB_PASSWORD
supabase db push --linked --dry-run
supabase db push --linked

DATABASE_URL があれば、link なしでも適用できます。

supabase db push --db-url "$env:DATABASE_URL" --dry-run
supabase db push --db-url "$env:DATABASE_URL"

Production への適用後、schema health を確認します。

Invoke-RestMethod -Method Post -Uri "https://boxtier.kr/api/system/schema-health" -Headers @{ Authorization = "Bearer $env:CRON_SECRET" }

デプロイ前の検証は、1 つのコマンドで実行します。

npm run verify:release -- --confirm-production=olzxextphxpniwiiwwda

verify:release は production build の後、リモート Supabase/Auth に基づくバックエンド全体のシミュレーションと schema health を実行します。production ref と完全に一致する --confirm-production=<project-ref> CLI flag がない場合、API/Auth の呼び出し前に中断します。SUPABASE_SERVICE_ROLE_KEY、テスト用 Auth 環境変数、CRON_SECRET が必要です。終了コードが 0 以外の場合はデプロイしません。

シミュレーションは実行前に、環境、直接の Supabase project ref、リモート API host/ref を stderr に表示します。プロセスあたりのフロー全体の繰り返し上限は 1 回で、自動再試行はクリーンアップに失敗した場合に最大 1 回です。別プロセスを再実行する外部 runner も、呼び出し回数を 1 回に制限する必要があります。--safety-check-only はターゲットガードのみを検証し、DB/API は呼び出しません。

テスト専用の Supabase では、test URL、publishable key、service-role key をまとめて設定します。リモートの test API を使用する場合は、実際のデプロイ対象と同じ ref を --remote-project-ref=<test-ref> で追加します。直接の ref とリモート ref が異なる場合、実行しません。

リモート DB では、supabase db reset --linked、DROP TABLE、TRUNCATE、大量の DELETE を使用しないでください。

環境変数

名前場所用途
VITE_SUPABASE_URL / NEXT_PUBLIC_SUPABASE_URLブラウザー/サーバーSupabase project URL
VITE_SUPABASE_PUBLISHABLE_KEY / NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY / VITE_SUPABASE_ANON_KEYブラウザーSupabase anon/publishable key
SUPABASE_SERVICE_ROLE_KEYサーバー/スクリプト専用server action、seed、シミュレーション
VITE_ENABLE_SERVER_ACTIONSブラウザーserver action の有効化
VITE_DEMO_LOGINブラウザーlocalhost のテストログイン UI を許可
RANKBALL_SEED_REAL_TEST_AUTH / RANKBALL_SEED_AUTH_ONLYスクリプトテストアカウントを Supabase Auth user として作成し、既存の profile に紐付け
RANKBALL_TEST_PASSWORD / VITE_TEST_AUTH_PASSWORDスクリプト/ブラウザーテストアカウントの password Auth 用パスワード
RANKBALL_TEST_AUTH_EMAIL_DOMAIN / VITE_TEST_AUTH_EMAIL_DOMAINスクリプト/ブラウザーテストアカウントの email domain。デフォルト値は rankball.test
VITE_ASSET_BASE_URL / VITE_PUBLIC_ASSET_BASE_URLブラウザーリモート asset base URL
VITE_NAVER_MAP_CLIENT_ID / VITE_NAVER_MAP_NCP_KEY_IDブラウザー/サーバーのフォールバックNaver map/geocode client id
NAVER_MAP_CLIENT_SECRET / NAVER_MAP_NCP_KEY / NAVER_MAP_NCP_CLIENT_SECRETサーバー専用Naver geocode のフォールバック用 secret
DISCORD_CLIENT_ID / DISCORD_CLIENT_SECRET / DISCORD_REDIRECT_URIサーバー専用Discord OAuth
DISCORD_BOT_TOKEN / DISCORD_GUILD_ID / DISCORD_GUILD_IDSサーバー専用Discord DM worker
DISCORD_PUBLIC_KEYサーバー専用Discord interaction の署名検証
DISCORD_CHAT_BRIDGE_SECRET / DISCORD_CHAT_BRIDGE_URLbridge workerDiscord の部屋チャットを Web API に転送
DISCORD_CHAT_BRIDGE_REQUEST_TIMEOUT_MS / DISCORD_CHAT_BRIDGE_MAX_DELIVERY_ATTEMPTSbridge worker転送のタイムアウトと再試行回数。デフォルトは 10000、4
CRON_SECRETサーバー/スクリプト専用worker、メンテナンス、schema-health
SUPABASE_ACCESS_TOKENCLI 専用Supabase Management API 認証
SUPABASE_DB_PASSWORDCLI 専用supabase link、supabase db push --linked 用のリモート DB パスワード
SUPABASE_PROJECT_IDCLI/CI 専用Supabase project ref。現在の production ref:olzxextphxpniwiiwwda
DATABASE_URLCLI/サーバー専用supabase db push --db-url または Postgres への直接接続
RANKBALL_SIM_BASE_URL / RANKBALL_SIM_SECRET / RANKBALL_SIM_TIMEOUT_MS / RANKBALL_SIM_CLEANUP_TIMEOUT_MSスクリプトバックエンドシミュレーション
RANKBALL_SIM_REMOTE_PROJECT_REFスクリプトリモート test API が使用する Supabase project ref。--remote-project-ref が優先されます
RANKBALL_SIM_REPEAT / RANKBALL_SIM_MAX_RETRIESスクリプトフロー全体の繰り返し上限 1、クリーンアップの再試行上限 1

Discord 방 채팅 bridge

상시 실행 환경에서 아래 명령을 실행합니다. Gateway worker는 heartbeat ACK 누락 시 재연결하고, 가능한 세션은 resume하며, 웹 API의 timeout·429·5xx를 제한 횟수만큼 재시도합니다.

npm run discord:room-chat-bridge

운영에서는 DISCORD_CHAT_BRIDGE_SECRET을 별도로 설정합니다. CRON_SECRET fallback은 기존 배포 호환용입니다.

Vercel

Framework preset은 Vite, build command는 npm run build, output directory는 dist입니다.

コメント

MCP は初めてですか?

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

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