MCP Server Notifier

Um serviço de notificação leve que envia webhooks para tarefas MCP concluídas para provedores como Discord, Slack e Teams.

Documentação

MCP Server Notifier

Um serviço de notificação leve que se integra ao MCP (Model Context Protocol) para enviar webhooks quando agentes de IA concluem tarefas.

简体中文文档

MCP Server Notifier

Autores

Originalmente criado por tuberrabbit@gmail.com.
Atualmente mantido por zudsniper.

Recursos

  • Notificações via Webhook: Receba alertas quando seus agentes de IA concluírem tarefas
  • Múltiplos Provedores de Webhook: Suporte para Discord, Slack, Microsoft Teams, Feishu, Ntfy e webhooks personalizados
  • Suporte a Imagens: Inclua imagens nas notificações via Imgur
  • Suporte a Múltiplos Projetos: Gerencie notificações de forma eficiente em diferentes projetos
  • Integração Fácil: Configuração simples com ferramentas de IA como Cursor
  • Mensagens Personalizáveis: Envie notificações personalizadas com título, corpo e links

Instalação

Opção 1: Usando npm

npm install -g mcp-server-notifier

Opção 2: Usando Docker

docker pull zudsniper/mcp-server-notifier:latest

# Run with environment variables
docker run -e WEBHOOK_URL=https://your-webhook-url -e WEBHOOK_TYPE=discord zudsniper/mcp-server-notifier

Opção 3: A partir do código-fonte

git clone https://github.com/zudsniper/mcp-server-notifier.git
cd mcp-server-notifier
npm install
npm run build

Integração

Integração com Cursor

  1. Vá para 'Cursor Settings'
  2. Clique em MCP na barra lateral e depois clique em + Add new global MCP server
  3. Adicione mcp-server-notifier.
{
   "mcpServers": {
      "notifier": {
         "command": "npx",
         "args": [
            "-y",
            "mcp-server-notifier"
         ],
         "env": {
            "WEBHOOK_URL": "https://ntfy.sh/webhook-url-example",
            "WEBHOOK_TYPE": "ntfy"
         }
      }
   }
}

Configuração

Por padrão, o notificador suporta vários tipos de webhook:

  • Discord
  • Slack
  • Microsoft Teams
  • Feishu
  • Ntfy
  • JSON Genérico

Você pode especificar o tipo de webhook e a URL por meio de variáveis de ambiente:

env WEBHOOK_URL="https://your-webhook-url" WEBHOOK_TYPE="discord" npx -y mcp-server-notifier

Tokens de Autenticação

WEBHOOK_TOKEN é uma variável de ambiente opcional. Quando definida, ela será incluída como um token Bearer no cabeçalho Authorization apenas para requisições de webhook ntfy. Se WEBHOOK_TOKEN não estiver definida, nenhum cabeçalho Authorization será enviado.

  • Autenticação Básica não é suportada.
  • Este token é ignorado por todos os outros provedores de webhook (Discord, Slack, Teams, Feishu, JSON Genérico).

Exemplo:

env WEBHOOK_URL="https://ntfy.sh/your-topic" WEBHOOK_TYPE="ntfy" WEBHOOK_TOKEN="your-secret-token" npx -y mcp-server-notifier

Arquivo de Configuração

Para configurações mais avançadas, você pode criar um arquivo webhook-config.json:

{
  "webhook": {
    "type": "discord",
    "url": "https://discord.com/api/webhooks/your-webhook-url",
    "name": "My Notifier"
  },
  "imgur": {
    "clientId": "your-imgur-client-id"
  }
}

Consulte o Guia de Configuração para detalhes completos e exemplos.

Uso

  • Peça ao seu agente de IA para notificá-lo com uma mensagem personalizada quando uma tarefa for concluída
  • Configure como uma regra persistente nas configurações do Cursor para evitar repetir a configuração

Para instruções detalhadas de uso, consulte o Guia de Uso.

Ferramentas Disponíveis

  1. notify
    • Finalidade: Enviar notificações ricas para qualquer webhook configurado
    • Entrada:
      • message - Conteúdo de texto da notificação
      • title (opcional) - Título da notificação
      • link (opcional) - URL para incluir na notificação (usada como ação de clique para ntfy)
      • imageUrl (opcional) - URL de uma imagem para incluir (legado, use image ou attachments)
      • image (opcional) - Caminho local de uma imagem para enviar ao Imgur
      • priority (opcional, apenas ntfy) - Prioridade da notificação (1-5)
      • attachments (opcional, apenas ntfy) - Matriz de URLs para anexar
      • template (opcional, apenas ntfy) - Modelo predefinido a usar: status, question, progress, problem
      • templateData (opcional, apenas ntfy) - Dados para preencher o modelo escolhido
      • actions (opcional, apenas ntfy) - Matriz de definições de botões de ação (view ou http)
    • Melhor para: Necessidades gerais de notificação

Nota: A funcionalidade de modelos está atualmente em desenvolvimento e tem suporte limitado. Os modelos funcionam melhor com ntfy.sh, mas podem não estar totalmente implementados para todos os provedores de webhook. Consulte o arquivo ROADMAP.md para planos de implementação futuros.

Modelos NTFY

Ao usar ntfy.sh como seu provedor de webhook, você pode usar os seguintes modelos predefinidos:

  1. Modelo de Status (status)

    • Finalidade: Enviar atualizações de status sobre sistemas, processos ou tarefas
    • Campos de Dados:
      • status - Status atual (ex.: "online", "completed", "pending")
      • details (opcional) - Informações adicionais sobre o status
      • timestamp (opcional) - Quando este status foi registrado
      • component (opcional) - O componente do sistema ao qual este status se aplica
  2. Modelo de Pergunta (question)

    • Finalidade: Fazer perguntas que exigem uma resposta
    • Campos de Dados:
      • question - A pergunta principal que está sendo feita
      • context (opcional) - Informações de contexto para a pergunta
      • options (opcional) - Possíveis opções de resposta
      • deadline (opcional) - Quando uma resposta é necessária
  3. Modelo de Progresso (progress)

    • Finalidade: Acompanhar o progresso de tarefas de longa duração
    • Campos de Dados:
      • title - Nome da tarefa ou processo
      • current - Valor atual do progresso
      • total - Valor total para atingir a conclusão
      • percentage (opcional) - Valor percentual explícito (calculado se não fornecido)
      • eta (opcional) - Tempo estimado para conclusão
      • details (opcional) - Informações adicionais sobre o progresso
  4. Modelo de Problema (problem)

    • Finalidade: Relatar erros ou problemas
    • Campos de Dados:
      • title - Descrição curta do problema
      • description (opcional) - Informações detalhadas sobre o problema
      • severity (opcional) - Gravidade do problema (ex.: "critical", "warning")
      • source (opcional) - Onde o problema se originou
      • timestamp (opcional) - Quando o problema ocorreu
      • solution (opcional) - Formas sugeridas de corrigir o problema

Exemplo Usando Modelo:

// Send a progress notification
{
  "template": "progress",
  "templateData": {
    "title": "Database Backup",
    "current": 75,
    "total": 100,
    "eta": "2 minutes remaining",
    "details": "Compressing backup files"
  },
  "priority": 3
}

Suporte a Docker

O MCP Server Notifier está disponível como uma imagem Docker:

docker pull zudsniper/mcp-server-notifier:latest

Execute com variáveis de ambiente:

docker run -e WEBHOOK_URL=https://your-webhook-url -e WEBHOOK_TYPE=discord zudsniper/mcp-server-notifier

Exemplos de Configuração

Exemplos de configurações de webhook estão disponíveis no diretório examples.

Desenvolvimento

Configurando o Ambiente de Desenvolvimento

  1. Clone o repositório:
git clone https://github.com/zudsniper/mcp-server-notifier.git
cd mcp-server-notifier
  1. Instale as dependências:
npm install
  1. Compile o projeto:
npm run build

Testando Suas Alterações

  1. Execute o servidor MCP em modo de desenvolvimento:
# Install the MCP Inspector if you haven't already
npm install -g @modelcontextprotocol/inspector

# Start the server with the Inspector
npx @modelcontextprotocol/inspector node build/index.js
  1. O Inspector fornece uma interface web onde você pode:
    • Enviar requisições para suas ferramentas
    • Visualizar logs de requisição/resposta
    • Depurar problemas com sua implementação

Lançando Novas Versões

Para lançar uma nova versão:

  1. Atualize a versão em package.json
  2. Envie as alterações para o branch release
  3. O GitHub Actions automaticamente:
    • Executará testes
    • Compilará e enviará imagens Docker
    • Publicará no npm
    • Criará um GitHub Release

Segredos de repositório necessários para CI/CD:

  • DOCKERHUB_USERNAME - Nome de usuário do Docker Hub
  • DOCKERHUB_TOKEN - Token de acesso do Docker Hub
  • NPM_TOKEN - Token de acesso do npm

Licença

Licença MIT - consulte o arquivo LICENSE para detalhes.

Contribuições

Contribuições são bem-vindas! Sinta-se à vontade para enviar um Pull Request.

Este MCP é certificado pela MCP Review.
Página de certificação: https://mcpreview.com/mcp-servers/tuberrabbit/mcp-server-notifier