remote-capable server
The server can be hosted and run remotely because it primarily relies on remote services or has no dependency on the local environment.
Integrations
Enables sending notifications to any device with ntfy integration, supporting rich message formatting with titles, tags, priorities, action buttons, and attachments for real-time notifications to phones, desktops, and other devices.
Servidor MCP de Ntfy
Un servidor MCP (Protocolo de Contexto de Modelo) diseñado para interactuar con el servicio de notificaciones push ntfy . Permite que los LLM y los agentes de IA envíen notificaciones a sus dispositivos con amplias opciones de personalización.
Tabla de contenido
- Descripción general
- Características
- Inicio rápido
- Instalación
- Configuración
- Estructura del proyecto
- Herramientas
- Recursos
- Casos de uso
- Scripts disponibles
- Contribuyendo
- Licencia
Descripción general
Este servidor implementa el Protocolo de Contexto de Modelo (MCP), lo que permite la comunicación estandarizada entre los LLM y los sistemas externos. En concreto, proporciona una interfaz con el servicio de notificaciones push ntfy.
Ntfy es un sencillo servicio de notificaciones de publicación y suscripción basado en HTTP que permite enviar notificaciones a su teléfono o computadora mediante simples solicitudes HTTP. Con este servidor MCP, agentes LLM como Claude pueden enviarle notificaciones a través de ntfy sin necesidad de acceso HTTP directo.
Características
- Implementación del servidor MCP: creado utilizando
@modelcontextprotocol/sdk
para una integración perfecta con agentes LLM. - Integración con Ntfy: proporciona una herramienta (
send_ntfy
) para enviar notificaciones con soporte para:- Priorización de mensajes (1-5 niveles)
- Etiquetas emoji
- Acciones y botones en los que se puede hacer clic
- Archivos adjuntos
- Entrega retrasada
- Formato Markdown
- Exposición de recursos: expone el tema ntfy predeterminado configurado como un recurso MCP.
- TypeScript: base de código moderna y segura con definiciones de tipos integrales.
- Registro estructurado: utiliza
winston
ywinston-daily-rotate-file
para obtener registros detallados y rotativos. - Gestión de la configuración: utiliza
dotenv
para una fácil configuración basada en el entorno. - Scripts de utilidad: incluye scripts para limpiar artefactos de compilación y generar documentación de la estructura de directorios.
- Manejo de errores y seguridad: implementa un manejo robusto de errores, desinfección de entrada (
sanitize-html
) y filtros de seguridad (xss-filters
).
Inicio rápido
- Prerrequisitos:
- Node.js (v16+)
- npm o hilo
- Un cliente compatible con MCP (Claude Desktop, Cline, etc.)
- Instalar y ejecutar:Copy
- Agregar a la configuración del cliente MCP: agregue el servidor a su archivo de configuración del cliente MCP (consulte Configuración )
- Usar la herramienta: Una vez conectado, puedes usar la herramienta
send_ntfy
para enviar notificaciones.
Instalación
Opción 1: Paquete NPM (recomendado)
- Instalar el paquete globalmente:Esto instalará el servidor globalmente, haciéndolo disponible como una herramienta de línea de comandos.Copy
- O instalarlo localmente en su proyecto:Cuando se instala localmente, puedes ejecutarlo a través de npx o desde el nodo.Copy
Opción 2: Desde la fuente
- Clonar el repositorio:Copy
- Instalar dependencias:Copy
- Construir el proyecto:Copy
Configuración
Variables de entorno
Cree un archivo .env
en la raíz del proyecto basado en .env.example
:
Configuración del cliente MCP
Para la extensión Cline VSCode
Agregue la siguiente configuración a su archivo de configuración de Cline MCP (generalmente ubicado en ~/Library/Application Support/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json
en macOS):
Si se instala globalmente:
Si se instala desde la fuente:
Para la aplicación de escritorio de Claude
Agregue la siguiente configuración a su archivo de configuración de Claude Desktop (generalmente ubicado en ~/Library/Application Support/Claude/claude_desktop_config.json
en macOS):
Si se instala globalmente:
Si se instala desde la fuente:
Para la instalación del código fuente, reemplace /path/to/ntfy-mcp-server/dist/index.js
con la ruta absoluta del archivo del servidor compilado. Ajuste las variables env
según sea necesario para su configuración.
Configuración de Ntfy
- Instale la aplicación ntfy en sus dispositivos desde ntfy.sh o las tiendas de aplicaciones
- Suscríbete a tu tema en la aplicación
- Utilice el mismo tema en la configuración de su servidor MCP
Estructura del proyecto
Herramientas
send_ntfy
Envía un mensaje de notificación a través del servicio ntfy.
Argumentos clave:
Parámetro | Tipo | Requerido | Descripción |
---|---|---|---|
topic | cadena | Sí | El tema de ntfy para publicar. |
message | cadena | Sí | El contenido principal de la notificación (máximo 4096 bytes). |
title | cadena | No | Título de la notificación (máximo 250 bytes). |
tags | cadena[] | No | Emojis o palabras clave para categorizar (p. ej., ["warning", "robot"] ). Máximo 5. |
priority | entero | No | Prioridad del mensaje: 1=mín., 2=baja, 3=predeterminada, 4=alta, 5=máx. |
click | cadena | No | URL para abrir cuando se hace clic en la notificación. |
actions | formación | No | Botones de acción (ver, http, transmitir). Máximo 3. |
attachment | objeto | No | URL y nombre de un archivo adjunto. |
email | cadena | No | Dirección de correo electrónico a la que reenviar la notificación. |
delay | cadena | No | Retrasar la entrega (por ejemplo, 30m , 1h , tomorrow ). |
cache | cadena | No | Duración de la caché (por ejemplo, 10m , 1h , 1d ). |
firebase | cadena | No | Tema de Firebase Cloud Messaging (FCM) al que reenviar. |
id | cadena | No | Identificador único para el mensaje. |
expires | cadena | No | Caducidad del mensaje (por ejemplo, 10m , 1h , 1d ). |
markdown | booleano | No | Establezca como true para habilitar el formato Markdown en el mensaje. |
baseUrl | cadena | No | Anular la URL del servidor ntfy predeterminada para esta solicitud. |
Ejemplo de uso:
Ejemplo de respuesta:
Recursos
Recursos directos
ntfy://default
- Descripción: Devuelve el tema ntfy predeterminado configurado en las variables de entorno del servidor (
NTFY_DEFAULT_TOPIC
). - Uso: Útil para que los clientes descubran el tema principal sin necesidad de configuración previa.
- Ejemplo: un agente LLM puede acceder a este recurso para utilizar automáticamente el tema predeterminado al enviar notificaciones.
- Ejemplo de respuesta:Copy
Plantillas de recursos
ntfy://{topic}
- Descripción: Devuelve información sobre un tema ntfy específico.
- Parámetros:
topic
– El nombre del tema ntfy. - Uso: Para consultar información sobre temas distintos a los predeterminados.
- Ejemplo de respuesta:Copy
Casos de uso
- Notificaciones de tareas de larga ejecución : reciba notificaciones cuando se completen tareas como copias de seguridad de bases de datos, generación de código o procesamiento de datos.
- Recordatorios programados : configure notificaciones retrasadas para futuros eventos o recordatorios.
- Sistemas de alerta : configure alertas críticas para monitorear sistemas o eventos importantes.
- Notificaciones móviles de LLMs : permita que los LLMs envíen notificaciones directamente a su teléfono.
- Actualizaciones de procesos de varios pasos : reciba actualizaciones a medida que se completan las diferentes etapas de un proceso complejo.
Ejemplos de uso
Notificación básica
Notificación enriquecida con acciones
Scripts disponibles
npm run build
: compila el código fuente de TypeScript a JavaScript en el directoriodist/
.npm run clean
: elimina el directoriodist/
y limpia el contenido del directoriologs/
.npm run rebuild
: ejecutaclean
y luegobuild
.npm run tree
: genera una representación de árbol de directorios endocs/tree.md
.npm start
: ejecuta el servidor compilado desde el directoriodist/
usando Node.js.npm run watch
: sigue el archivo de registro combinado (logs/combined.log
) para monitoreo en tiempo real.
Contribuyendo
¡Agradecemos sus contribuciones! No dude en enviar solicitudes de incorporación de cambios o abrir problemas para mejorar el proyecto.
- Bifurcar el repositorio.
- Crea una rama de características (
git checkout -b feature/your-feature
). - Confirme sus cambios (
git commit -m 'Add some feature'
). - Empujar a la rama (
git push origin feature/your-feature
). - Crear una nueva solicitud de extracción.
Para errores y solicitudes de funciones, cree un problema en el repositorio.
Mejores prácticas de desarrollo
- Siga las mejores prácticas de TypeScript y mantenga una tipificación sólida
- Escribir pruebas para nuevas funcionalidades
- Mantenga las dependencias actualizadas
- Siga el estilo y los patrones de código existentes
Licencia
Este proyecto está licenciado bajo la licencia Apache-2.0. Consulte el archivo de licencia para más detalles.
Expresiones de gratitud
- ntfy.sh para proporcionar el servicio de notificación
- Protocolo de contexto de modelo para habilitar conexiones de LLM a herramientas
- Todos los colaboradores y usuarios de este proyecto
This server cannot be installed
Un servidor de protocolo de contexto modelo que permite que los sistemas de IA envíen notificaciones en tiempo real a teléfonos, computadoras de escritorio y otros dispositivos a través del servicio de publicación/suscripción ntfy.