ntfy-me-mcp

by gitmotion
Verified

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

  • Allows configuration of the server using environment variables stored in .env files, supporting settings for notification topics, server URLs, and authentication tokens.

  • Provides containerized deployment option with official Docker images available on Docker Hub and GitHub Container Registry for running the server in a containerized environment.

  • Supports rich text formatting in notifications, with automatic detection and rendering of markdown syntax for creating formatted lists, code blocks, links, tables, and other text styling.

📤 ntfy-me-mcp

Un servidor de Protocolo de Contexto de Modelo (MCP) optimizado para enviar notificaciones a través del servicio ntfy (público o autoalojado con soporte de token) 📲

Descripción general

ntfy-me-mcp permite a los asistentes de IA enviar notificaciones en tiempo real a sus dispositivos a través del servicio ntfy (público o alojado por ellos mismos con soporte para tokens). Reciba notificaciones cuando su IA complete tareas, detecte errores o alcance hitos importantes, todo sin necesidad de supervisión constante.

El servidor incluye funciones inteligentes como detección automática de URL para crear acciones de visualización y detección inteligente de formato de rebajas, lo que facilita que los asistentes de IA creen notificaciones interactivas y enriquecidas sin configuración adicional.

Disponible a través de:

NombreEnlace/Insignia
Glama.ai
Smithery.ai

Tabla de contenido

Características

  • 🚀 Configuración rápida : ¡Ejecútalo con npx o docker!
  • 🔔 Notificaciones en tiempo real : Recibe actualizaciones en tu teléfono/computadora de escritorio cuando se completen las tareas
  • 🎨 Notificaciones enriquecidas : Compatibilidad con temas, títulos, prioridades, etiquetas emoji y mensajes detallados
  • 🔍 Obtención de notificaciones : recupera y filtra mensajes almacenados en caché de tus temas ntfy
  • 🎯 Enlaces de acción inteligente : detecta automáticamente las URL en los mensajes y crea acciones de visualización
  • 📄 Markdown inteligente : detecta automáticamente y habilita el formato Markdown cuando está presente
  • 🔒 Seguro : Autenticación opcional con tokens de acceso
  • 🔑 Enmascaramiento de entrada : ¡Almacene de forma segura su token ntfy en su configuración vs!
  • 🌐 Soporte autohospedado : funciona tanto con ntfy.sh como con instancias ntfy autohospedadas

(Muy pronto...)

  • 📨 Correo electrónico : envía notificaciones al correo electrónico (requiere configuración del servidor de correo electrónico ntfy)
  • 🔗 URL de clic : Posibilidad de personalizar las URL de clic
  • 🖼️ URL de imágenes : detección inteligente de URL de imágenes para incluir automáticamente URL de imágenes en mensajes y notificaciones
  • 🏁¡y mucho más!

Inicio rápido: Configuración del servidor MCP

NPM / NPX (Método recomendado)

  • Requiere tener npm / npx instalado en su sistema.
  • Este método se recomienda para la mayoría de los usuarios, ya que proporciona un método simple y liviano para configurar el servidor.

Para una configuración más sencilla con asistentes compatibles con MCP, agregue esto a su configuración de MCP:

Configuración mínima (para temas públicos en ntfy.sh)

{ "ntfy-me-mcp": { "command": "npx", "args": ["ntfy-me-mcp"], "env": { "NTFY_TOPIC": "your-topic-name" } } }

Configuración completa (para servidores privados o temas protegidos)

Opción 1: Token directo en la configuración

{ "ntfy-me-mcp": { "command": "npx", "args": ["ntfy-me-mcp"], "env": { "NTFY_TOPIC": "your-topic-name", "NTFY_URL": "https://your-ntfy-server.com", "NTFY_TOKEN": "your-auth-token" // Use if using a protected topic/server } } }

Opción 2: Usar entradas de VS Code para el manejo seguro de tokens (recomendado)

Agregue esto a su archivo settings.json de VS Code:

"mcp": { "inputs": [ { // Add this to your inputs array "type": "promptString", "id": "ntfy_token", "description": "Ntfy Token", "password": true } ], "servers": { // Other servers... "ntfy-me-mcp": { "command": "npx", "args": ["ntfy-me-mcp"], "env": { "NTFY_TOPIC": "your-topic-name", "NTFY_URL": "https://your-ntfy-server.com", "NTFY_TOKEN": "${input:ntfy_token}", // Use the input id variable for the token "PROTECTED_TOPIC": "true" // Prompts for token and masks it in your config } } } }

Con esta configuración, VS Code le solicitará el token al iniciar el servidor y el token quedará oculto al ingresarlo.

Estibador

Uso con MCP en Docker

  • Requiere tener Docker instalado en su sistema.
  • Este método es útil para ejecutar el servidor en un entorno de contenedores.
  • Puede utilizar las imágenes oficiales de Docker disponibles en Docker Hub o GitHub Container Registry.

Imágenes de Docker:

  • gitmotion/ntfy-me-mcp:latest (Docker Hub)
  • ghcr.io/gitmotion/ntfy-me-mcp:latest (Registro de contenedores de GitHub)

En su configuración de MCP (por ejemplo, VS Code settings.json):

"mcp": { "servers": { "ntfy-mcp": { "command": "docker", "args": [ "run", "-i", "--rm", "-e", "NTFY_TOPIC", "-e", "NTFY_URL", "-e", "NTFY_TOKEN", "-e", "PROTECTED_TOPIC", "gitmotion/ntfy-me-mcp", // OR use ghcr.io/gitmotion/ntfy-me-mcp:latest ], "env": { "NTFY_TOPIC": "your-topic-name", "NTFY_URL": "https://your-ntfy-server.com", "NTFY_TOKEN": "${input:ntfy_token}", "PROTECTED_TOPIC": "true" } } } }

Instalación

Si necesita instalar y ejecutar el servidor directamente (alternativa a la configuración MCP anterior):

Opción 1: Instalar globalmente

npm install -g ntfy-me-mcp

Opción 2: Ejecutar con npx

npx ntfy-me-mcp

Opción 3: Instalar localmente

# Clone the repository git clone https://github.com/gitmotion/ntfy-me-mcp.git cd ntfy-me-mcp # Install dependencies npm install # Copy the example environment file and configure it cp .env.example .env # Edit .env with your preferred editor and update the variables # nano .env # or use your preferred editor # Build the project npm run build # Start the server npm start

Opción 4: Construir y usar localmente con el comando de nodo

Si está desarrollando o personalizando el servidor, es posible que desee ejecutarlo directamente con el nodo:

# Clone the repository git clone https://github.com/gitmotion/ntfy-me-mcp.git cd ntfy-me-mcp # Install dependencies npm install # Copy the example environment file and configure it cp .env.example .env # Edit the .env file to set your NTFY_TOPIC and other optional settings # nano .env # or use your preferred editor # Build the project npm run build # Run using node directly npm start

Uso de un servidor creado localmente con MCP

Al configurar su MCP para usar una versión compilada localmente, especifique el comando de nodo y la ruta al archivo index.js compilado:

{ "ntfy-me": { "command": "node", "args": ["/path/to/ntfy-mcp/build/index.js"], "env": { "NTFY_TOPIC": "your-topic-name", //"NTFY_URL": "https://your-ntfy-server.com", // Use if using a self-hosted server //"NTFY_TOKEN": "your-auth-token" // Use if using a protected topic/server } } }

Recuerde utilizar la ruta absoluta a su archivo build/index.js en la matriz args.

Opción 5: Instalaciones de MCP Marketplace

Instalación mediante herrería

Para instalar ntfy-me-mcp para Claude Desktop automáticamente a través de Smithery :

npx -y @smithery/cli install @gitmotion/ntfy-me-mcp --client claude

Configuración

Variables de entorno

Cree un archivo .env en el directorio de su proyecto copiando el ejemplo proporcionado:

# Copy the example file cp .env.example .env # Edit the file with your preferred editor nano .env # or vim, code, etc.

Su archivo .env debe contener estas variables:

# Required NTFY_TOPIC=your-topic-name # Optional - Configure these if using a private/protected ntfy server # NTFY_URL=https://ntfy.sh # Default is ntfy.sh, change to your self-hosted ntfy server URL if needed # Include port if needed, e.g., https://your-ntfy-server.com:8443 # NTFY_TOKEN=your-access-token # Required for authentication with protected topics/servers # PROTECTED_TOPIC=false # Set to "true" if your topic requires authentication (helps prevent auth errors)

Nota : El indicador PROTECTED_TOPIC ayuda a la aplicación a determinar si se requiere autenticación para su tema. Si se establece en "true" y no se proporciona ningún token, se le solicitará que lo ingrese. Esto evita errores de autenticación con temas protegidos.

Uso

Autenticación

Este servidor admite puntos finales ntfy autenticados y no autenticados:

  • Temas públicos : al utilizar temas públicos en ntfy.sh u otros servidores públicos, no se requiere autenticación.
  • Temas protegidos : para temas protegidos o servidores privados, debe proporcionar un token de acceso.

Si se requiere autenticación pero no se proporciona, recibirá un mensaje de error claro que explica cómo agregar su token.

Configuración del receptor de notificaciones

  1. Instale la aplicación ntfy en su dispositivo
  2. Suscríbete al tema elegido (el mismo que tu configuración NTFY_TOPIC )

Envío de notificaciones (herramienta ntfy_me)

Esta sección cubre todas las funciones relacionadas con el envío de notificaciones mediante la herramienta ntfy_me.

Usando lenguaje natural

Al trabajar con su asistente de IA, puede utilizar frases naturales como:

"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"

Parámetros del mensaje

La herramienta acepta estos parámetros:

ParámetroDescripciónRequerido
Título de la tareaEl título de la notificación
Resumen de tareasEl cuerpo de la notificación
prioridadPrioridad del mensaje: mínima, baja, predeterminada, alta, máximaNo
etiquetasMatriz de etiquetas de notificación (admite códigos cortos de emojis)No
reducciónBooleano para habilitar el formato Markdown (verdadero/falso)No
comportamientoMatriz de objetos de acción de vista para enlaces en los que se puede hacer clicNo

Ejemplo:

{ taskTitle: "Code Generation Complete", taskSummary: "Your React component has been created successfully with proper TypeScript typing.", priority: "high", tags: ["check", "code", "react"] }

Esto enviará una notificación de alta prioridad con un emoji de marca de verificación.

Enlaces de acción

Puede agregar botones de acción en los que se pueda hacer clic a sus notificaciones usando el parámetro actions o dejar que el servidor detecte automáticamente las URL en su mensaje.

Detección automática de URL

Cuando hay URL en el cuerpo del mensaje, el servidor crea automáticamente hasta tres acciones de visualización (el límite máximo de ntfy) a partir de las primeras URL detectadas. Esto facilita la inclusión de enlaces clicables sin tener que especificar manualmente la matriz de acciones.

Por ejemplo, este mensaje:

{ taskTitle: "Build Complete", taskSummary: "Your PR has been merged! View the changes at https://github.com/org/repo/pull/123 or check the deployment at https://staging.app.com" }

Generará automáticamente acciones de visualización para ambas URL, lo que hará que sea más fácil hacer clic en ellas en la notificación.

Configuración de acciones manuales

Para obtener más control, puede especificar acciones manualmente:

PropiedadDescripciónRequerido
acciónDebe ser "vista"
etiquetaTexto del botón para mostrar
URLURL para abrir al hacer clic
claroSi desea borrar la notificación al hacer clic (opcional)No

Ejemplo con enlaces de acción:

{ taskTitle: "Pull Request Review", taskSummary: "Your code has been reviewed and is ready for final checks", priority: "high", tags: ["check", "code"], actions: [ { action: "view", label: "View PR", url: "https://github.com/org/repo/pull/123" }, { action: "view", label: "View Changes", url: "https://github.com/org/repo/pull/123/files", clear: true } ] }

Códigos cortos de emojis

Puedes usar códigos cortos de emojis en tus etiquetas para indicadores visuales:

  • warning → ⚠️
  • check → ✅
  • rocket → 🚀
  • tada → 🎉

Vea la lista completa de códigos cortos de emojis compatibles .

Formato Markdown

¡Tus notificaciones admiten formato Markdown enriquecido con detección inteligente! Al incluir sintaxis Markdown en taskSummary , el servidor la detecta automáticamente y habilita el análisis de Markdown; no es necesario configurar markdown: true explícitamente.

Detección automática

El servidor busca patrones de rebajas comunes como:

  • Encabezados (#, ##, etc.)
  • Listas (-, *, números)
  • Bloques de código (```)
  • Enlaces ( texto )
  • Negrita/cursiva ( texto , texto )

Cuando se detectan estos patrones, el análisis de Markdown se habilita automáticamente para el mensaje.

Anulación manual

Si bien la detección automática funciona en la mayoría de los casos, aún puedes controlar explícitamente el análisis de Markdown:

{ taskTitle: "Task Complete", taskSummary: "Regular plain text message", markdown: false // Force disable markdown parsing }

Recuperación de mensajes (herramienta ntfy_me_fetch)

Esta sección cubre todas las funciones relacionadas con la obtención y el filtrado de mensajes mediante la herramienta ntfy_me_fetch.

Usando lenguaje natural

Los asistentes de IA comprenden varias formas de solicitar la obtenció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"

Parámetros del mensaje

La herramienta acepta estos parámetros:

ParámetroDescripciónRequerido
Tema de ntfyTema del cual obtener mensajes (el valor predeterminado es la variable de entorno NTFY_TOPIC)No
desde¿Hasta dónde recuperar los mensajes ('10m', '1h', '1d', marca de tiempo, ID del mensaje o 'todos')?No
ID del mensajeEncuentra un mensaje específico por su IDNo
mensajeTextoEncuentre mensajes que contengan contenido de texto exactoNo
Título del mensajeEncuentra mensajes con título/asunto exactoNo
prioridadesEncuentra mensajes con niveles de prioridad específicosNo
etiquetasEncuentra mensajes con etiquetas específicasNo

Ejemplos

  1. Obtener mensajes recientes
{ since: "30m" // Get messages from last 30 minutes }
  1. Filtrar por título y prioridad
{ messageTitle: "Build Complete", priorities: "high", since: "1d" }
  1. Buscar diferentes temas con etiquetas
{ ntfyTopic: "updates", tags: ["error", "warning"], since: "all" }
  1. Encontrar mensaje específico
{ messageId: "xxxxXXXXxxxx" }

Los mensajes se devuelven con detalles completos que incluyen:

  • ID del mensaje y marca de tiempo
  • Tema y título
  • Contenido y prioridad
  • Etiquetas y archivos adjuntos
  • Enlaces de acción y vencimiento

Nota : La disponibilidad del historial de mensajes depende de la configuración de caché de su servidor ntfy. El servidor público ntfy.sh suele almacenar los mensajes en caché durante 12 horas.

Desarrollo

Construyendo desde la fuente

git clone https://github.com/gitmotion/ntfy-me-mcp.git cd ntfy-me-mcp npm install npm run build

Licencia

Este proyecto está licenciado bajo la Licencia Pública General GNU v3.0 - consulte el archivo LICENCIA para obtener más detalles.

Contribuyendo

¡Agradecemos sus contribuciones! No dude en enviar una solicitud de incorporación de cambios.


Hecho con ❤️ por gitmotion

ID: fmis2ffviw