Ntfy
Um servidor MCP ntfy para enviar/buscar notificações ntfy para seu servidor ntfy auto-hospedado a partir de Agentes de IA 📤 (suporta autenticação segura por token e mais - use com npx ou docker!)
Documentação
ntfy-me-mcp
Um servidor Model Context Protocol (MCP) simplificado para enviar notificações via serviço ntfy (público ou auto-hospedado com suporte a token) 📲
Visão Geral
O ntfy-me-mcp fornece aos assistentes de IA a capacidade de enviar notificações em tempo real para seus dispositivos através do serviço ntfy.sh (público ou auto-hospedado com suporte a token). Seja notificado quando sua IA concluir tarefas, encontrar erros ou atingir marcos importantes - tudo sem monitoramento constante.
O servidor inclui recursos inteligentes como detecção automática de URL para criar ações de visualização e detecção inteligente de formatação markdown, facilitando para assistentes de IA criar notificações ricas e interativas sem configuração extra.
| Prévia | Disponível via | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Recursos
- 🚀 Configuração Rápida: Execute com npx ou docker!
- 🔔 Notificações em Tempo Real: Receba atualizações no seu celular/desktop quando as tarefas forem concluídas
- 🎨 Notificações Ricas: Suporte para tópico, título, prioridades, tags de emoji e mensagens detalhadas
- 🔍 Busca de Notificações: Busque e filtre mensagens em cache dos seus tópicos ntfy
- 🎯 Links de Ação Inteligentes: Detecta automaticamente URLs em mensagens e cria ações de visualização
- 📄 Markdown Inteligente: Detecta e ativa automaticamente a formatação markdown quando presente
- 🔒 Seguro: Autenticação opcional com tokens de acesso
- 🔑 Mascaramento de Entrada: Armazene com segurança seu token ntfy na sua configuração vs!
- 🌐 Suporte a Auto-hospedagem: Funciona com ntfy.sh e instâncias ntfy auto-hospedadas
Em breve...
- 📨 E-mail: Envie notificações por e-mail (requer configuração do servidor de e-mail ntfy)
- 🔗 URLs de clique: Capacidade de personalizar URLs de clique
- 🖼️ URLs de imagem: Detecção inteligente de URL de imagem para incluir automaticamente URLs de imagem em mensagens e notificações
- 🏁 e mais!
Índice
Início Rápido - Configuração do Servidor MCP
Escolha a forma de configuração que corresponde ao seu cliente. Todos os exemplos abaixo usam NTFY_TOPIC como variável obrigatória e mantêm as configurações de autenticação opcionais comentadas até que você precise delas.
Exemplos de Configuração
| Tipo | Caso de Uso | Exemplo |
|---|---|---|
| NPM / NPX | Recomendado para a maioria dos clientes MCP quando você deseja a configuração mais leve. |
Mostrar configuração
|
| Local | Use um checkout local quando você estiver desenvolvendo ou alterando o próprio servidor.
Substitua /absolute/path/to/ntfy-me-mcp/build/index.js após a compilação.
|
Mostrar configuração
|
| Docker | Use uma configuração conteinerizada quando o Docker já fizer parte do seu ambiente.
- DockerHub: gitmotion/ntfy-me-mcp:latest- GHCR: ghcr.io/gitmotion/ntfy-me-mcp:latest
|
Mostrar configuração
|
| OpenCode | Adicione ao opencode.json na raiz do seu projeto (para configuração em nível de projeto) ou ao ~/.config/opencode/opencode.json (para configuração global). Usa "mcp" como chave de nível superior com type: "local" e command como um array. |
Mostrar configuração
|
| ClaudeCode | Adicione ao .mcp.json na raiz do seu projeto (compartilhado com sua equipe via controle de versão), ou ao ~/.claude.json para acesso em nível de usuário em todos os projetos. |
Mostrar configuração
|
| Copilot CLI | Adicione ao ~/.copilot/mcp-config.json para acesso em nível de usuário em todas as sessões. Use type: "local" para servidores baseados em stdio como este. |
Mostrar configuração
|
| Autenticação por Token | Necessário para tópicos protegidos ou servidores auto-hospedados. Consulte Manuseio Seguro de Token (vscode) ou defina NTFY_TOKEN diretamente. |
Mostrar configuração
|
Instalação
Se você precisar instalar e executar o servidor diretamente (alternativa à configuração MCP acima):
| Opção | Exemplo |
|---|---|
| Instalar globalmente Instale uma vez, execute em qualquer lugar com o comando ntfy-me-mcp. |
npm install -g ntfy-me-mcp
|
| Executar com npx Sem necessidade de instalação — ideal para uma execução rápida e única ou para testes. |
npx ntfy-me-mcp
|
| Instalar localmente Clone o repositório, instale as dependências, compile e execute via npm start. |
Mostrar etapas
|
| MCP Marketplace — Smithery Instalação com um comando para Claude Desktop via Smithery. |
Mostrar comando
|
Configurando o Receptor de Notificações
Ver seção do receptor ntfy
- Instale o aplicativo ntfy no seu dispositivo
- ou implante seu próprio servidor ntfy: https://docs.ntfy.sh/install/
- Assine o tópico escolhido (o mesmo da sua configuração
NTFY_TOPIC)
Configuração
Variáveis de Ambiente
Crie um arquivo .env copiando o exemplo: cp .env.example .env — consulte .env.example para referência.
| Variável | Obrigatória | Padrão | Descrição |
|---|---|---|---|
NTFY_TOPIC | Sim | — | O tópico ntfy para publicar notificações |
NTFY_URL | Não | https://ntfy.sh | URL do servidor ntfy — altere para instâncias auto-hospedadas (inclua a porta se necessário, ex.: https://your-server.com:8443) |
NTFY_TOKEN | Não | — | Token de acesso para tópicos protegidos ou servidores privados |
Autenticação
Ver seção de Autenticação
Este servidor MCP suporta endpoints ntfy autenticados e não autenticados:
- Tópicos Públicos: Ao usar tópicos públicos no ntfy.sh ou em outros servidores públicos, nenhuma autenticação é necessária.
- Tópicos Protegidos:
- Para tópicos protegidos ou servidores privados, você precisa fornecer um token de acesso via variável de ambiente
NTFY_TOKENou no parâmetroaccessTokenda ferramenta. - Se a autenticação for necessária, mas não for fornecida, você receberá uma mensagem de erro clara explicando como adicionar seu token.
- Para tópicos protegidos ou servidores privados, você precisa fornecer um token de acesso via variável de ambiente
Manuseio Seguro de Token (vscode)
- Se o seu cliente suportar entradas secretas baseadas em prompt (ou seja, VS Code), prefira isso em vez de codificar
NTFY_TOKENem arquivos de configuração. (Caso contrário, use seu token diretamente) - Use valores correspondentes como estes no seu arquivo
mcp.json:
Mostrar exemplo de mcp.json do 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 | Finalidade |
|---|---|---|
env.NTFY_TOKEN | "${input:ntfy_token}" | Referencia o valor do token seguro com suporte a prompt |
inputs[].id | "ntfy_token" | Define o nome da entrada usado por NTFY_TOKEN |
inputs[].type | "promptString" | Solicita ao usuário o token em tempo de execução |
Se o cliente resolver
"${input:ntfy_token}"antes da inicialização, o servidor recebe o token real diretamente. Se o espaço reservado for passado sem alterações, o ntfy-me-mcp detecta essa referência de entrada não resolvida e solicita o token por conta própria na inicialização.Desde
v1.4.0+, a variável de ambientePROTECTED_TOPICfoi removida. Esse manuseio agora é detectado automaticamente a partir da referência de entrada não resolvidaNTFY_TOKEN.
Ferramentas e Uso
ntfy_me: Enviando Notificações
Usando Linguagem Natural
- Ao trabalhar com seu assistente de IA, você pode usar frases naturais para solicitar notificações:
"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"
Exemplo de Uso
| Entrada | Saída |
|---|---|
| |
Parâmetros da Mensagem
| Parâmetro | Descrição | Obrigatório | Detalhes / Exemplo |
|---|---|---|---|
title | O título da notificação | Sim | — |
message | O corpo da notificação | Sim | — |
url | URL personalizada do servidor ntfy | Não | Padrão: NTFY_URL |
topic | Tópico ntfy personalizado | Não | Padrão: NTFY_TOPIC |
accessToken | Token de acesso para tópicos protegidos | Não | Padrão: NTFY_TOKEN |
priority | Nível de prioridade da mensagem | Não | Padrão: "default"Opções: min, low, default, high, max |
tags | Matriz de tags de notificação. Suporta códigos curtos de emoji para indicadores visuais — veja a lista completa. | Não |
warning → ⚠️white_check_mark → ✅rocket → 🚀tada → 🎉
|
markdown | Booleano para habilitar a formatação markdown. Detectado automaticamente quando há sintaxe markdown presente (cabeçalhos, listas, blocos de código, links, negrito/itálico) — não é necessário definir explicitamente. Pode ser sobrescrito manualmente. | Não |
Detecção automática: nenhuma configuração necessária.Exemplo de sobrescrita manual
|
actions | Matriz de objetos de ação de visualização para links clicáveis. URLs no corpo da mensagem são detectadas automaticamente (até 3 ações). Para controle manual, cada ação requer action, label e url, com um sinalizador opcional clear. | Não |
Exemplo de detecção automática
Cria automaticamente ações de visualização para URLs detectadas.
Exemplo de configuração manual
|
ntfy_me_fetch: Consultando Notificações
Usando Linguagem Natural
Assistentes de IA entendem várias maneiras de solicitar a busca de mensagens:
"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"
Exemplo de Uso
| Entrada | Saída |
|---|---|
| |
Parâmetros de Busca
| Parâmetro | Descrição | Obrigatório | Detalhes / Exemplo |
|---|---|---|---|
url | URL personalizada do servidor ntfy | Não | Padrão: NTFY_URL |
topic | Tópico do qual buscar mensagens | Não | Padrão: NTFY_TOPIC{ "topic": "updates", "since": "all" } |
accessToken | Token de acesso para tópicos protegidos | Não | Padrão: NTFY_TOKEN |
since | Até onde voltar para recuperar mensagens | Não |
Opções: '10m', '1h', '1d', timestamp, ID da mensagem ou 'all'Exemplo: { "since": "30m" }
|
messageId | Encontrar uma mensagem específica pelo seu ID | Não | { "messageId": "xxxxXXXXxxxx" } |
messageText | Encontrar mensagens contendo texto exato | Não | { "messageText": "Build Complete" } |
messageTitle | Encontrar mensagens com título/assunto exato | Não | { "messageTitle": "Build Complete", "priorities": "high", "since": "1d" } |
priorities | Encontrar mensagens com níveis de prioridade específicos | Não | { "priorities": "high" } |
tags | Encontrar mensagens com tags específicas | Não | { "tags": ["error", "warning"] } |
Desenvolvimento e Contribuições
Contribuições são bem-vindas! Consulte CONTRIBUTING.md, que inclui diretrizes gerais, etapas de configuração, etc.
Licença
Este projeto está licenciado sob a GNU General Public License v3.0 — consulte o arquivo LICENSE para detalhes.
Feito com ❤️ por gitmotion
