Skip to main content
Glama

Apple Reminders MCP

Un servidor MCP local basado en stdio que proporciona a un modelo acceso controlado de lectura y escritura a los Recordatorios de macOS: listas, recordatorios, fechas, repeticiones, avisos anticipados, prioridad, banderas, notas y URL.

Solo macOS. Compilado contra macOS 27 con Swift 6.4.

Instalación

Como paquete de extensión (recomendado)

npm install && npm run package:mcpb

Eso produce apple-reminders-mcp.mcpb. Ábrelo o arrástralo al panel de Extensiones de Claude Desktop, igual que apple-calendar-mcp.mcpb y apple-mail-mcp.mcpb.

Desde el código fuente

npm install && npm run build

Después, regístralo con tu cliente MCP:

{
  "mcpServers": {
    "apple-reminders": {
      "command": "node",
      "args": ["/absolute/path/to/apple-reminders-mcp/dist/index.js"]
    }
  }
}

El helper de Swift está deliberadamente sin firmar con su propia identidad. Una identidad ad hoc lo convierte en un sujeto TCC separado, lo que rompe la herencia de acceso a EventKit (verificado: firmarlo hace que requestFullAccessToReminders devuelva false). Sin firma, hereda los permisos del cliente MCP.

En el primer uso, tu cliente MCP necesitará:

  • Acceso a Reminders (Ajustes del Sistema → Privacidad y seguridad → Reminders) — para todo.

  • Acceso a Automatización → Reminders — solo si usas banderas.

Related MCP server: Apple Reminders MCP Server

Herramientas

Cada herramienta lleva un nombre para mostrar tomado del vocabulario propio de Reminders, que es lo que los clientes muestran en lugar del nombre de la función en bruto.

Se muestra como

Herramienta

Qué hace

Mostrar listas

list_lists

Cada lista con su id, cuenta, color, capacidad de escritura y cuál es la predeterminada

Nueva lista

create_list

Lista nueva, con color hexadecimal opcional

Editar lista

update_list

Cambia el nombre de una lista o su color, o ambos

Eliminar lista

delete_list

Elimina una lista y todos los recordatorios que contiene — requiere confirm: true

Buscar recordatorios

list_reminders

Filtra por lista, estado de completado, ventana de vencimiento y texto; limit con un indicador truncated

Abrir recordatorio

get_reminder

Detalle completo de un recordatorio

Nuevo recordatorio

create_reminder

Crea un recordatorio con cualquier campo admitido

Editar recordatorio

update_reminder

Modifica cualquier campo, incluido marcar como completado mediante completed

Mover a lista

move_reminder

Mueve un recordatorio a otra lista

Eliminar recordatorio

delete_reminder

Elimina un recordatorio

También se exponen: los recursos reminders://lists y reminders://capabilities, y un prompt triage_reminders.

Mapa de campos

Así se asigna el panel de detalles de la app Reminders a este servidor:

App Reminders

Campo

Notas

Título

title

Notas

notes

"" lo borra

URL

url

"" lo borra

Fecha / Hora

due, allDay

YYYY-MM-DD → todo el día; fecha y hora ISO → con hora; "" lo borra

Repetición

recurrence

RRULE de iCal sin el prefijo RRULE:

Fin de la repetición

recurrence

El UNTIL= o COUNT= de la RRULE

Aviso anticipado

earlyReminderMinutes

Minutos antes del vencimiento; null lo borra

Lista

list / move_reminder

Bandera

flagged

Respaldado por AppleScript, lento — ver más abajo

Prioridad

priority

none | low | medium | high

Casilla

completed

Etiquetas

no admitido, ver más abajo

Urgente

no admitido, ver más abajo

Cada recordatorio devuelve tanto due (UTC, o YYYY-MM-DD si es de todo el día) como dueLocal. Usa dueLocal cuando le digas a una persona cuándo vence algo.

Marcar como completado un recordatorio repetido

Marcar como completado un recordatorio repetido lo adelanta a su siguiente ocurrencia en lugar de completarlo — igual que hace la app Reminders. La respuesta devuelve completed: false con una fecha de vencimiento posterior. Para terminar una serie, borra primero recurrence o elimina el recordatorio.

Lo que no se admite, y por qué

Dos campos de la interfaz de Reminders no tienen ninguna API detrás en macOS 27. Esto se comprobó mediante pruebas directas, no por suposición:

Etiquetas. EKReminder y EKCalendarItem no exponen ninguna propiedad de etiquetas (inspeccionado volcando el runtime de Objective-C: class_copyPropertyList no devuelve ningún miembro con forma de etiqueta, y respondsToSelector: es false para tags y hashtags). El diccionario de AppleScript de Reminders tampoco tiene un término tags; su clase reminder solo expone nombre, id, contenedor, fecha de creación/modificación, cuerpo, completado, fecha de completado, fecha de vencimiento, fecha de vencimiento de todo el día, fecha de aviso, prioridad y bandera. Escribir #tag en un título no crea una etiqueta: un recordatorio creado mediante EventKit titulado zzz mcp probe #zzmcpprobe se mostraba en Reminders como texto literal sin ninguna etiqueta asociada. Las etiquetas viven en el contenedor de grupos de Reminders, que está protegido por TCC y no es seguro escribir en él directamente (es un almacén CoreData sincronizado).

Urgente. El interruptor «Urgente» (Mark this reminder as urgent to set an alarm) no aparece ni en EventKit ni en el diccionario de AppleScript. Activarlo en la interfaz no produjo ninguna propiedad que este servidor pueda leer o escribir.

Si necesitas cualquiera de esos dos campos, tendrás que configurarlo a mano en la app Reminders.

Las banderas son lentas

flagged es el único campo al que EventKit no puede acceder, así que pasa por el puente de AppleScript de Reminders.app. Ese puente es lento y se degrada con el tamaño de la lista — medido en esta máquina: ~1s en una lista pequeña, ~15s para una búsqueda global por id, ~30s para una lista con cientos de recordatorios.

Por tanto, el estado de las banderas es opt-in:

  • Las lecturas lo omiten a menos que pases includeFlagged: true; de lo contrario, flagged devuelve null (lo que significa «no leído», no «sin bandera»).

  • Las escrituras solo pagan ese coste cuando realmente envías flagged.

Aumenta APPLE_REMINDERS_MCP_TIMEOUT_MS (por defecto 120000) si tienes listas muy grandes.

Seguridad

  • Se rechazan las escrituras en listas de solo lectura.

  • APPLE_REMINDERS_MCP_ALLOW_LISTS — nombres o ids de listas separados por comas. Si se define, las escrituras quedan limitadas a esas listas.

  • delete_list requiere confirm: true porque destruye todos los recordatorios de la lista.

  • Las herramientas destructivas llevan anotaciones destructiveHint para que los clientes puedan restringirlas.

Verificación

npm run verify

Eso compila, ejecuta las autopruebas del helper (ida y vuelta de RRULE, mapeo de prioridades, componentes de fecha, puente de ids, escape de AppleScript, rechazo de entradas) y, a continuación, ejecuta una prueba de humo de extremo a extremo que maneja el servidor MCP real a través de stdio contra listas desechables y las elimina después.

La prueba de humo cubre las 10 herramientas con 27 aserciones, incluida una comprobación de que cada herramienta anuncia un esquema de entrada JSON utilizable. Establece SMOKE_SKIP_FLAGS=1 para omitir las comprobaciones lentas de banderas.

Estructura

helper/EventKitReminders.swift   EventKit + AppleScript, JSON in on stdin, JSON out on stdout
src/helper.ts                    spawns the helper, one process per call
src/index.ts                     MCP tools, zod schemas, model-facing instructions
icon.png                         256x256 bundle icon
scripts/make-icon.swift          redraws icon.png; geometry and colours are
                                 measured from the Reminders app icon, drawn in
                                 CoreGraphics rather than copied as an asset
scripts/build-helper.sh          swiftc build (intentionally unsigned)
scripts/helper-self-test.mjs     pure-logic self-tests, touches no real data
scripts/smoke.mjs                end-to-end test over stdio JSON-RPC
scripts/package.mjs              builds apple-reminders-mcp.mcpb
scripts/package-check.mjs        asserts the bundle has the runtime files, an
                                 executable helper, and no dev artifacts
A
license - permissive license
Not graded
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (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 Servers

View all related MCP servers

Related MCP Connectors

  • MCP connector for Apple Reminders — search, create, complete, and edit via your own Mac.

  • Manage your family's calendars and lists in Cozi. View, create, and update appointments; organize…

  • Let ChatGPT, Claude & Cursor use your Mac: email, calendar, iMessage, Teams, files. Local, free.

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/augustoFranke/apple-reminders-mcp'

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