pushengage-mcp

Servidor MCP oficial para PushEngage. Consulte campanhas, gerencie segmentos e automatize notificações push por meio de qualquer assistente de IA compatível com MCP usando linguagem natural.

Documentação

@pushengage/mcp

pushengage-mcp MCP server

Gerencie sua conta PushEngage por meio de qualquer assistente de IA, em linguagem natural.

PushEngage é uma plataforma de notificações push para web push, push de aplicativos móveis, WhatsApp e widgets de chat no site, usada para aumentar assinantes e recuperar receita (abandono de carrinho, queda de preço, volta ao estoque e muito mais).

Este pacote é um servidor Model Context Protocol (MCP). Ele conecta assistentes compatíveis com MCP, como Claude Desktop, Claude Code e Cursor, à sua conta PushEngage para que você possa enviar e agendar notificações, executar testes A/B, criar públicos, analisar métricas e gerenciar configurações do site apenas pedindo, sem sair do chat.

Você faz login uma vez pelo navegador; o assistente então age em seu nome no site PushEngage que você selecionar.

Conteúdo

O que você pode fazer

Depois de conectado, basta descrever o que você quer. Alguns exemplos:

Enviar e agendar

  • "Envie uma notificação intitulada 'A venda termina hoje à noite', mensagem 'Última chamada, 50% de desconto', com link para https://example.com/sale."
  • "Agende isso para as 9h no fuso horário local de cada assinante."
  • "Configure um resumo recorrente toda segunda e quinta às 8h até o fim do mês."
  • "Execute um teste A/B de dois títulos e publique automaticamente o vencedor pela taxa de cliques."

Segmentar as pessoas certas

  • "Crie um segmento para visitantes de /pricing."
  • "Monte um público de clientes do plano gold nos EUA e envie apenas para eles."

Entender o desempenho

  • "Quantos assinantes eu tenho e qual foi minha taxa de cliques nos últimos 30 dias?"
  • "Liste minhas campanhas de gotejamento ativas com estatísticas de envio, visualização e cliques."

Configurar um site

  • "Defina o prazo de validade padrão das minhas notificações para 7 dias."
  • "Altere o fuso horário do meu site para Asia/Kolkata e ative a geolocalização."

Requisitos

  • Uma conta PushEngage (gratuita ou paga) com pelo menos um site.
  • Node.js 18 ou mais recente (o assistente executa o servidor via npx).
  • Um cliente compatível com MCP (Claude Desktop, Claude Code, Cursor ou qualquer outro).

Instalação

Adicione o servidor à configuração MCP do seu cliente. Não é necessária instalação global; o npx o busca sob demanda.

Claude Desktop (pacote de um clique)

O caminho mais fácil no Claude Desktop é o MCP Bundle:

  1. Baixe o arquivo pushengage-mcp-<version>.mcpb mais recente na página de releases do GitHub.
  2. Abra-o com o Claude Desktop (clique duas vezes ou arraste-o para a janela) e clique em Instalar.

Tudo está incluído — não é necessário editar JSON. A caixa de diálogo de instalação permite opcionalmente definir o rótulo exibido na tela de autorização do PushEngage e um caminho personalizado para o arquivo de token (para executar várias contas).

Claude Desktop (configuração manual)

Edite ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) ou o equivalente na sua plataforma:

{
  "mcpServers": {
    "pushengage": {
      "command": "npx",
      "args": ["-y", "@pushengage/mcp"]
    }
  }
}

Reinicie o Claude Desktop. O servidor "pushengage" deve aparecer na sua lista de ferramentas.

Cursor

Edite ~/.cursor/mcp.json:

{
  "mcpServers": {
    "pushengage": {
      "command": "npx",
      "args": ["-y", "@pushengage/mcp"]
    }
  }
}

Outros clientes MCP

Qualquer cliente que fale MCP via stdio funciona. Configure-o para executar o comando npx -y @pushengage/mcp.

Primeira execução: login

A autenticação é baseada no navegador, então suas credenciais nunca tocam o assistente.

  1. Peça: "Faça login no PushEngage para mim." O servidor abre uma aba do navegador na página de autorização do PushEngage.
  2. Clique em Autorizar. A aba confirma o sucesso e um token de acesso é salvo localmente.
  3. Peça: "Mostre meus sites PushEngage" e depois "Use o site 12345" para escolher o site com o qual trabalhar. A seleção é lembrada entre reinicializações.

Toda ferramenta com escopo de site age no site atual, a menos que você passe um site_id explícito. Quando o token expirar, você verá uma mensagem de AUTH_EXPIRED; basta pedir para fazer login novamente.

Ferramentas

Todas as ferramentas com escopo de site usam o site atual por padrão.

Autenticação e sites

FerramentaFinalidade
pushengage_auth_loginAbre o navegador no PushEngage e armazena o token em caso de sucesso.
pushengage_auth_statusMostra se você está autenticado e qual site está selecionado.
pushengage_auth_logoutExclui o token armazenado localmente.
pushengage_list_sitesLista os sites PushEngage aos quais você tem acesso.
pushengage_select_siteDefine o site atual usado pelas outras ferramentas.

Configurações do site

FerramentaFinalidade
pushengage_get_site_details / pushengage_update_site_detailsNome do site, URL, fuso horário, geolocalização e o alternador de marca "Powered By PushEngage".
pushengage_get_campaign_defaults / pushengage_update_campaign_defaultsParâmetros UTM, notificação de fallback, atributos de fallback e prazo de validade padrão da notificação. As atualizações são mescladas sobre os valores atuais, então edições parciais funcionam.
pushengage_get_service_worker_settings / pushengage_update_service_worker_settingsRegistro do service worker, suporte a subpastas e caminho do arquivo do worker.

Públicos

FerramentaFinalidade
pushengage_list_segments / pushengage_create_segmentSegmentos de assinantes baseados em regras de URL.
pushengage_list_audience_groups / pushengage_create_audience_groupGrupos de segmentação salvos (dispositivo, país, segmento, engajamento, datas, atributos). Referenciados pelo audience_groups das ferramentas de envio.
pushengage_list_attributes / pushengage_create_attributeChaves de atributos personalizados de assinantes usadas nas regras de grupos de público (máx. 50 por site).

Campanhas e automações

FerramentaFinalidade
pushengage_list_drip_campaignsAutorespondedores de gotejamento. Filtre por status; defina include_analytics para estatísticas por campanha.
pushengage_list_triggered_campaignsCampanhas acionadas (abandono de carrinho/navegação, queda de preço etc.). Filtre por status; análises opcionais.
pushengage_list_rss_campaignsCampanhas automáticas de push via RSS. Filtre por status.
pushengage_list_workflowsAutomações de fluxo de trabalho. Filtre por status; defina include_analytics para estatísticas de entrada/ativa/concluída/falha e metas.

Widgets de chat

FerramentaFinalidade
pushengage_list_chat_widgetsO widget no site que exibe WhatsApp, Messenger e outros canais. Mostra status, canais, dispositivos, restrição de horário comercial e segmentação.

Análises

FerramentaFinalidade
pushengage_get_analytics_summaryTotais vitalícios: assinantes, notificações enviadas, visualizações, cliques e contagem/valor de metas.
pushengage_get_analytics_timeseriesAssinantes, envios, visualizações, cliques, CTR e cancelamentos por intervalo (dia/semana/mês) em um período de datas.

Envio de notificações

FerramentaFinalidade
pushengage_list_notificationsLista notificações enviadas, agendadas e rascunhos, das mais recentes primeiro. Filtre por status (semântica de abas do painel), intervalo de datas de envio ou tags; defina include_analytics para estatísticas consolidadas de A/B e envio por fuso horário.
pushengage_send_notificationEnvia ou agenda uma notificação. Uma ferramenta, três modos de entrega: enviar agora, agendamento único (opcionalmente por fuso horário do assinante) e recorrente. audience_groups opcional para segmentação; caso contrário, todos os assinantes.
pushengage_send_ab_notificationUma notificação A/B com duas variantes. Passe intelligent_ab_test para amostrar cada variante, escolher o vencedor pela taxa de cliques após um atraso e publicar o vencedor para o restante.

Configuração

Nenhuma configuração é necessária — o servidor fala com a API de produção do PushEngage imediatamente. Estas variáveis de ambiente estão disponíveis para configurações menos comuns:

Variável de ambientePadrãoFinalidade
PE_MCP_CLIENT_NAMEAI assistantRótulo exibido na tela de autorização como o aplicativo solicitante. Defina-o se quiser um rótulo específico, ex.: "Claude Desktop".
PE_MCP_CONFIG_PATH~/.pushengage/mcp.jsonOnde o token é armazenado. Defina-o para executar mais de uma conta PushEngage lado a lado (veja abaixo). Deve ser um caminho absoluto — é usado exatamente como fornecido, sem expansão de ~.

Executando várias contas PushEngage lado a lado

Registre o servidor sob dois nomes diferentes, cada um com seu próprio PE_MCP_CONFIG_PATH para que os tokens não colidam:

{
  "mcpServers": {
    "pushengage-client-a": {
      "command": "npx",
      "args": ["-y", "@pushengage/mcp"],
      "env": {
        "PE_MCP_CONFIG_PATH": "/Users/you/.pushengage/mcp-client-a.json",
        "PE_MCP_CLIENT_NAME": "Claude Desktop (Client A)"
      }
    },
    "pushengage-client-b": {
      "command": "npx",
      "args": ["-y", "@pushengage/mcp"],
      "env": {
        "PE_MCP_CONFIG_PATH": "/Users/you/.pushengage/mcp-client-b.json",
        "PE_MCP_CLIENT_NAME": "Claude Desktop (Client B)"
      }
    }
  }
}

Peça ao assistente para fazer login em cada nome de servidor separadamente; cada um autoriza na conta PushEngage que você escolher no navegador.

Segurança e armazenamento de tokens

  • O login é baseado no navegador. O assistente nunca vê sua senha do PushEngage.
  • O painel envia o token ao servidor como uma solicitação POST, então ele nunca aparece em uma URL, histórico do navegador ou log de acesso.
  • O token é armazenado em ~/.pushengage/mcp.json com permissões 0600 (legível apenas por você). Sua expiração é definida pelo PushEngage e exibida por pushengage_auth_status.
  • Para revogá-lo, execute pushengage_auth_logout ou saia de todas as sessões no PushEngage em Configurações → Segurança.

Solução de problemas

O servidor não conecta de jeito nenhum ("Connection closed")

Se npx -y @pushengage/mcp funciona normalmente quando você digita diretamente em um terminal, mas seu cliente (Claude Desktop, Cursor etc.) mostra o servidor como desconectado ou registra algo como MCP error -32000: Connection closed, isso quase sempre é um problema de PATH, não um bug no servidor.

Esses clientes são iniciados pelo Dock/Finder, não por um terminal, então nunca carregam os arquivos de inicialização do seu shell (.zshrc, .zprofile etc.). Se o Node foi instalado via um gerenciador de versões (nvm, fnm, volta, ...), essas ferramentas só adicionam node/npx ao PATH dentro desses arquivos de inicialização — então o cliente não consegue encontrar npx de forma alguma, o processo do servidor nunca inicia e você recebe um erro genérico de conexão em vez de um claro "command not found".

Correção: aponte o cliente para o caminho absoluto de npx (isso ignora a busca por PATH para encontrá-lo) e também passe a mesma pasta como PATH em env (para que o shebang #!/usr/bin/env node do próprio npx consiga encontrar node quando ele se reexecuta). Execute which npx no seu terminal para obter o caminho e use-o na configuração do seu cliente:

{
  "mcpServers": {
    "pushengage": {
      "command": "/absolute/path/from/which-npx",
      "args": ["-y", "@pushengage/mcp"],
      "env": {
        "PATH": "/absolute/folder/containing/that/npx:/usr/bin:/bin:/usr/sbin:/sbin"
      }
    }
  }
}

Reinicie o cliente após editar. Se which npx em vez disso imprimir algo sob /usr/local/bin ou /opt/homebrew/bin, sua instalação do Node não é baseada em gerenciador de versões e este provavelmente não é o seu problema — verifique os logs MCP do próprio cliente para o erro real.

Outros erros

  • AUTH_EXPIRED — seu token expirou. Peça ao assistente para fazer login novamente.
  • NO_SITE_SELECTED — chame pushengage_list_sites e depois peça para usar um dos sites retornados antes de usar uma ferramenta com escopo de site.
  • O navegador não abre — isso acontece em sessões headless ou remotas (ex.: SSH). A URL de autorização é impressa no terminal que executa o servidor; abra-a manualmente.
  • Outra coisa — todo erro retornado pelo servidor começa com uma tag [CODE] e uma explicação em linguagem simples; compartilhe isso com o suporte se precisar de ajuda.

Licença

MIT