AI Decision System
Replayable, offline-verifiable records for AI-assisted go/no-go decisions: experiment promotions, typed model answers and human-approved actions.
翻譯準備中
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證The first nightlife discovery MCP server. Search events, venues, and performers in Tokyo and beyond.
翻譯準備中
取自儲存庫 README
正在載入完整 README。 以下為已儲存的摘錄。
MCP server for nightlife event discovery backed by Supabase.
1. Get a free API key at nightlife.dev
2. Add to Claude Desktop config (claude_desktop_config.json):
For curl, TypeScript SDK, and other clients, see CLIENT_SETUP.md.檢視完整 README ↗MCP server for nightlife event discovery backed by Supabase.
Production endpoint: https://api.nightlife.dev/mcp
claude_desktop_config.json):{
"mcpServers": {
"nightlife": {
"url": "https://api.nightlife.dev/mcp",
"headers": {
"x-api-key": "YOUR_API_KEY"
}
}
}
}
For curl, TypeScript SDK, and other clients, see CLIENT_SETUP.md.
search_eventsget_tonightget_event_detailssearch_venuesget_venue_infosearch_performersget_performer_infolist_citieslist_genreslist_areaslog_unmet_requestcreate_vip_booking_requestget_vip_booking_statuscancel_vip_booking_requestget_vip_pricing (internal ops sessions only)submit_to_guest_listget_guest_list_entry_statusget_recommendations (v0.2, behind MCP_ENABLE_RECOMMENDATIONS=true)outputSchema)/healthcp .env.example .env
npm install
Set env vars in .env:
SUPABASE_URLSUPABASE_SERVICE_ROLE_KEYOptional:
DEFAULT_CITY (default: tokyo)MCP_TOP_LEVEL_CITIES (default example: tokyo,san-francisco; controls available_cities in unsupported-city responses)DEFAULT_COUNTRY_CODE (default: JP)NIGHTLIFE_BASE_URL (default: https://nightlifetokyo.com)MCP_HTTP_REQUIRE_API_KEY (default: true)MCP_HTTP_USE_DB_KEYS (default: true)MCP_HTTP_ALLOW_ENV_KEY_FALLBACK (default: true)MCP_HTTP_API_KEYS (comma-separated legacy fallback keys)MCP_ENABLE_RECOMMENDATIONS (default: false; enables get_recommendations)HTTP authentication can use persistent API keys from Supabase plus quota tracking.
-- copy file contents from:
-- supabase/migrations/20260219094000_mcp_api_keys.sql
.env:MCP_HTTP_REQUIRE_API_KEY=true
MCP_HTTP_USE_DB_KEYS=true
MCP_HTTP_ALLOW_ENV_KEY_FALLBACK=true
npm run key:create -- --name claude-desktop --tier starter --daily-quota 1000 --minute-quota 60
This prints the raw api_key once. Save it securely and use it in MCP HTTP calls.
If the DB RPC is unavailable, fallback to MCP_HTTP_API_KEYS works only when MCP_HTTP_ALLOW_ENV_KEY_FALLBACK=true.
Public concierge flows can log unsupported user intents to Supabase.
Run migration:
-- copy file contents from:
-- supabase/migrations/20260226_concierge_unmet_requests.sql
Then call MCP tool log_unmet_request when no good answer exists from available nightlife data.
VIP table booking submission and status tracking are backed by Supabase.
Run migration:
-- 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
Then call MCP tools:
create_vip_booking_requestget_vip_booking_statuscancel_vip_booking_requestget_vip_pricing (ops only: venue/date pricing, open status, zones, and layout image)Conversation policy for 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 without a day, ask:
Do you mean 2:00 AM after Thursday night (Friday morning), or after Friday night (Saturday morning)?Ops-tier sessions also have internal queue tools:
list_vip_reservations (all outstanding reservations; default statuses: submitted, in_review, confirmed)list_vip_requests_for_alerting (due alerts only)mark_vip_request_alert_sentclaim_vip_request_after_ackupdate_vip_booking_status (set confirmed/rejected/cancelled with audit event)upsert_vip_venue_tables (write venue table definitions + chart coordinates + optional table notes + optional layout_image_url)upsert_vip_table_availability (write per-date table statuses)upload_vip_table_chart_image (upload chart image to storage and attach layout_image_url to venue table metadata)To discover bookable venues first, use:
search_venues with vip_booking_supported_only=trueget_venue_info and check vip_booking_supportedFor internal venue-booking workers, claim queue tasks via DB function:
public.claim_next_vip_agent_task(p_agent_id text)Internal dashboard routes:
GET /ops/loginPOST /ops/loginPOST /ops/logoutGET /ops/vip-dashboardInternal admin API routes (cookie-session protected):
GET /api/v1/admin/vip-bookingsGET /api/v1/admin/vip-bookings/:idPATCH /api/v1/admin/vip-bookings/:idRequired env vars:
VIP_DASHBOARD_ADMINS (comma-separated username:password pairs)Optional env vars:
VIP_DASHBOARD_SESSION_TTL_MINUTES (default: 720)VIP_DASHBOARD_SESSION_COOKIE_NAME (default: vip_dashboard_session)Stdio (local desktop clients):
npm run dev
Streamable HTTP:
npm run dev:http
For production build:
npm run build
npm start
For HTTP in production:
npm run start:http
Authenticated production smoke check:
NLT_API_KEY=... npm run smoke:prod:auth
Optional env overrides:
NLT_MCP_URL (default: https://api.nightlife.dev/mcp)NLT_REST_BASE_URL (default: https://api.nightlife.dev/api/v1)NLT_SMOKE_CITY (default: tokyo)Debug web UI for recommendations:
MCP_ENABLE_RECOMMENDATIONS=true npm run dev:http
# open http://127.0.0.1:3000/debug/recommendations
tonight, this_weekend, YYYY-MM-DD, and YYYY-MM-DD/YYYY-MM-DD.get_recommendations returns up to 10 diverse modal slots with dynamic city-aware fallback.log_unmet_request writes unresolved user asks to public.concierge_unmet_requests.public.vip_booking_requests and worker queue tasks to public.vip_agent_tasks.public.vip_venue_tables and date-specific statuses to public.vip_table_availability.search_venues and get_venue_info include vip_booking_supported so clients can show exactly which venues accept VIP booking submissions.vip_booking_supported is sourced from public.venues.vip_booking_enabled (separate from guest_list_enabled).create_vip_booking_request only accepts venues where vip_booking_supported=true.public.cities (slug, timezone, and service-day cutoff).tokyo and san-francisco) while Tokyo can remain the default./mcp): API key required by default (MCP_HTTP_REQUIRE_API_KEY=true).Authorization: Bearer <key>x-api-key: <key>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:
See CONTRIBUTING.md for the workflow and rules. AI agents read AGENTS.md. CLAUDE.md is the architecture source of truth.
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