Nightlife Search
nightlife-mcp
MCP-сервер для поиска событий ночной жизни на базе Supabase.
Быстрый старт
Продакшн-эндпоинт: https://api.nightlife.dev/mcp
Получите бесплатный API-ключ на nightlife.dev
Добавьте его в конфигурацию 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)Потоковый HTTP-эндпоинт с middleware для API-ключа
Структурированные схемы вывода инструментов (
outputSchema)Детерминированные полезные нагрузки ошибок инструментов со стабильными кодами ошибок
Метрики запросов/инструментов во время выполнения доступны по адресу
/health
Предварительные требования
Node.js 18+
URL проекта Supabase + ключ service role
Настройка
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)
Режим API-ключей БД (Рекомендуется)
HTTP-аутентификация может использовать постоянные API-ключи из Supabase плюс отслеживание квот.
Выполните SQL-миграцию в редакторе SQL Supabase:
-- 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Создайте запись API-ключа:
npm run key:create -- --name claude-desktop --tier starter --daily-quota 1000 --minute-quota 60Это один раз выведет необработанный api_key. Сохраните его в безопасности и используйте в HTTP-вызовах MCP.
Если DB RPC недоступен, резервный вариант MCP_HTTP_API_KEYS работает только при MCP_HTTP_ALLOW_ENV_KEY_FALLBACK=true.
Журнал невыполненных запросов консьержа
Публичные потоки консьержа могут записывать неподдерживаемые намерения пользователей в 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к метаданным столов заведения)
Чтобы сначала найти заведения, доступные для бронирования, используйте:
search_venuesсvip_booking_supported_only=trueили
get_venue_infoи проверьтеvip_booking_supported
Для внутренних работников по бронированию заведений, забирайте задачи из очереди через функцию БД:
public.claim_next_vip_agent_task(p_agent_id text)
VIP Ops Dashboard
Маршруты внутренней панели управления:
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)
Отладочный веб-интерфейс для рекомендаций:
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>
HTTP-ответы включают уровень/источник ключа и заголовки ограничения скорости, когда активна аутентификация через БД:
X-API-Key-TierX-API-Key-SourceX-RateLimit-Daily-LimitX-RateLimit-Daily-RemainingX-RateLimit-Minute-LimitX-RateLimit-Minute-Remaining
Эндпоинт состояния:
/health.Страница отладки для ручного тестирования инструментов:
/debug/recommendations.Ошибки инструментов возвращаются как JSON-текстовые полезные нагрузки в
result.content[0].text: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