yandex-calendar-mcp
yandex-calendar-mcp
Un servidor MCP que da a un asistente de IA acceso a Yandex Calendar mediante CalDAV. Lee la agenda, crea, mueve y elimina eventos.
Nota sobre el idioma: las descripciones y respuestas de las herramientas están en ruso, porque el servidor fue escrito para un asistente de habla rusa. El código, la configuración y este documento están en inglés. Todo lo demás funciona independientemente del idioma.
Qué hace
Lectura
Eventos de cualquier período: hoy por defecto, o un rango explícito de hasta 92 días.
Todos los calendarios a la vez, con cada evento etiquetado con el calendario del que procede, o un único calendario seleccionado por nombre.
Eventos recurrentes expandidos en fechas concretas. Si la expansión falla, el evento se devuelve con una advertencia en lugar de presentarse como exacto.
Asistentes enumerados con cómo ha respondido cada uno: aceptado, rechazado, con reservas o sin responder.
Los eventos de día completo se reconocen como tales, no se muestran como citas a medianoche.
Cada respuesta indica la zona horaria y el desplazamiento UTC utilizados.
Escritura
Crear un evento: título, inicio, fin o duración, ubicación, descripción; con hora o de día completo que abarque varios días.
Crear un evento recurrente (diario, semanal, mensual o anual) limitado por un número de ocurrencias o por una fecha de fin.
Actualizar un evento: moverlo, renombrarlo, cambiar la ubicación o la descripción. Solo se tocan los campos que se pasan; un evento movido conserva su duración original salvo que se indique lo contrario.
Editar o eliminar una sola ocurrencia de una serie recurrente, o la serie completa. Un día cambiado se convierte en una anulación
RECURRENCE-ID; un día eliminado, en unEXDATE, los mecanismos estándar, de modo que el resultado se vea correcto en la aplicación de Yandex y en cualquier otro cliente.Invitar a personas: los asistentes se pueden añadir al crear un evento, y añadirse o eliminarse más tarde. El propio Yandex envía las invitaciones y cancelaciones por correo.
Eliminar un evento, con las salvaguardas descritas a continuación.
Zonas horarias, tratadas con cuidado
Cada marca de tiempo se convierte a la zona configurada con
zoneinfo. Las cadenas de hora nunca se cortan por posición de carácter.Los eventos escritos llevan un
DTSTART;TZID=…explícito más un bloqueVTIMEZONEcompleto, de modo que cualquier cliente de calendario los lea de la misma manera.La máquina que ejecuta el servidor suele estar en UTC; eso nunca se filtra en las respuestas, y la zona realmente utilizada se nombra en cada respuesta, de modo que un error sea visible en lugar de silencioso.
Diseñado para que lo maneje un asistente
Las respuestas son texto plano legible con el
uiddel evento incluido, de modo que una edición o eliminación pueda seguir directamente a un listado.create_eventrequiere un calendario explícito: la gente tiene varios calendarios para distintos fines, y un evento archivado silenciosamente en el equivocado es un evento perdido. Se espera que el asistente pregunte en lugar de adivinar.Los errores vuelven como frases que explican qué hacer a continuación, no como trazas de pila.
Related MCP server: MCP Personal Calendar
Requisitos
Python 3.10 o superior (probado con 3.13)
Una contraseña de aplicación de Yandex, no la contraseña de la cuenta: https://id.yandex.ru/security/app-passwords → tipo de aplicación "Календарь (CalDAV)"
pip install -r requirements.txttzdata está en los requisitos a propósito: las imágenes slim de Linux a menudo no incluyen una base de datos de zonas horarias, y ZoneInfo("Europe/Moscow") falla entonces.
Configuración
Toda la configuración proviene de variables de entorno.
Variable | Obligatoria | Por defecto | Significado |
| sí | — |
|
| sí | — | contraseña de aplicación |
| no |
| endpoint CalDAV |
| no |
| zona IANA para toda la entrada y salida |
| no |
| dónde se guardan las copias de los eventos modificados y eliminados |
| no | valor de | dirección que aparece como organizador de la reunión en las invitaciones |
El servidor habla MCP sobre stdio. Hay un ejemplo de configuración de cliente en examples/.
Herramientas
Herramienta | Qué hace |
| eventos de un período; por defecto hoy; expande recurrencias |
| nombres y URL de calendarios |
| crea un evento, único o recurrente, con asistentes; |
| mueve, renombra, cambia ubicación o descripción, añade o elimina asistentes; un día de una serie o la serie completa |
| elimina un evento; un día de una serie o la serie completa |
Eliminar es irreversible: qué te protege
Comprobación del título.
delete_eventrecibe tanto eluidcomo el título del evento. Se comparan; si no coinciden, no se elimina nada y la respuesta nombra ambos títulos y el calendario. Unuidobsoleto o confundido es la forma realista de destruir el evento equivocado, y esto es lo que lo detecta.Papelera. Antes de cada eliminación y de cada actualización, el evento original completo se escribe en
YANDEX_TRASH_DIRcomo archivo.icscon marca de tiempo. Si la copia no se puede escribir, la operación no se ejecuta en absoluto. La recuperación consiste en importar ese archivo de nuevo.Series recurrentes. Cualquier edición o eliminación en una serie debe indicar a qué se aplica:
occurrencepara un día,apply_to_seriespara la serie completa. Sin ninguno de los dos, la herramienta se niega y explica la elección. Así se evita que "cancelar el martes" borre un año de reuniones.
Invitar a personas envía correos reales
Yandex anuncia calendar-auto-schedule, por lo que añadir un asistente hace que el servidor envíe una invitación, y eliminarlo envía una cancelación. Ninguna de las dos se puede recuperar. Esto se verificó de extremo a extremo, no solo por las capacidades anunciadas del servidor: una invitación añadida mediante create_event llegó a la bandeja de entrada del destinatario.
Lo que se deriva de esto:
Las direcciones se toman al pie de la letra y se validan. El servidor nunca deriva una dirección de un nombre: un asistente que recuerde a medias un contacto enviaría un correo a un extraño.
update_eventañade y elimina asistentes en lugar de reemplazar la lista, de modo que se conservan las respuestas ya dadas por los demás.Cada respuesta enumera exactamente quién está en el evento y cómo ha respondido, de modo que una dirección incorrecta sea visible de inmediato.
Un asistente que maneje este servidor debe confirmar la lista de direcciones con su usuario antes de llamar. Enviar una invitación no es una acción deshacible.
Pruebas
python tests/write_cycle.py "Calendar name"Rondas autolimpiables contra un calendario real a través del protocolo real. Un evento único: crear → intentar eliminar con un título incorrecto (debe rechazarse) → mover y renombrar → confirmar que aparece en el listado → eliminar → confirmar que ha desaparecido. Una serie de tres ocurrencias: editar un día, eliminar un día, eliminar la serie completa, comprobando cada vez que exactamente un día ha cambiado. Si una eliminación falla, el uid del evento sobrante se imprime en lugar de dejarse silenciosamente.
La ronda de asistentes solo se ejecuta cuando se pasa una dirección explícitamente, porque envía correos reales:
python tests/write_cycle.py "Calendar name" someone@example.comtests/probe.jsonl es un conjunto de mensajes de protocolo sin procesar para comprobar el protocolo de enlace y la ruta de lectura:
python src/server.py < tests/probe.jsonlLimitaciones conocidas
Los eventos de día completo se pueden crear, pero no se puede mover su hora.
Las reglas de recurrencia se crean en sus formas comunes (cada día / semana / mes / año, con un recuento o una fecha de fin). Las reglas más complejas ("cada segundo martes", conjuntos de días de la semana) se leen y expanden correctamente, pero no se pueden crear mediante la herramienta.
Los recordatorios y alarmas no se gestionan.
Los asistentes siempre se invitan como participantes obligatorios; no se exponen asistentes opcionales ni roles por asistente.
Verificado solo con Yandex Calendar. Es probable que otros servidores CalDAV funcionen, pero no se han probado.
Licencia
MIT: consulte LICENSE.
This 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 Servers
- AlicenseNot gradedqualityAmaintenanceAn MCP server that exposes CalDAV calendar operations as tools for AI assistants. It enables users to connect to CalDAV servers to create and list calendar events within specific timeframes.43297MIT
- AlicenseNot gradedqualityAmaintenanceA CalDAV-compliant MCP server that enables AI models to manage personal schedules and to-do lists, supporting batch creation, modification, and intelligent timezone adjustments.MIT
- AlicenseNot gradedqualityFmaintenanceProvider-agnostic CalDAV calendar MCP server that connects any CalDAV calendar to AI assistants, enabling calendar operations like listing, creating, updating, and deleting events.AGPL 3.0
- AlicenseNot gradedqualityFmaintenanceA comprehensive MCP server that provides AI assistants with natural language access to Apple Calendar, enabling reading, searching, creating, and managing calendar events.3MIT
Related MCP Connectors
Hosted Google Calendar MCP server for AI agents. No self-hosting or Google Cloud setup.
Calendar API for AI agents: events, availability, Google/Microsoft setup, scheduling, and iCal.
AI-native scheduling: check availability, book meetings, cancel and reschedule via MCP
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/PlatonKing/yandex-calendar-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server