Dizko Events MCP
OfficialDizko Events CLI и MCP
Быстрый старт
Рекомендуется: добавьте хостируемый коннектор. Он работает на наших серверах, поэтому никогда не получает доступ к вашему компьютеру (никаких пугающих предупреждений о локальной установке), не требует установки и авторизации:
https://mcp.dizko.app/mcpВставьте это в Настройки → Коннекторы → Добавить пользовательский коннектор вашего клиента (claude.ai, Claude Desktop, режим разработчика ChatGPT, Cursor). Пошаговые инструкции для каждого клиента: https://mcp.dizko.app/install
Для Claude Code:
claude mcp add --transport http dizko-events https://mcp.dizko.app/mcpПродвинутый уровень: запустите сервер локально (только если вы не можете использовать хостируемый коннектор, например, бесплатный план Claude или клиент, который поддерживает только локальные серверы). Локальный сервер работает от вашего имени, поэтому Claude Desktop предупреждает, что он «может получить доступ ко всему на вашем компьютере». Это присуще любому локальному MCP-расширению, а не тому, что этот пакет запрашивает лишнее. Хостируемый коннектор выше позволяет этого избежать.
npx -y dizko-events install claude-desktop # writes the local config
# or the raw stdio snippet for any client:
{ "command": "npx", "args": ["-y", "dizko-events", "mcp"] }Однокликовый пакет для Claude Desktop: npm run build:mcpb создаёт dist/dizko-events-<version>.mcpb.
Агентные фреймворки (Hermes, OpenClaw, LangGraph, OpenAI Agents SDK, пользовательские циклы)
Агенты на фреймворках не имеют интерфейса «Коннекторы», поэтому они интегрируются программно. Четыре пути, начиная с самого простого:
Удалённый MCP через HTTP: укажите MCP-клиенту фреймворка на хостируемую конечную точку
https://mcp.dizko.app/mcp(streamable-http, без авторизации). Работает с официальными MCP SDK, OpenAI Agents SDK, адаптерами MCP для LangGraph/LangChain, Pydantic AI и т.д.stdio MCP: запустите
npx -y dizko-events mcpкак подпроцесс и общайтесь по MCP через stdio.Чистый HTTP JSON-RPC: библиотека MCP не нужна; отправляйте POST на
/mcp:curl -s https://mcp.dizko.app/mcp \ -H 'content-type: application/json' \ -H 'accept: application/json, text/event-stream' \ -H 'mcp-method: tools/call' \ -H 'mcp-name: search_events' \ -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"search_events","arguments":{"city":"los angeles","when":"this week"},"_meta":{"io.modelcontextprotocol/protocolVersion":"2026-07-28","io.modelcontextprotocol/clientCapabilities":{}}}}'Блок
_meta— это то, что делает запрос запросом2026-07-28: ревизия не имеет состояния, поэтому нет рукопожатияinitializeи нет сессии — каждый запрос несёт собственную версию протокола и возможности клиента. Вызовитеserver/discover, чтобы узнать, какие ревизии поддерживает конечная точка. Клиенты на2025-11-25и более ранних версиях продолжают работать без изменений; опустите_meta, и сервер ответит им через путь эпохи 2025 года.Встраиваемая библиотека: встраивайте инструменты напрямую (без слоя MCP). Пакет предоставляет стабильный API:
import { tools, callTool, searchEvents } from "dizko-events"; // Hand `tools` (JSON Schemas) to your model as function definitions, then: const result = await callTool("search_events", { city: "berlin", when: "weekend" });
Автономная покупка билетов (точка интеграции Hermes / OpenClaw)
По умолчанию инструменты для билетов возвращают передачу на оформление заказа (ссылку). Чтобы включить ограниченную автономную покупку, укажите адаптер ticketPurchaseProvider. Его можно внедрить только при встраивании пакета или самостоятельном хостинге сервера — хостируемая конечная точка работает в нашем процессе и не может принять ваш платёжный адаптер.
import { createHttpMcpServer, callTool } from "dizko-events";
const hermesAdapter = {
canPurchase: (event, summary) => true,
purchase: async ({ quote, confirmation_text, delivery_email, add_to_calendar }) => {
// ... perform the bounded purchase, return { status, order_id, receipt_url }
}
};
// Self-host with the adapter wired in:
createHttpMcpServer({ ticketPurchaseProvider: hermesAdapter }).listen(8787);
// ...or call tools in-process with it:
await callTool("purchase_ticket_order", input, { ticketPurchaseProvider: hermesAdapter });purchase_ticket_order по-прежнему требует зафиксированную котировку от quote_ticket_order и явное письменное подтверждение перед вызовом адаптера. См. get_ticket_purchase_policy.
Этот пакет предоставляет агентам и людям доступ к живой базе событий Dizko:
dizko-events: CLI для быстрого поиска, ранжированных рекомендаций, планов на вечер, установки клиента и диагностики.dizko-events mcp(алиасeventchat-events-mcp): stdio MCP-сервер для локальных клиентов разработчиков.dizko-events serve(алиасeventchat-events-http): HTTP MCP-сервер для хостируемых коннекторов/приложений.Агентные инструменты для работы с билетами: предложения билетов, зафиксированные котировки, письменные подтверждения, передача на оформление заказа и будущие адаптеры покупки Hermes/OpenClaw/Dizko.
Почему это лучше обычного чата
Обычный чат может описать вероятные события, но не знает достоверно текущий инвентарь. Этот инструмент даёт агенту:
Живые структурированные результаты из API
/eventsкомпании Dizko.Детерминированные фильтры по городу, дате, жанру, атмосфере, площадке, цене, посещаемости, району и артисту.
Объяснимое ранжирование, чтобы рекомендации содержали причины, а не непрозрачные догадки о вкусах.
Ссылки на билеты и ссылки на события Dizko для проверки.
Инструмент планирования, который возвращает основные варианты плюс запасные в компактном машиночитаемом виде.
Обучение предпочтениям на основе согласия: вопросы при первом знакомстве, сохранённые профили вкусов, обратная связь после события, сигналы из заметок и изученные сигналы ранжирования.
Негативная обратная связь становится изученными сигналами избегания, поэтому будущие рекомендации могут уводить от нелюбимых жанров, атмосфер, типов событий или площадок.
Средства безопасности покупки билетов: агенты могут формировать котировки и подготавливать заказы билетов, но автономная покупка требует зафиксированной котировки, явного письменного подтверждения и интегрированного поставщика покупки.
Агент по-прежнему может писать разговорным языком, но его факты о событиях берутся из инструмента.
CLI
Запуск без установки:
npm exec --yes --package dizko-events -- dizko-events search --city "Los Angeles" --when week --limit 5
npm exec --yes --package dizko-events -- dizko-events recommend --city "New York" --when tonight --vibe underground,intimate --max-price 30Или установите пакет для разработчиков раннего доступа:
npm install -g dizko-events
eventchat-events search --city berlin --when weekend --genres techno --limit 5Из этого репозитория:
node ./bin/eventchat-events.js search --city berlin --when weekend --genres techno --limit 5
node ./bin/eventchat-events.js recommend --city new-york --when tonight --vibe underground,intimate --max-price 30
node ./bin/eventchat-events.js plan --city london --when weekend --event-types party --avoid mainstream
node ./bin/eventchat-events.js cities
node ./bin/eventchat-events.js doctordoctor проверяет разрешение DNS, конечную точку здоровья API, хостируемую конечную точку MCP (health, metadata, tools/list) и один небольшой живой поиск, сообщая о первопричине любого сбоя. Запускайте его первым при любом сбое поиска.
Окружение (все поверхности — CLI, stdio MCP, хостируемый MCP, смоук-тест и монитор — разрешают конечные точки через один и тот же src/config.js):
DIZKO_API_BASE_URL=https://api.dizko.app
DIZKO_WEB_BASE_URL=https://www.dizko.app
DIZKO_MCP_URL=https://mcp.dizko.app/mcp
DIZKO_API_TIMEOUT_MS=8000
DIZKO_API_RETRIES=2 # transient network/5xx failures retry with backoff + jitter
DIZKO_API_RETRY_BASE_DELAY_MS=250
EVENTCHAT_MCP_ALLOWED_ORIGINS=https://chatgpt.com,https://chat.openai.com,https://claude.aiВременные сетевые сбои (EAI_AGAIN, ETIMEDOUT, ECONNRESET, ENOTFOUND, временные 5xx) автоматически повторяются и сообщаются как retryable: true с первопричиной, кодом, именем хоста и целевым URL, если они сохраняются.
MCP для локальных клиентов разработчиков
Запустите stdio MCP-сервер из npm:
npm exec --yes --package dizko-events -- eventchat-events-mcpИли из этого репозитория:
node ./bin/eventchat-events-mcp.jsПример конфигурации MCP-клиента:
{
"mcpServers": {
"eventchat-events": {
"command": "node",
"args": ["/absolute/path/to/dizko-mcp/bin/eventchat-events-mcp.js"],
"env": {
"DIZKO_API_BASE_URL": "https://api.dizko.app"
}
}
}
}Пример конфигурации MCP-клиента с использованием npm:
{
"mcpServers": {
"dizko-events": {
"command": "npm",
"args": ["exec", "--yes", "--package", "dizko-events", "--", "eventchat-events-mcp"],
"env": {
"DIZKO_API_BASE_URL": "https://api.dizko.app"
}
}
}
}Инструменты:
get_preference_onboarding: возвращает вопросы, которые ассистент должен задать перед сохранением предпочтений.create_event_preference_profile: создаёт непрозрачный профиль сохранённых предпочтений после согласия и возвращает идентификатор профиля и приватный секрет профиля, который ассистент может запомнить.save_event_preferences: сохраняет предпочтения пользователя только после явного согласия и доступа к секрету профиля.get_event_preferences: читает сохранённые и изученные предпочтения с доступом к секрету профиля.delete_event_preferences: удаляет сохранённые предпочтения и обратную связь профиля с доступом к секрету профиля и явным подтверждением пользователя.record_event_feedback: сохраняет сигналы после события (понравилось/не понравилось), оценки или заметки и обновляет изученные сигналы с доступом к секрету профиля. Заметки о музыке, публике, цене, времени или площадке могут стать изученными сигналами предпочтений или избегания. Пустая обратная связь отклоняется.get_event_feedback_prompt: возвращает короткие уточняющие вопросы после события для конкретного события перед сохранением обратной связи.get_event_search_followups: возвращает только отсутствующие вопросы текущего контекста перед поиском на сегодня/неделю/выходные.search_events: живой структурированный поиск событий.recommend_events: живой поиск плюс объяснимое ранжирование по вкусам.recommend_events_for_user: живые рекомендации с использованием сохранённых предпочтений и изученной обратной связи с доступом к секрету профиля.plan_night: компактный план с запасными вариантами.get_daily_roundup: однодневный дайджест по городу: ранжированные лучшие выборы плюс разделы вечеринок, живой музыки, искусства, комедии, разговоров и еды. Создан для повторяющихся утренних брифингов; необязательный доступ к секрету профиля персонализирует ранжирование с учётом сохранённых, изученных и ежедневных предпочтений.get_artist_events: предстоящие шоу, сгруппированные по артистам для указанных диджеев, исполнителей или комиков. С доступом к секрету профиля и без указания артистов отслеживает сохранённый списокfeaturingпрофиля.get_city_pulse: агрегированный показатель активности города на ближайшие дни: самые загруженные ночи, лучшие площадки, смешение жанров и главные события, каждая статистика с подсчётом подтверждений. Только публичный инвентарь.get_event: поиск деталей по идентификатору события.get_ticket_purchase_policy: объясняет текущие режимы покупки, жёсткие правила безопасности и требования к поставщику.get_ticket_offers: возвращает варианты билетов на событие, включая URL оформления заказа и информацию о поддержке автономной покупки.quote_ticket_order: создаёт зафиксированную котировку с количеством, максимальной суммой, типом билета, сроком действия и условиями остановки.purchase_ticket_order: принимает явное письменное подтверждение и либо выполняет покупку через интегрированного поставщика, либо возвращает требуемую внешнюю передачу на оформление заказа.
Примечание об аннотациях: инструменты поиска и рекомендаций читают живые данные событий, а инструменты предпочтений записывают только приватную память коннектора, защищённую profile_id и profile_secret. Только purchase_ticket_order помечен как разрушительный/открытый мир, поскольку он является ограниченной точкой действия для покупки билетов или передачи на оформление заказа.
Примечание о билетах: purchase_ticket_order намеренно помечен как разрушительный и открытый мир, потому что это будущая граница действий для автономной покупки билетов. В сборке по умолчанию npm/хостируемой сборке сторонние ссылки на билеты возвращают requires_external_checkout; инструмент не просматривает страницы оформления заказа, не обходит CAPTCHA и не списывает средства с карт. Настоящая автономная покупка требует адаптера поставщика, такого как Hermes, OpenClaw, Dizko Checkout, партнёрского API продажи билетов или одобренного процесса делегированных платежей.
Примечание об авторизации: публичный хостируемый коннектор отправляет запросы как noauth для базового поиска событий. Инструменты сохранённых предпочтений, обратной связи, персонализированных рекомендаций, чтения, обновления и удаления по-прежнему требуют непрозрачный profile_id пользователя и приватный profile_secret. Описания инструментов включают securitySchemes: [{ "type": "noauth" }] и отражают это в _meta.securitySchemes для совместимости с ChatGPT.
Примечание о безопасности удаления: delete_event_preferences также требует confirm_delete: true, который следует отправлять только после того, как пользователь подтвердит, что хочет удалить предпочтения коннектора Dizko и историю обратной связи.
Примечание о хранении: сохранённые профили предпочтений автоматически удаляются по истечении настроенного окна бездействия, по умолчанию 730 дней, что соответствует опубликованной политике хранения в 24 месяца.
Хостируемый MCP для ChatGPT и Claude
Для обычных пользователей публикуйте хостируемую конечную точку MCP, а не просите их запускать локальную команду.
PORT=8787 node ./bin/eventchat-events-http.jsКонечные точки:
POST /mcp: JSON-RPC MCP конечная точка.GET /health: проверка здоровья развёртывания.GET /: базовые метаданные сервиса.GET /privacy-policy.html: публичная политика конфиденциальности для сохранённых предпочтений, обратной связи, хранения и удаления.GET /support.html: публичная страница поддержки, удаления и контактов по безопасности.GET /terms.html: публичные условия коннектора и страница допустимого использования.GET /user-guide.html: публичное руководство для обычных пользователей с подсказками, памятью предпочтений, обратной связью и поведением при удалении.GET /.well-known/security.txt: контактные метаданные для сообщения об уязвимостях.GET /logo-512.png: логотип коннектора 512px для метаданных при подаче заявки.
Текущая развёрнутая конечная точка:
https://mcp.dizko.app/mcpЧтобы стать приложением/плагином ChatGPT:
Разверните этот HTTP-сервер на публичном HTTPS-домене.
Протестируйте его в режиме разработчика ChatGPT, создав коннектор с этим URL.
Проверьте вызовы инструментов в вебе и на мобильных устройствах.
Отправьте приложение через панель управления OpenAI с публичным URL MCP, URL политики конфиденциальности/поддержки, логотипом, скриншотами, тестовыми подсказками и описаниями инструментов.
Пользователи Claude могут добавить тот же публичный URL MCP в качестве пользовательского коннектора там, где их тариф/рабочее пространство поддерживает удалённый MCP.
См. plugin-submission.md и submission-fields.json для рабочего текста заявки.
См. OPENAI_SUBMISSION_PACKET.md для финального пакета передачи в панель управления.
См. SCREENSHOT_CHECKLIST.md для точных подсказок и имён файлов скриншотов в режиме разработчика ChatGPT.
См. SUBMISSION_AUDIT.md для сопоставления требований и доказательств, а также оставшихся внешних этапов проверки.
См. USER_GUIDE.md для подсказок обычных пользователей, поведения памяти предпочтений и ссылок на поддержку/конфиденциальность.
См. DEPLOYMENT.md для шагов по Railway, Docker, пользовательскому домену и проверке.
См. OPERATIONS.md для проверок здоровья, журналов, отката, обработки данных предпочтений и триггеров повторной подачи.
См. golden-prompts.md для прямых, косвенных и негативных тестов подсказок для обнаружения коннекторов и маршрутизации инструментов.
См. SECURITY.md для сообщения об уязвимостях и операционных мер защиты.
Живой смоук-тест:
npm run monitor:live
npm run smoke:livemonitor:live доступен только для чтения и подходит для проверок аптайма. smoke:live также выполняет создание и удаление временного профиля предпочтений.
Доказательства подачи:
npm run verify:submission
npm run verify:submission:write
npm run verify:submission:bundle
npm run verify:submission:fields
npm run submission:status
npm run review:demo
npm run preflight:submissionКоманда bundle сохраняет submission-evidence/latest.json и submission-evidence/latest-summary.md для подготовки к проверке дашборда, не допуская попадания сгенерированных свидетельств в git. Свидетельства включают проверенную конечную точку, текущий идентификатор деплоя Railway, дайджест образа, проверки публичных страниц, метаданные инструментов, живой поиск и поток памяти предпочтений.
Команда fields проверяет submission-fields.json — стабильный артефакт копии дашборда — на соответствие последним живым свидетельствам, включая метаданные развертывания.
Команда preflight запускает локальные тесты, живое smoke-тестирование, генерацию живых свидетельств для подачи и проверку полей дашборда за один проход.
Команда status дает окончательное решение go/no-go для подачи в дашборд OpenAI, указывает конечную точку для подачи и отделяет нерешенный статус пользовательского домена от готовности размещенной конечной точки.
Команда review-demo записывает очищенную стенограмму submission-evidence/review-demo.md из живых вызовов MCP для подготовки промптов/ответов дашборда.
Утилита для обработки запросов на удаление:
npm run preferences:delete -- --profile-id upg_... --profile-secret ups_... --preferences-path /data/preferences.jsonЭто для запросов на удаление, обрабатываемых службой поддержки, когда пользователь не может вызвать delete_event_preferences через своего MCP-клиента.
Процесс персонализации:
Пользователь просит персонализированную помощь с мероприятиями.
Ассистент вызывает
get_preference_onboardingи спрашивает, какие события, жанры, атмосферу, бюджет и места пользователь обычно предпочитает и чего избегает.Ассистент спрашивает, может ли Dizko сохранять эти предпочтения.
Если да и профиля еще нет, ассистент вызывает
create_event_preference_profileи конфиденциально запоминает возвращенныеprofile_idиprofile_secret.Ответ о создании также содержит
access_instructions— предназначенную для пользователя карточку доступа для клиентов, которые не могут сохранять состояние коннектора между сессиями.Если профиль уже существует, ассистент вызывает
save_event_preferencesсprofile_idиprofile_secret.Для поисков «сегодня вечером», «на неделю», «на выходные» ассистент вызывает
get_event_search_followups, задает короткие вопросы о текущем контексте, а затем вызываетrecommend_events_for_user.Предпочтения могут включать
day_filters— правила по дням недели, например, техно по пятницам, но спокойно по воскресеньям. Поля-массивы дополняют общие предпочтения, аmax_price/free/nightlifeпереопределяют их, но только в этот день недели: поиски по одному дню (сегодня вечером, завтра, конкретная дата) и ежедневные сводки автоматически применяют соответствующий день.Для ежедневного дайджеста («что происходит сегодня?» — запланированная утренняя сводка) ассистент вызывает
get_daily_roundupс городом и учетными данными профиля и отображает главные подборки с последующими разделами категорий.После события ассистент вызывает
get_event_feedback_prompt, спрашивает, пошел ли пользователь и понравилось ли ему, а затем вызываетrecord_event_feedbackтолько после того, как пользователь сообщит «понравилось/не понравилось», оценку или заметки.
Процесс покупки билетов:
Пользователь просит купить или забронировать билеты на мероприятие.
Ассистент вызывает
get_ticket_offersс идентификатором мероприятия.Ассистент объясняет, поддерживает ли предложение автономную покупку или только внешнее оформление.
Ассистент вызывает
quote_ticket_orderс количеством, типом билета, максимальной суммой, валютой и ограничениями по возврату.Ассистент запрашивает явное письменное подтверждение, например:
Yes, buy 2 ticket(s) for Ostbahnhof XL, max total USD240. Stop if price, date, venue, ticket type, quantity, or refund terms change.Ассистент вызывает
purchase_ticket_orderтолько после этого подтверждения.Если в предложении используется
external_checkout, инструмент возвращаетrequires_external_checkoutи URL для внешнего оформления. Ассистент не должен утверждать, что он купил билет.Если настроен Hermes, OpenClaw, Dizko Checkout или другой интегрированный провайдер, провайдер может выполнить ограниченную покупку и вернуть статус заказа/квитанции/доставки билетов.
Контракт адаптера провайдера:
{
canPurchase(event, summary) {
return true;
},
async purchase({ quote, confirmation_text, user_payment_profile_id, idempotency_key }) {
return {
purchased: true,
status: "purchased",
order_id: "...",
receipt_url: "...",
ticket_delivery_status: "pending_delivery",
provider_response: {}
};
}
}Примечания по распространению
Публичный пользовательский интерфейс ChatGPT — это размещенная конечная точка MCP плюс подача приложения в OpenAI. Пакет npm — это путь распространения для разработчиков: локальные агенты, MCP-клиенты в стиле Claude Desktop, конфигурации Cursor и Windsurf, а также технические тестировщики, которые могут запустить команду. Исходный код открыт для просмотра и отправки сообщений об ошибках. Он остается помеченным как UNLICENSED, поэтому публикация не предоставляет лицензию на повторное использование.
Перед публикацией новой версии npm:
npm test
npm pack --dry-run --json
npm publish --access publicThis server cannot be installed
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 Connectors
MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.
Cloud-hosted MCP server for durable AI memory
Hosted AgentLux MCP server for marketplace, identity, creator, services, and social flows.
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/Dizko-Labs/dizko-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server