Nightlife Search
nightlife-mcp
Supabaseをバックエンドとしたナイトライフイベント検索用MCPサーバー。
クイックスタート
本番環境エンドポイント: https://api.nightlife.dev/mcp
nightlife.dev で無料のAPIキーを取得します。
Claude Desktopの設定 (
claude_desktop_config.json) に追加します:
{
"mcpServers": {
"nightlife": {
"url": "https://api.nightlife.dev/mcp",
"headers": {
"x-api-key": "YOUR_API_KEY"
}
}
}
}curl、TypeScript SDK、その他のクライアントについては、CLIENT_SETUP.md を参照してください。
Related MCP server: EvHenter MCP
実装済み機能 (v0.3)
search_eventsget_tonightget_event_detailssearch_venuesget_venue_infosearch_performersget_performer_infolog_unmet_requestcreate_vip_booking_requestget_vip_booking_statusget_vip_table_availabilityget_vip_table_chartget_recommendations(v0.2,MCP_ENABLE_RECOMMENDATIONS=trueで有効化)APIキーミドルウェアを備えたストリーミング可能なHTTPエンドポイント
構造化されたツール出力スキーマ (
outputSchema)安定したエラーコードを持つ決定論的なツールエラーペイロード
/healthで公開されるランタイムリクエスト/ツールメトリクス
前提条件
Node.js 18以上
SupabaseプロジェクトURL + サービスロールキー
セットアップ
cp .env.example .env
npm install.env に環境変数を設定します:
SUPABASE_URLSUPABASE_SERVICE_ROLE_KEY
オプション:
DEFAULT_CITY(デフォルト:tokyo)MCP_TOP_LEVEL_CITIES(デフォルト例:tokyo,san-francisco; 非対応都市へのレスポンスでavailable_citiesを制御)DEFAULT_COUNTRY_CODE(デフォルト:JP)NIGHTLIFE_BASE_URL(デフォルト:https://nightlifetokyo.com)MCP_HTTP_REQUIRE_API_KEY(デフォルト:true)MCP_HTTP_USE_DB_KEYS(デフォルト:true)MCP_HTTP_ALLOW_ENV_KEY_FALLBACK(デフォルト:true)MCP_HTTP_API_KEYS(カンマ区切りのレガシーフォールバックキー)MCP_ENABLE_RECOMMENDATIONS(デフォルト:false;get_recommendationsを有効化)
DB APIキーモード (推奨)
HTTP認証では、Supabaseの永続的なAPIキーとクォータ追跡を使用できます。
Supabase SQLエディタでSQLマイグレーションを実行します:
-- copy file contents from:
-- supabase/migrations/20260219094000_mcp_api_keys.sql.envでDB認証フラグが有効になっていることを確認します:
MCP_HTTP_REQUIRE_API_KEY=true
MCP_HTTP_USE_DB_KEYS=true
MCP_HTTP_ALLOW_ENV_KEY_FALLBACK=trueAPIキーレコードを作成します:
npm run key:create -- --name claude-desktop --tier starter --daily-quota 1000 --minute-quota 60これにより、生の api_key が一度だけ表示されます。安全に保存し、MCP HTTP呼び出しで使用してください。
DB RPCが利用できない場合、MCP_HTTP_ALLOW_ENV_KEY_FALLBACK=true の場合にのみ MCP_HTTP_API_KEYS へのフォールバックが機能します。
コンシェルジュ未対応リクエストのバックログ
パブリックコンシェルジュフローは、サポートされていないユーザーの意図をSupabaseに記録できます。
マイグレーションを実行:
-- copy file contents from:
-- supabase/migrations/20260226_concierge_unmet_requests.sqlその後、利用可能なナイトライフデータから適切な回答が得られない場合に、MCPツール log_unmet_request を呼び出します。
VIP予約フェーズ1
VIPテーブル予約の送信とステータス追跡はSupabaseによってバックアップされています。
マイグレーションを実行:
-- copy file contents from:
-- supabase/migrations/20260227143000_vip_phase1_requests_and_queue.sql
-- supabase/migrations/20260228124500_add_vip_booking_enabled_to_venues.sql
-- and if already deployed before 2026-02-28:
-- supabase/migrations/20260228111000_vip_outward_language_defaults.sql
-- supabase/migrations/20260301010000_vip_table_availability_chart.sql
-- supabase/migrations/20260301114000_vip_table_chart_storage_bucket.sql
-- supabase/migrations/20260303093000_vip_dashboard_admin_edits.sqlその後、MCPツールを呼び出します:
create_vip_booking_requestget_vip_booking_statusget_vip_table_availability(会場/日付範囲ごとのテーブル空き状況を読み取り)get_vip_table_chart(日付ごとのステータスオーバーレイとオプションのlayout_image_urlを含む構造化されたテーブルチャートを読み取り)
create_vip_booking_request の会話ポリシー:
送信前に、会場の現地時間で予約日時を確認してください。
特に深夜の到着 (
00:00-05:59) については、二重日付確認の文言を使用してください。必須の確認テンプレート:
Just to confirm: you want a table for [Night Day] night ([Night Date]), arriving around [Time] on [Arrival Day], [Arrival Date] ([Timezone]). I'll submit that as [Night Day] night with [Time] arrival. Is that correct?
ユーザーが曜日なしで
2amのような時間を指定した場合:Do you mean 2:00 AM after Thursday night (Friday morning), or after Friday night (Saturday morning)?
ユーザーが曜日を変更した場合は、送信前に確認を再生成してください。
Opsティアのセッションには内部キューツールもあります:
list_vip_reservations(未処理の全予約; デフォルトステータス:submitted,in_review,confirmed)list_vip_requests_for_alerting(期限切れのアラートのみ)mark_vip_request_alert_sentclaim_vip_request_after_ackupdate_vip_booking_status(監査イベント付きでconfirmed/rejected/cancelledを設定)upsert_vip_venue_tables(会場テーブル定義 + チャート座標 + オプションのテーブルメモ + オプションのlayout_image_urlを書き込み)upsert_vip_table_availability(日付ごとのテーブルステータスを書き込み)upload_vip_table_chart_image(チャート画像をストレージにアップロードし、会場テーブルメタデータにlayout_image_urlを添付)
予約可能な会場を最初に発見するには、以下を使用します:
vip_booking_supported_only=trueを指定したsearch_venuesまたは
get_venue_infoでvip_booking_supportedを確認
内部の会場予約担当者は、DB関数を介してキュータスクを要求します:
public.claim_next_vip_agent_task(p_agent_id text)
VIP Opsダッシュボード
内部ダッシュボードルート:
GET /ops/loginPOST /ops/loginPOST /ops/logoutGET /ops/vip-dashboard
内部管理APIルート (Cookieセッション保護):
GET /api/v1/admin/vip-bookingsGET /api/v1/admin/vip-bookings/:idPATCH /api/v1/admin/vip-bookings/:id
必須の環境変数:
VIP_DASHBOARD_ADMINS(カンマ区切りのusername:passwordペア)
オプションの環境変数:
VIP_DASHBOARD_SESSION_TTL_MINUTES(デフォルト:720)VIP_DASHBOARD_SESSION_COOKIE_NAME(デフォルト:vip_dashboard_session)
実行
Stdio (ローカルデスクトップクライアント):
npm run devストリーミング可能なHTTP:
npm run dev:http本番ビルド用:
npm run build
npm start本番環境でのHTTP用:
npm run start:http認証済み本番環境のスモークチェック:
NLT_API_KEY=... npm run smoke:prod:authオプションの環境変数オーバーライド:
NLT_MCP_URL(デフォルト:https://api.nightlife.dev/mcp)NLT_REST_BASE_URL(デフォルト:https://api.nightlife.dev/api/v1)NLT_SMOKE_CITY(デフォルト:tokyo)
レコメンデーション用デバッグWeb UI:
MCP_ENABLE_RECOMMENDATIONS=true npm run dev:http
# open http://127.0.0.1:3000/debug/recommendations注意事項
日付処理は
tonight,this_weekend,YYYY-MM-DD,YYYY-MM-DD/YYYY-MM-DDをサポートしています。get_recommendationsは、都市を認識する動的なフォールバックを備えた最大10個の多様なモーダルスロットを返します。会場および出演者ツールには、今後のイベントのスナップショットが含まれます。
log_unmet_requestは、未解決のユーザー要求をpublic.concierge_unmet_requestsに書き込みます。VIPフェーズ1は、予約送信を
public.vip_booking_requestsに、ワーカーキュータスクをpublic.vip_agent_tasksに書き込みます。VIPインベントリは、テーブル定義を
public.vip_venue_tablesに、日付固有のステータスをpublic.vip_table_availabilityに書き込みます。search_venuesとget_venue_infoにはvip_booking_supportedが含まれており、クライアントはVIP予約送信を受け付ける会場を正確に表示できます。vip_booking_supportedはpublic.venues.vip_booking_enabledから取得されます (guest_list_enabledとは別)。create_vip_booking_requestはvip_booking_supported=trueの会場のみを受け付けます。都市処理は
public.cities(slug, タイムゾーン, サービス日の区切り) によってバックアップされています。サポートされているトップレベルの都市は環境設定可能です (例:
tokyoとsan-francisco)。東京はデフォルトのままにできます。Stdioトランスポート:APIキーチェックなし。
HTTPトランスポート (
/mcp):デフォルトでAPIキーが必要 (MCP_HTTP_REQUIRE_API_KEY=true)。APIキーヘッダー:
Authorization: Bearer <key>x-api-key: <key>
DBバックエンド認証がアクティブな場合、HTTPレスポンスにはキーのティア/ソースおよびレート制限ヘッダーが含まれます:
X-API-Key-TierX-API-Key-SourceX-RateLimit-Daily-LimitX-RateLimit-Daily-RemainingX-RateLimit-Minute-LimitX-RateLimit-Minute-Remaining
ヘルスエンドポイント:
/health。手動ツールテスト用デバッグページ:
/debug/recommendations。ツールエラーは
result.content[0].text内のJSONテキストペイロードとして返されます:INVALID_DATE_FILTERINVALID_EVENT_IDUNSUPPORTED_EVENT_IDEVENT_NOT_FOUNDINVALID_VENUE_IDVENUE_NOT_FOUNDINVALID_PERFORMER_IDPERFORMER_NOT_FOUNDINVALID_BOOKING_REQUESTBOOKING_REQUEST_NOT_FOUNDBOOKING_STATUS_UPDATE_FAILEDVIP_TASK_NOT_AVAILABLEVIP_ALERT_UPDATE_FAILEDVIP_CLAIM_FAILEDINVALID_REQUESTREQUEST_WRITE_FAILEDDB_QUERY_FAILEDINTERNAL_ERROR
貢献とCI
ワークフローとルールについては CONTRIBUTING.md を参照してください。AIエージェントは AGENTS.md を読み取ります。CLAUDE.md がアーキテクチャの信頼できる情報源です。
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseAqualityDmaintenanceEnables users to search for events, performers, and venues through the SeatGeek API. Provides event recommendations, detailed venue seating information, and performer discovery capabilities for ticketed entertainment events.43MIT
- FlicenseNot gradedqualityDmaintenanceAn event aggregation platform that enables users to search, retrieve, and create event data using a Sanity.io backend. It provides specialized tools for managing event details, locations, categories, and venues through the Model Context Protocol.
- AlicenseNot gradedqualityDmaintenancePreference-aware events discovery MCP server that aggregates events, restaurants, and cultural activities across multiple sources and re-ranks them against your personal taste profile to surface things you'd actually want to do.1MIT
- AlicenseNot gradedqualityCmaintenanceEnables querying electronic/dance music events from 19hz.info by region, with tools to list available regions and retrieve events data.7MIT
Related MCP Connectors
Live-concert discovery: 44,000+ upcoming concerts worldwide by city, artist, genre or festival.
Discover festivals worldwide by location, date, and genre. Compare options with key details like d…
Search and book theatre, attractions, tours across 681 cities. 13,090+ products.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/alcylu/nightlife-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server