intents-mcp
Los App Intents de tu Mac (Recordatorios, Calendario, Notas…) como herramientas MCP mediante Shortcuts. Solo APIs públicas.
Documentación
intents-mcp
Tu Mac ya incluye más de mil acciones de apps. intents-mcp entrega las que elijas a Claude Code, Codex o cualquier cliente MCP, a través de Shortcuts, usando solo APIs públicas.
https://github.com/user-attachments/assets/3db14186-e1c6-4724-80da-f9aced0f1fb5
$ intents-mcp census
This Mac declares 1,304 App Intents actions (1,249 unique)
in 224 metadata files, across 91 apps and system components.
discoverable in Shortcuts 945
simple tier 47 background, plain inputs, returns output
need an entity (a note…) 657 not supported yet
…
Salida real del Mac del autor (macOS 27.0, 2026-09-26). Ejecuta intents-mcp census para obtener la tuya.
Las apps describen sus acciones para Siri y Shortcuts en los metadatos de App Intents. intents-mcp lee esos metadatos, te deja elegir qué acciones puede usar un agente, envuelve cada una en un Shortcut firmado pequeño, y las sirve como herramientas MCP a través de stdio. Cuando el agente llama a una herramienta, el Shortcut ejecuta la acción de la app, e intents-mcp lee el resultado cuando es posible:
> Add a reminder to call the dentist tomorrow at 10.
reminders_add → {"ok": true, "output": "Call the dentist", "verified": true,
"detail": "read back through Shortcuts: due 26 Sep 2026 at 10:00"}
Qué funciona hoy
Herramientas verificadas en ejecuciones reales (macOS 27.0, Claude Code 2.1 y Codex 0.157):
| Herramienta | App | Lectura de vuelta |
|---|---|---|
reminders.add | Recordatorios | sí (título, fecha de vencimiento) |
calendar.create-event | Calendario | sí (título, inicio) |
notes.create | Notas | no |
| Herramientas de escritura: Resumir, Corregir | Herramientas de escritura | no |
Cualquier acción del nivel simple (se ejecuta en segundo plano, entradas de texto/número/fecha/elección simples, devuelve salida) se puede habilitar desde sus metadatos. Esas herramientas están marcadas como aún no verificadas en una ejecución real. En las pruebas, 2 de 3 funcionaron a la primera. La tercera (Notas "Crear carpeta") nunca terminó y se deshabilitó, así que verifica una herramienta nueva antes de confiar en ella.
Instalación
brew install VladUZH/tap/intents-mcp # prebuilt for Apple silicon; no dependencies
Los Mac con Intel compilan desde el código fuente, lo que requiere Xcode.
¿Aún no tienes Homebrew? Su instalador pide tu contraseña, luego espera
RETURN, y puede quedarse en silencio unos minutos mientras descarga. Eso es normal. Si
ya tienes Homebrew, ejecuta brew update primero.
En macOS 27 esto requiere un Homebrew actual (7.0 o posterior); las versiones antiguas compilan desde el
código fuente y piden Xcode 27. O desde un clon: swift build -c release y usa
.build/release/intents-mcp.
Requiere macOS 26 o posterior (probado en 27.0) y el comando shortcuts, que viene con macOS.
Configuración (aproximadamente un minuto por herramienta)
intents-mcp census # what your Mac has
intents-mcp list --tier simple # checked tools first, then actions from metadata
intents-mcp enable reminders.add calendar.create-event
claude mcp add --scope user mac -- intents-mcp serve # Claude Code, in every folder
codex mcp add mac -- intents-mcp serve # Codex
Los pasos manuales, con honestidad:
enableabre cada envoltorio en Shortcuts. Haz clic en Añadir acceso directo una vez. Shortcuts no tiene una forma pública de añadir un acceso directo sin ese clic.- La primera vez que se ejecuta una herramienta, Shortcuts puede pedir permiso. Elige Permitir siempre. En las pruebas, lo pidió cada vez que los datos iban a otra app (Notas, CotEditor, MacWhisper), y en su mayoría no lo pidió para Recordatorios y Calendario. Puede pedirlo de nuevo después de actualizar un envoltorio, porque un envoltorio actualizado es un acceso directo nuevo.
Las herramientas que leen su resultado necesitan un segundo clic en Añadir acceso directo: Recordatorios y Calendario añaden cada uno un pequeño ayudante de lectura ("intents-mcp verify.reminders" y "intents-mcp verify.calendar"), compartido por todas las herramientas de esa app. Si lo omites, esas herramientas aún se ejecutan, pero informan "no verificado".
Claude Code detecta herramientas habilitadas o deshabilitadas en una sesión en curso; otros clientes (por ejemplo, Codex) pueden necesitar un reinicio.
Privacidad y seguridad
- Se ejecuta en tu Mac. Solo APIs públicas. Lee archivos de metadatos de apps, crea accesos directos,
y los ejecuta con el comando
shortcutsde Apple. Sin frameworks privados, sin cambios de SIP o AMFI, sin clics de Accesibilidad. - La firma involucra a Apple.
shortcuts signusa tu cuenta de iCloud, y Apple recibe una copia de cada envoltorio para validación (la guía de Shortcuts de Apple lo dice). Un envoltorio firmado también lleva la identidad de firma de tu cuenta de Apple (un identificador de cuenta y un correo electrónico y número de teléfono con hash), así que intents-mcp elimina el archivo firmado en cuanto ve el acceso directo en tu biblioteca (después deenable, o en el siguienteenable,doctor,serveo llamada de esa herramienta). No compartas archivos.shortcutfirmados. Los accesos directos añadidos viven en tu biblioteca de Shortcuts, que se sincroniza a través de iCloud. - Tú eliges cada herramienta. Nada queda expuesto hasta que lo
enable. Las acciones cuyos nombres o descripciones sugieren eliminar, enviar, comprar o compartir se marcan y necesitan--allow-risky(una lista de palabras amplia, así que algunas inofensivas también se marcan). Los agentes las ven marcadas comodestructiveHint. - Sin telemetría, sin red propia. El servidor MCP solo habla con el cliente que lo inició, a través de stdio.
- Cada llamada se registra localmente (
intents-mcp log): herramienta, hora, duración, éxito, y si fue verificada, escrito cuando la llamada comienza y cuando termina, así que una llamada interrumpida aún aparece. Los argumentos y resultados no se registran. - Los resultados se leen de vuelta donde existe una acción de lectura: el ayudante encuentra el elemento con el
título recién usado y comprueba que se creó durante la llamada. (Si la app que ejecuta tu
agente ya tiene acceso completo a Recordatorios o Calendario, esto se hace con EventKit en su lugar;
consulta PRIVACY.md). Un elemento más antiguo con el
mismo título, o un elemento diferente, informa
verified: false, nunca un falso éxito. - Los resultados poco claros se dicen. Si una ejecución se agota o termina sin un resultado, la herramienta
dice que la acción puede haber ocurrido igualmente (
outcomeUnknown), así que los agentes comprueban antes de reintentar. Una llamada que nunca comenzó (cancelada o sin tiempo mientras estaba en cola) lo dice.
Comandos
intents-mcp census [--json] count the actions this Mac declares
intents-mcp list [--app <name>] [--tier simple|entity|unsupported|all] [--json]
(--json: metadata actions only, with a status
field; the checked tools are at the top of the
text output)
intents-mcp enable <tool>... [--allow-risky] make actions available to agents (alias or id)
intents-mcp disable <tool>... stop exposing them (alias or id)
intents-mcp call <tool> '<json args>' run a tool as an agent would
intents-mcp tools the enabled tools
intents-mcp log [--last <n>] what agents called
intents-mcp doctor check this Mac is ready
intents-mcp serve MCP over stdio
En una terminal, la salida de texto de census, list, doctor, tools, log, enable y
disable aparece una línea a la vez: aproximadamente 40 ms de separación, añadiendo como máximo 2 s a un comando. La salida
de más de 300 líneas (como un list completo), las tuberías, los archivos y --json se imprimen de una vez.
INTENTS_MCP_LINE_DELAY_MS establece el intervalo en milisegundos: 0 lo desactiva, y un valor mayor
como 120 es más lento, para una grabación de pantalla (puede entonces añadir hasta 10 s a un comando).
En una terminal, la salida también usa algunos colores (verde para lo que funciona, amarillo para lo que necesita tu atención,
rojo para fallos). Establece NO_COLOR=1 para desactivarlos; las tuberías, los archivos y --json nunca los reciben.
Límites
- Las acciones de entidades aún no son compatibles, es decir, acciones que actúan sobre una nota, recordatorio o lista existente. En el Mac del autor, eso son 657 de las 945 acciones descubribles. Un paso "Buscar" de Shortcuts que debería elegir una nota una vez coincidió con la incorrecta en las pruebas, así que estas permanecen desactivadas hasta que puedan coincidir de forma segura.
- Declarado no es lo mismo que utilizable. Algunas acciones declaradas son rechazadas por Shortcuts en el Mac, y algunas ignoran sus nombres de parámetros declarados. Recordatorios y Calendario funcionan a través de las acciones integradas de Shortcuts en su lugar.
- La CLI no puede eliminar accesos directos. Después de
disable, elimina el envoltorio en la app de Shortcuts tú mismo. - El Mac debe estar despierto. Shortcuts no se ejecuta mientras está dormido. Otro proyecto informa que las ejecuciones funcionan con la pantalla bloqueada; eso aún no se ha probado aquí.
- Pocas apps de terceros incluyen App Intents todavía. En el Mac del autor, 8 de 50 lo hacían.
Cómo funciona
- Índice. Lee cada
Metadata.appintents/extract.actionsdataen/Applicationsy/System. No se necesita permiso. Mapea cada acción a la app que conoces y la clasifica en un nivel. - Envolver. Cada herramienta se convierte en un Shortcut: Entrada JSON → Obtener valor del diccionario por
argumento → la acción de la app → Obtener texto → Detener y salida. Se firma con
shortcuts sign --mode people-who-know-me. - Ejecutar.
shortcuts run <UUID> --input-path … --output-path …, con stdin desde/dev/nully un tiempo de espera. Los argumentos se comprueban primero, porque Shortcuts ignora silenciosamente las claves que no conoce. - Servir. Un servidor MCP pequeño a través de stdio:
initialize,tools/list,tools/call. Funciona con Claude Code y con Codex actual.
Licencia
MIT