Ntfy
Un servidor MCP ntfy para enviar/recibir notificaciones ntfy a tu servidor ntfy autoalojado desde Agentes de IA 📤 (soporta autenticación segura por token y más - ¡úsalo con npx o docker!)
Documentación
ntfy-me-mcp
Un servidor de Protocolo de Contexto de Modelo (MCP) simplificado para enviar notificaciones a través del servicio ntfy (público o autoalojado con soporte de tokens) 📲
Resumen
ntfy-me-mcp proporciona a los asistentes de IA la capacidad de enviar notificaciones en tiempo real a tus dispositivos a través del servicio ntfy.sh (ya sea público o autoalojado con soporte de tokens). Recibe notificaciones cuando tu IA completa tareas, encuentra errores o alcanza hitos importantes, todo sin necesidad de monitoreo constante.
El servidor incluye funciones inteligentes como detección automática de URL para crear acciones de vista y detección inteligente de formato markdown, lo que facilita a los asistentes de IA crear notificaciones ricas e interactivas sin configuración adicional.
| Vista previa | Disponible en | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Características
- 🚀 Configuración rápida: ¡Ejecuta con npx o docker!
- 🔔 Notificaciones en tiempo real: Recibe actualizaciones en tu teléfono/escritorio cuando las tareas se completan
- 🎨 Notificaciones enriquecidas: Soporte para tema, título, prioridades, etiquetas emoji y mensajes detallados
- 🔍 Obtención de notificaciones: Obtén y filtra mensajes en caché de tus temas ntfy
- 🎯 Enlaces de acción inteligentes: Detecta automáticamente URLs en mensajes y crea acciones de vista
- 📄 Markdown inteligente: Detecta y habilita automáticamente el formato markdown cuando está presente
- 🔒 Seguro: Autenticación opcional con tokens de acceso
- 🔑 Enmascaramiento de entrada: ¡Almacena de forma segura tu token ntfy en tu configuración de vs!
- 🌐 Soporte autoalojado: Funciona tanto con ntfy.sh como con instancias ntfy autoalojadas
Próximamente...
- 📨 Correo electrónico: Envía notificaciones por correo electrónico (requiere configuración del servidor de correo ntfy)
- 🔗 URLs de clic: Capacidad para personalizar URLs de clic
- 🖼️ URLs de imágenes: Detección inteligente de URLs de imágenes para incluir automáticamente URLs de imágenes en mensajes y notificaciones
- 🏁 ¡y más!
Tabla de Contenidos
Inicio rápido - Configuración del servidor MCP
Elige la forma de configuración que coincida con tu cliente. Todos los ejemplos a continuación usan NTFY_TOPIC como la variable requerida y mantienen las opciones de autenticación opcionales comentadas hasta que las necesites.
Ejemplos de configuración
| Tipo | Caso de uso | Ejemplo |
|---|---|---|
| NPM / NPX | Recomendado para la mayoría de clientes MCP cuando deseas la configuración más ligera. |
Mostrar configuración
|
| Local | Usa una copia local cuando estés desarrollando o modificando el servidor tú mismo.
Reemplaza /absolute/path/to/ntfy-me-mcp/build/index.js después de compilar.
|
Mostrar configuración
|
| Docker | Usa una configuración contenerizada cuando Docker ya forme parte de tu entorno.
- DockerHub: gitmotion/ntfy-me-mcp:latest- GHCR: ghcr.io/gitmotion/ntfy-me-mcp:latest
|
Mostrar configuración
|
| OpenCode | Agrega a opencode.json en la raíz de tu proyecto (para configuración a nivel de proyecto) o a ~/.config/opencode/opencode.json (para configuración global). Usa "mcp" como clave de nivel superior con type: "local" y command como un arreglo. |
Mostrar configuración
|
| ClaudeCode | Agrega a .mcp.json en la raíz de tu proyecto (compartido con tu equipo mediante control de versiones), o a ~/.claude.json para acceso a nivel de usuario en todos los proyectos. |
Mostrar configuración
|
| Copilot CLI | Agrega a ~/.copilot/mcp-config.json para acceso a nivel de usuario en todas las sesiones. Usa type: "local" para servidores basados en stdio como este. |
Mostrar configuración
|
| Autenticación por token | Requerido para temas protegidos o servidores autoalojados. Consulta Manejo seguro de tokens (vscode) o establece NTFY_TOKEN directamente. |
Mostrar configuración
|
Instalación
Si necesitas instalar y ejecutar el servidor directamente (alternativa a la configuración MCP anterior):
| Opción | Ejemplo |
|---|---|
| Instalar globalmente Instala una vez, ejecuta en cualquier lugar con el comando ntfy-me-mcp. |
npm install -g ntfy-me-mcp
|
| Ejecutar con npx No requiere instalación: ideal para una ejecución rápida o pruebas. |
npx ntfy-me-mcp
|
| Instalar localmente Clona el repositorio, instala dependencias, compila y ejecuta mediante npm start. |
Mostrar pasos
|
| MCP Marketplace — Smithery Instalación con un solo comando para Claude Desktop mediante Smithery. |
Mostrar comando
|
Configuración del receptor de notificaciones
Ver sección de receptor ntfy
- Instala la aplicación ntfy en tu dispositivo
- o implementa tu propio servidor ntfy: https://docs.ntfy.sh/install/
- Suscríbete al tema que elijas (el mismo que tu configuración de
NTFY_TOPIC)
Configuración
Variables de entorno
Crea un archivo .env copiando el ejemplo: cp .env.example .env — consulta .env.example como referencia.
| Variable | Requerida | Predeterminado | Descripción |
|---|---|---|---|
NTFY_TOPIC | Sí | — | El tema de ntfy al que publicar notificaciones |
NTFY_URL | No | https://ntfy.sh | URL del servidor ntfy — cámbiala para instancias autoalojadas (incluye el puerto si es necesario, p. ej. https://your-server.com:8443) |
NTFY_TOKEN | No | — | Token de acceso para temas protegidos o servidores privados |
Autenticación
Ver sección de autenticación
Este servidor MCP admite endpoints ntfy autenticados y no autenticados:
- Temas públicos: Al usar temas públicos en ntfy.sh u otros servidores públicos, no se requiere autenticación.
- Temas protegidos:
- Para temas protegidos o servidores privados, debes proporcionar un token de acceso mediante la variable de entorno
NTFY_TOKENo en el parámetroaccessTokende la herramienta. - Si se requiere autenticación pero no se proporciona, recibirás un mensaje de error claro que explica cómo agregar tu token.
- Para temas protegidos o servidores privados, debes proporcionar un token de acceso mediante la variable de entorno
Manejo seguro de tokens (vscode)
- Si tu cliente admite entradas secretas basadas en prompts (es decir, VS Code), prefiere eso en lugar de codificar
NTFY_TOKENen archivos de configuración. (De lo contrario, usa tu token directamente) - Usa valores coincidentes como estos en tu archivo
mcp.json:
Mostrar ejemplo de mcp.json de VS Code
// Add this to your VS Code `mcp.json` file, either the user-level file or your workspace `.vscode/mcp.json`
// Set `NTFY_TOKEN` exactly to `"${input:ntfy_token}"` when you want VS Code to treat it as a secure prompt-backed value.
{
"inputs": [
{
"type": "promptString",
"id": "ntfy_token",
"description": "Ntfy Token",
"password": true
}
],
"servers": {
"ntfy-me-mcp": {
"command": "npx",
"args": ["-y", "ntfy-me-mcp"],
"env": {
"NTFY_TOPIC": "your-ntfy-topic",
"NTFY_URL": "https://your-ntfy-server.com",
"NTFY_TOKEN": "${input:ntfy_token}"
}
}
}
}
| Campo | Valor | Propósito |
|---|---|---|
env.NTFY_TOKEN | "${input:ntfy_token}" | Hace referencia al valor de token seguro respaldado por prompt |
inputs[].id | "ntfy_token" | Define el nombre de entrada utilizado por NTFY_TOKEN |
inputs[].type | "promptString" | Solicita al usuario el token en tiempo de ejecución |
Si el cliente resuelve
"${input:ntfy_token}"antes del lanzamiento, el servidor recibe el token real directamente. Si el marcador de posición se pasa sin cambios, ntfy-me-mcp detecta esa referencia de entrada no resuelta y solicita el token por sí mismo al inicio.Desde
v1.4.0+, la variable de entornoPROTECTED_TOPICse ha eliminado. Este manejo ahora se detecta automáticamente a partir de la referencia de entrada no resueltaNTFY_TOKEN.
Herramientas y uso
ntfy_me: Envío de notificaciones
Uso con lenguaje natural
- Cuando trabajes con tu asistente de IA, puedes usar frases naturales para solicitar notificaciones:
"ntfyme with a summary of the task when complete"
"Send me a notification when the build is complete"
"Notify me when the task is done"
"Alert me after generating the code"
"Message me when the process finishes"
"Send an alert with high priority"
Ejemplo de uso
| Entrada | Salida |
|---|---|
| |
Parámetros del Mensaje
| Parámetro | Descripción | Requerido | Detalles / Ejemplo |
|---|---|---|---|
title | El título de la notificación | Sí | — |
message | El cuerpo de la notificación | Sí | — |
url | URL personalizada del servidor ntfy | No | Predeterminado: NTFY_URL |
topic | Tema personalizado de ntfy | No | Predeterminado: NTFY_TOPIC |
accessToken | Token de acceso para temas protegidos | No | Predeterminado: NTFY_TOKEN |
priority | Nivel de prioridad del mensaje | No | Predeterminado: "default"Opciones: min, low, default, high, max |
tags | Matriz de etiquetas de notificación. Admite códigos cortos de emoji para indicadores visuales — consulte la lista completa. | No |
warning → ⚠️white_check_mark → ✅rocket → 🚀tada → 🎉
|
markdown | Booleano para habilitar el formato markdown. Se detecta automáticamente cuando hay sintaxis markdown presente (encabezados, listas, bloques de código, enlaces, negrita/cursiva) — no es necesario configurarlo explícitamente. Se puede anular manualmente. | No |
Detección automática: no se necesita configuración.Ejemplo de anulación manual
|
actions | Matriz de objetos de acción de vista para enlaces clicables. Las URL en el cuerpo del mensaje se detectan automáticamente (hasta 3 acciones). Para control manual, cada acción requiere action, label y url, con un indicador opcional clear. | No |
Ejemplo de detección automática
Crea automáticamente acciones de vista para las URL detectadas.
Ejemplo de configuración manual
|
ntfy_me_fetch: Consulta de Notificaciones
Uso de Lenguaje Natural
Los asistentes de IA entienden diversas formas de solicitar la recuperación de mensajes:
"Show me my recent notifications"
"Get messages from the last hour"
"Find notifications with title 'Build Complete'"
"Search for messages with the test_tube tag"
"Show notifications from the updates topic from the last 24hr"
"Check my latest alerts"
Ejemplo de Uso
| Entrada | Salida |
|---|---|
| |
Parámetros de Consulta
| Parámetro | Descripción | Requerido | Detalles / Ejemplo |
|---|---|---|---|
url | URL personalizada del servidor ntfy | No | Predeterminado: NTFY_URL |
topic | Tema del que recuperar mensajes | No | Predeterminado: NTFY_TOPIC{ "topic": "updates", "since": "all" } |
accessToken | Token de acceso para temas protegidos | No | Predeterminado: NTFY_TOKEN |
since | Cuánto tiempo hacia atrás recuperar mensajes | No |
Opciones: '10m', '1h', '1d', marca de tiempo, ID de mensaje o 'all'Ejemplo: { "since": "30m" }
|
messageId | Buscar un mensaje específico por su ID | No | { "messageId": "xxxxXXXXxxxx" } |
messageText | Buscar mensajes que contengan texto exacto | No | { "messageText": "Build Complete" } |
messageTitle | Buscar mensajes con título/asunto exacto | No | { "messageTitle": "Build Complete", "priorities": "high", "since": "1d" } |
priorities | Buscar mensajes con niveles de prioridad específicos | No | { "priorities": "high" } |
tags | Buscar mensajes con etiquetas específicas | No | { "tags": ["error", "warning"] } |
Desarrollo y Contribuciones
¡Las contribuciones son bienvenidas! Consulte CONTRIBUTING.md, que incluye pautas generales, pasos de configuración, etc.
Licencia
Este proyecto está bajo la Licencia Pública General GNU v3.0 — consulte el archivo LICENSE para más detalles.
Hecho con ❤️ por gitmotion
