Skip to main content
Glama
alcylu

Nightlife Search

by alcylu

nightlife-mcp

Supabaseをバックエンドとしたナイトライフイベント検索用MCPサーバー。

クイックスタート

本番環境エンドポイント: https://api.nightlife.dev/mcp

  1. nightlife.dev で無料のAPIキーを取得します。

  2. 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_events

  • get_tonight

  • get_event_details

  • search_venues

  • get_venue_info

  • search_performers

  • get_performer_info

  • log_unmet_request

  • create_vip_booking_request

  • get_vip_booking_status

  • get_vip_table_availability

  • get_vip_table_chart

  • get_recommendations (v0.2, MCP_ENABLE_RECOMMENDATIONS=true で有効化)

  • APIキーミドルウェアを備えたストリーミング可能なHTTPエンドポイント

  • 構造化されたツール出力スキーマ (outputSchema)

  • 安定したエラーコードを持つ決定論的なツールエラーペイロード

  • /health で公開されるランタイムリクエスト/ツールメトリクス

前提条件

  • Node.js 18以上

  • SupabaseプロジェクトURL + サービスロールキー

セットアップ

cp .env.example .env
npm install

.env に環境変数を設定します:

  • SUPABASE_URL

  • SUPABASE_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キーとクォータ追跡を使用できます。

  1. Supabase SQLエディタでSQLマイグレーションを実行します:

-- copy file contents from:
-- supabase/migrations/20260219094000_mcp_api_keys.sql
  1. .env でDB認証フラグが有効になっていることを確認します:

MCP_HTTP_REQUIRE_API_KEY=true
MCP_HTTP_USE_DB_KEYS=true
MCP_HTTP_ALLOW_ENV_KEY_FALLBACK=true
  1. APIキーレコードを作成します:

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_request

  • get_vip_booking_status

  • get_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_sent

  • claim_vip_request_after_ack

  • update_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_infovip_booking_supported を確認

内部の会場予約担当者は、DB関数を介してキュータスクを要求します:

  • public.claim_next_vip_agent_task(p_agent_id text)

VIP Opsダッシュボード

内部ダッシュボードルート:

  • GET /ops/login

  • POST /ops/login

  • POST /ops/logout

  • GET /ops/vip-dashboard

内部管理APIルート (Cookieセッション保護):

  • GET /api/v1/admin/vip-bookings

  • GET /api/v1/admin/vip-bookings/:id

  • PATCH /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_venuesget_venue_info には vip_booking_supported が含まれており、クライアントはVIP予約送信を受け付ける会場を正確に表示できます。

  • vip_booking_supportedpublic.venues.vip_booking_enabled から取得されます (guest_list_enabled とは別)。

  • create_vip_booking_requestvip_booking_supported=true の会場のみを受け付けます。

  • 都市処理は public.cities (slug, タイムゾーン, サービス日の区切り) によってバックアップされています。

  • サポートされているトップレベルの都市は環境設定可能です (例: tokyosan-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-Tier

    • X-API-Key-Source

    • X-RateLimit-Daily-Limit

    • X-RateLimit-Daily-Remaining

    • X-RateLimit-Minute-Limit

    • X-RateLimit-Minute-Remaining

  • ヘルスエンドポイント:/health

  • 手動ツールテスト用デバッグページ:/debug/recommendations

  • ツールエラーは result.content[0].text 内のJSONテキストペイロードとして返されます:

    • INVALID_DATE_FILTER

    • INVALID_EVENT_ID

    • UNSUPPORTED_EVENT_ID

    • EVENT_NOT_FOUND

    • INVALID_VENUE_ID

    • VENUE_NOT_FOUND

    • INVALID_PERFORMER_ID

    • PERFORMER_NOT_FOUND

    • INVALID_BOOKING_REQUEST

    • BOOKING_REQUEST_NOT_FOUND

    • BOOKING_STATUS_UPDATE_FAILED

    • VIP_TASK_NOT_AVAILABLE

    • VIP_ALERT_UPDATE_FAILED

    • VIP_CLAIM_FAILED

    • INVALID_REQUEST

    • REQUEST_WRITE_FAILED

    • DB_QUERY_FAILED

    • INTERNAL_ERROR

貢献とCI

ワークフローとルールについては CONTRIBUTING.md を参照してください。AIエージェントは AGENTS.md を読み取ります。CLAUDE.md がアーキテクチャの信頼できる情報源です。

Install Server
A
license - permissive license
A
quality
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
1Releases (12mo)
Commit activity

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

  • A
    license
    A
    quality
    D
    maintenance
    Enables 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.
    4
    3
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    An 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.
  • A
    license
    Not graded
    quality
    D
    maintenance
    Preference-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.
    1
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables querying electronic/dance music events from 19hz.info by region, with tools to list available regions and retrieve events data.
    7
    MIT

View all related MCP servers

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.

View all MCP Connectors

Latest Blog Posts

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