Skip to main content
Glama
Dizko-Labs

Dizko Events MCP

Official
by Dizko-Labs

Dizko Events CLI y MCP

Inicio rápido

Recomendado: añade el conector alojado. Se ejecuta en nuestros servidores, por lo que nunca accede a tu ordenador (sin la temida advertencia de instalación local), no requiere instalación ni autenticación:

https://mcp.dizko.app/mcp

Pégalo en Ajustes → Conectores → Añadir conector personalizado de tu cliente (claude.ai, Claude Desktop, modo desarrollador de ChatGPT, Cursor). Instrucciones paso a paso para cada cliente: https://mcp.dizko.app/install

Para Claude Code:

claude mcp add --transport http dizko-events https://mcp.dizko.app/mcp

Avanzado: ejecuta el servidor localmente (solo si no puedes usar el conector alojado, p. ej. un plan gratuito de Claude o un cliente que solo admita servidores locales). Un servidor local se ejecuta con tus permisos, por lo que Claude Desktop advierte que "puede acceder a todo en tu ordenador". Esto es inherente a cualquier extensión MCP local, no es algo que este paquete solicite de más. El conector alojado de arriba lo evita.

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"] }

Bundle de un clic para Claude Desktop: npm run build:mcpb genera dist/dizko-events-<version>.mcpb.

Frameworks de agentes (Hermes, OpenClaw, LangGraph, OpenAI Agents SDK, loops personalizados)

Los agentes de frameworks no tienen una interfaz de "Connectors", por lo que se integran programáticamente. Cuatro vías, de la más simple a la más compleja:

  1. MCP remoto por HTTP: apunta el cliente MCP del framework al endpoint alojado https://mcp.dizko.app/mcp (streamable-http, sin autenticación). Funciona con los SDK oficiales de MCP, el SDK de OpenAI Agents, los adaptadores MCP de LangGraph/LangChain, Pydantic AI, etc.

  2. stdio MCP: lanza npx -y dizko-events mcp como subproceso y habla MCP por stdio.

  3. HTTP JSON-RPC puro: no se necesita librería MCP; haz POST a /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":{}}}}'

    El bloque _meta es lo que hace que esta sea una solicitud 2026-07-28: la revisión no tiene estado, por lo que no hay handshake initialize ni sesión: cada solicitud lleva su propia versión de protocolo y capacidades de cliente. Llama a server/discover para ver qué revisiones habla el endpoint. Los clientes en 2025-11-25 y anteriores siguen funcionando sin cambios; omite _meta y el servidor les responde por la ruta de la era 2025.

  4. Librería en proceso: integra las herramientas directamente (sin capa MCP). El paquete expone una API estable:

    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" });

Compra autónoma de entradas (el punto de integración con Hermes / OpenClaw)

Por defecto, las herramientas de entradas devuelven un traspaso de pago (un enlace). Para habilitar la compra autónoma acotada, proporciona un adaptador ticketPurchaseProvider. Esto solo es inyectable cuando integras el paquete o autoalojas el servidor: el endpoint alojado se ejecuta en nuestro proceso y no puede aceptar tu adaptador de pago.

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 sigue requiriendo un presupuesto bloqueado de quote_ticket_order y una confirmación escrita explícita antes de invocar el adaptador. Consulta get_ticket_purchase_policy.


Este paquete expone el inventario de eventos en vivo de Dizko a agentes y humanos:

  • dizko-events: un CLI para búsquedas rápidas, recomendaciones clasificadas, planes nocturnos, instalación en el cliente y diagnósticos.

  • dizko-events mcp (alias eventchat-events-mcp): un servidor MCP stdio para clientes desarrolladores locales.

  • dizko-events serve (alias eventchat-events-http): un servidor MCP HTTP para conectores/aplicaciones alojados.

  • Herramientas de entradas agénticas para ofertas de entradas, presupuestos bloqueados, confirmación escrita, traspaso de pago y futuros adaptadores de compra de Hermes/OpenClaw/Dizko.

Por qué esto supera al chat normal

El chat general puede describir eventos probables, pero no conoce de forma fiable el inventario actual. Esta herramienta proporciona a un agente:

  • Resultados estructurados en vivo de la API /events de Dizko.

  • Filtros deterministas por ciudad, fecha, género, ambiente, recinto, precio, asistencia, barrio y artista.

  • Clasificación explicable para que las recomendaciones incluyan razones en lugar de conjeturas opacas sobre gustos.

  • Enlaces de entradas y enlaces de eventos de Dizko para verificación.

  • Una herramienta de planificación que devuelve opciones principales y alternativas en un formato compacto legible por máquina.

  • Aprendizaje de preferencias basado en consentimiento: preguntas de incorporación, perfiles de gusto guardados, comentarios posteriores al evento, señales derivadas de notas y señales de clasificación aprendidas.

  • Los comentarios negativos se convierten en señales de evitación aprendidas, de modo que las futuras recomendaciones puedan alejarse de géneros, ambientes, tipos de evento o recintos que no gustan.

  • Medidas de seguridad para la compra de entradas: los agentes pueden presupuestar y preparar pedidos de entradas, pero la compra autónoma requiere un presupuesto bloqueado, confirmación escrita explícita y un proveedor de compra integrado.

El agente puede seguir escribiendo prosa conversacional, pero sus datos sobre eventos provienen de la herramienta.

CLI

Ejecuta sin instalar:

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

O instala el paquete de desarrollador de acceso anticipado:

npm install -g dizko-events
eventchat-events search --city berlin --when weekend --genres techno --limit 5

Desde este repositorio:

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 doctor

doctor comprueba la resolución DNS, el endpoint de salud de la API, el endpoint MCP alojado (salud, metadatos, tools/list) y una pequeña búsqueda en vivo, informando de la causa subyacente de cualquier fallo. Ejecútalo primero siempre que una búsqueda falle.

Entorno (todas las superficies - CLI, MCP stdio, MCP alojado, prueba de humo y monitor - resuelven los endpoints a través del mismo 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

Los fallos de red transitorios (EAI_AGAIN, ETIMEDOUT, ECONNRESET, ENOTFOUND, 5xx temporales) se reintentan automáticamente y se notifican como retryable: true con la causa subyacente, el código, el hostname y la URL de destino cuando persisten.

MCP para clientes desarrolladores locales

Ejecuta el servidor MCP stdio desde npm:

npm exec --yes --package dizko-events -- eventchat-events-mcp

O desde este repositorio:

node ./bin/eventchat-events-mcp.js

Ejemplo de configuración de cliente 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"
      }
    }
  }
}

Ejemplo de configuración de cliente MCP usando npm:

{
  "mcpServers": {
    "dizko-events": {
      "command": "npm",
      "args": ["exec", "--yes", "--package", "dizko-events", "--", "eventchat-events-mcp"],
      "env": {
        "DIZKO_API_BASE_URL": "https://api.dizko.app"
      }
    }
  }
}

Herramientas:

  • get_preference_onboarding: devuelve las preguntas que el asistente debe hacer antes de guardar preferencias.

  • create_event_preference_profile: crea un perfil de preferencias guardadas opaco tras el consentimiento y devuelve un id de perfil más un secreto de perfil privado que el asistente puede recordar.

  • save_event_preferences: guarda las preferencias del usuario solo después del consentimiento explícito y el acceso con secreto de perfil.

  • get_event_preferences: lee las preferencias guardadas y aprendidas con acceso mediante secreto de perfil.

  • delete_event_preferences: elimina las preferencias guardadas y los comentarios de un perfil con acceso mediante secreto de perfil y confirmación explícita del usuario.

  • record_event_feedback: almacena señales de me gusta/no me gusta, valoraciones o notas posteriores al evento y actualiza las señales aprendidas con acceso mediante secreto de perfil. Las notas sobre música, público, precio, horario o recinto pueden convertirse en señales de preferencia o evitación aprendidas. Rechaza comentarios vacíos.

  • get_event_feedback_prompt: devuelve preguntas breves de seguimiento posteriores al evento para un evento específico antes de guardar los comentarios.

  • get_event_search_followups: devuelve solo las preguntas de contexto actual que faltan antes de una búsqueda para esta noche/semana/fin de semana.

  • search_events: búsqueda estructurada de eventos en vivo.

  • recommend_events: búsqueda en vivo más clasificación de gustos explicable.

  • recommend_events_for_user: recomendaciones en vivo usando preferencias guardadas y comentarios aprendidos con acceso mediante secreto de perfil.

  • plan_night: plan compacto con alternativas.

  • get_daily_roundup: resumen de un día para una ciudad: mejores opciones clasificadas además de secciones de fiestas, música en vivo, arte, comedia, charlas y comida. Diseñado para resúmenes matutinos recurrentes; el acceso opcional con secreto de perfil personaliza la clasificación con preferencias guardadas, aprendidas y por día.

  • get_artist_events: próximos conciertos agrupados por artista para DJs, intérpretes o cómicos nombrados. Con acceso mediante secreto de perfil y sin artistas nombrados, rastrea la lista featuring guardada del perfil.

  • get_city_pulse: lectura agregada del impulso de una ciudad en los próximos días: noches más concurridas, mejores recintos, mezcla de géneros y eventos principales, cada estadística con sus recuentos de evidencia. Solo inventario público.

  • get_event: consulta de detalle por id de evento.

  • get_ticket_purchase_policy: explica los modos de compra actuales, las reglas de seguridad estrictas y los requisitos del proveedor.

  • get_ticket_offers: devuelve opciones de entradas para un evento, incluida la URL de pago y si se admite la compra autónoma.

  • quote_ticket_order: crea un presupuesto bloqueado con cantidad, total máximo, tipo de entrada, caducidad y condiciones de parada.

  • purchase_ticket_order: acepta confirmación escrita explícita y o ejecuta una compra integrada con proveedor o devuelve el traspaso de pago externo requerido.

Nota de anotación: las herramientas de búsqueda y recomendación leen datos de eventos en vivo, y las herramientas de preferencias escriben solo en la memoria privada del conector protegida por profile_id más profile_secret. Solo purchase_ticket_order está marcada como destructiva/mundo abierto porque es el punto de acción acotado para compras de entradas o traspaso de pago.

Nota sobre entradas: purchase_ticket_order está marcada intencionadamente como destructiva y de mundo abierto porque es el futuro límite de acción para la compra autónoma de entradas. En la compilación predeterminada de npm/alojada, los enlaces de entradas de terceros devuelven requires_external_checkout; la herramienta no extrae páginas de pago, no evita CAPTCHAs ni carga tarjetas. La compra verdaderamente autónoma requiere un adaptador de proveedor como Hermes, OpenClaw, Dizko Checkout, una API de venta de entradas asociada o un flujo de pago delegado aprobado.

Nota de autenticación: el conector alojado público se presenta como noauth para el descubrimiento básico de eventos. Las herramientas de preferencias guardadas, comentarios, recomendaciones personalizadas, lectura, actualización y borrado siguen requiriendo el profile_id opaco del usuario más su profile_secret privado. Los descriptores de herramientas incluyen securitySchemes: [{ "type": "noauth" }] y lo reflejan en _meta.securitySchemes para la compatibilidad con ChatGPT.

Nota de seguridad de borrado: delete_event_preferences también requiere confirm_delete: true, que solo debe enviarse después de que el usuario confirme que quiere eliminar las preferencias del conector de Dizko y el historial de comentarios.

Nota de retención: los perfiles de preferencias guardados se podan automáticamente después de la ventana de inactividad configurada, por defecto 730 días, en consonancia con la política de retención publicada de 24 meses.

MCP alojado para ChatGPT y Claude

Para usuarios normales, publica un endpoint MCP alojado en lugar de pedirles que ejecuten un comando local.

PORT=8787 node ./bin/eventchat-events-http.js

Endpoints:

  • POST /mcp: endpoint MCP JSON-RPC.

  • GET /health: comprobación de salud del despliegue.

  • GET /: metadatos básicos del servicio.

  • GET /privacy-policy.html: política de privacidad pública para preferencias guardadas, comentarios, retención y borrado.

  • GET /support.html: página pública de soporte, borrado y contacto de seguridad.

  • GET /terms.html: página pública de términos del conector y uso aceptable.

  • GET /user-guide.html: guía pública para usuarios normales con indicaciones, memoria de preferencias, comentarios y comportamiento de borrado.

  • GET /.well-known/security.txt: metadatos de contacto para notificar vulnerabilidades.

  • GET /logo-512.png: logotipo del conector de 512px para los metadatos del envío.

Endpoint actual desplegado:

https://mcp.dizko.app/mcp

Para convertirte en una app/plugin de ChatGPT:

  1. Despliega este servidor HTTP en un dominio HTTPS público.

  2. Pruébalo en el modo desarrollador de ChatGPT creando un conector con esa URL.

  3. Valida las llamadas a herramientas en web y móvil.

  4. Envía la app a través del panel de OpenAI con la URL pública de MCP, las URLs de privacidad/soporte, el logotipo, capturas de pantalla, indicaciones de prueba y descripciones de herramientas.

Los usuarios de Claude pueden añadir la misma URL pública de MCP como conector personalizado donde su plan/espacio de trabajo admita MCP remoto.

Consulta plugin-submission.md y submission-fields.json para la copia de envío funcional. Consulta OPENAI_SUBMISSION_PACKET.md para el paquete final de entrega en el panel. Consulta SCREENSHOT_CHECKLIST.md para las indicaciones y nombres de archivo exactos de las capturas de pantalla en el modo desarrollador de ChatGPT. Consulta SUBMISSION_AUDIT.md para la correspondencia de requisitos con evidencia y los controles de revisión externa pendientes. Consulta USER_GUIDE.md para indicaciones de usuario normal, comportamiento de la memoria de preferencias y enlaces de soporte/privacidad. Consulta DEPLOYMENT.md para Railway, Docker, dominios personalizados y pasos de revisión. Consulta OPERATIONS.md para comprobaciones de salud, registros, reversión, manejo de datos de preferencias y desencadenantes de reenvío. Consulta golden-prompts.md para pruebas de indicaciones directas, indirectas y negativas para el descubrimiento de conectores y el enrutamiento de herramientas. Consulta SECURITY.md para la notificación de vulnerabilidades y las salvaguardas operativas.

Prueba de humo en vivo:

npm run monitor:live
npm run smoke:live

monitor:live es de solo lectura y adecuado para comprobaciones de disponibilidad. smoke:live también ejercita la creación y eliminación de perfiles de preferencias temporales.

Evidencia de envío:

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

El comando bundle guarda submission-evidence/latest.json y submission-evidence/latest-summary.md para la preparación de la revisión del panel, manteniendo la evidencia generada fuera de git. La evidencia incluye el endpoint verificado, el identificador actual de despliegue de Railway, el digest de la imagen, las comprobaciones de la página pública, los metadatos de las herramientas, la búsqueda en vivo y el flujo de memoria de preferencias.

El comando fields valida submission-fields.json, el artefacto estable de copia para el panel, contra la última evidencia en vivo, incluidos los metadatos de despliegue.

El comando preflight ejecuta pruebas locales, smoke en vivo, generación de evidencia de envío en vivo y validación de campos del panel en una sola pasada.

El comando status ofrece un veredicto final de apto/no apto para el envío al panel de OpenAI, indica el endpoint a enviar y mantiene separado el estado no resuelto del dominio personalizado de la preparación del endpoint alojado.

El comando review-demo escribe una transcripción saneada de submission-evidence/review-demo.md a partir de llamadas MCP en vivo para la preparación de prompts/respuestas del panel.

Utilidad de soporte para eliminación:

npm run preferences:delete -- --profile-id upg_... --profile-secret ups_... --preferences-path /data/preferences.json

Esto es para solicitudes de eliminación de soporte cuando el usuario no puede llamar a delete_event_preferences a través de su cliente MCP.

Flujo de personalización:

  1. El usuario pide ayuda personalizada para eventos.

  2. El asistente llama a get_preference_onboarding y pregunta qué eventos, géneros, ambiente, presupuesto, ubicaciones y aversiones le gustan generalmente al usuario.

  3. El asistente pregunta si Dizko puede guardar esas preferencias.

  4. Si es así y no existe un perfil, el asistente llama a create_event_preference_profile y recuerda de forma privada el profile_id y profile_secret devueltos.

  5. La respuesta de creación también incluye access_instructions, una tarjeta de acceso orientada al usuario para clientes que no pueden persistir el estado del conector entre sesiones.

  6. Si ya existe un perfil, el asistente llama a save_event_preferences con profile_id y profile_secret.

  7. Para búsquedas de esta noche/semana/fin de semana, el asistente llama a get_event_search_followups, hace preguntas ligeras de contexto actual y luego llama a recommend_events_for_user.

  8. Las preferencias pueden incluir day_filters, reglas por día de la semana, como techno los viernes pero tranquilo los domingos. Los campos de matriz se suman al gusto general y max_price/free/nightlife lo anulan, pero solo en ese día de la semana: las búsquedas de un solo día (esta noche, mañana, una fecha explícita) y los resúmenes diarios aplican el día correspondiente automáticamente.

  9. Para un resumen diario ("¿qué pasa hoy?", un informe matutino programado), el asistente llama a get_daily_roundup con la ciudad y las credenciales del perfil, y muestra las mejores opciones seguidas de secciones por categoría.

  10. Después del evento, el asistente llama a get_event_feedback_prompt, pregunta si el usuario fue y si le gustó, y luego llama a record_event_feedback solo después de que el usuario indique que le gustó/no le gustó, una valoración o notas.

Flujo de compra de entradas:

  1. El usuario pide comprar o reservar entradas para un evento.

  2. El asistente llama a get_ticket_offers con el identificador del evento.

  3. El asistente explica si la oferta permite la compra autónoma o solo el pago externo.

  4. El asistente llama a quote_ticket_order con cantidad, tipo de entrada, total máximo, moneda y restricciones de reembolso.

  5. El asistente pide una confirmación escrita explícita, por ejemplo: Yes, buy 2 ticket(s) for Ostbahnhof XL, max total USD240. Stop if price, date, venue, ticket type, quantity, or refund terms change.

  6. El asistente llama a purchase_ticket_order solo después de esa confirmación.

  7. Si la cotización usa external_checkout, la herramienta devuelve requires_external_checkout y una URL de pago. El asistente no debe afirmar que compró la entrada.

  8. Si Hermes, OpenClaw, Dizko Checkout u otro proveedor integrado está configurado, el proveedor puede ejecutar la compra limitada y devolver el estado del pedido/recibo/entrega de la entrada.

Contrato del adaptador de proveedor:

{
  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: {}
    };
  }
}

Notas de distribución

La superficie pública de usuario en ChatGPT es el endpoint MCP alojado más el envío de la aplicación OpenAI. El paquete npm es la vía de distribución para desarrolladores: agentes locales, clientes MCP tipo Claude Desktop, configuraciones de Cursor y Windsurf, y evaluadores técnicos que puedan ejecutar un comando. El código fuente es público para su inspección y para reportar problemas. Sigue marcado como UNLICENSED, por lo que la publicación no otorga una licencia de reutilización.

Antes de publicar una nueva versión npm:

npm test
npm pack --dry-run --json
npm publish --access public
-
license - not tested
-
quality - not tested
A
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 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.

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/Dizko-Labs/dizko-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server