sendpulse-mcp-server

dshemendiuk/sendpulse-mcp-server

3.2

If you are the rightful owner of sendpulse-mcp-server and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.

The SendPulse MCP Server is a Message Control Protocol server that simplifies interaction with SendPulse services by wrapping around the SendPulse Chatbots API.

SendPulse MCP Server

Публічний MCP (Model Context Protocol) сервер для інтеграції з SendPulse API. Дозволяє AI-асистентам (OpenAI, Claude тощо) взаємодіяти з SendPulse для відправки email, Telegram повідомлень та управління підписниками.

Особливості

  • 🚀 Підтримка Telegram API SendPulse
  • 📧 Відправка email через SMTP API
  • 👥 Управління підписниками
  • 📊 Отримання статистики кампаній
  • 🔒 Безпечна авторизація через API ключі
  • 🛡️ Rate limiting та захист
  • 📱 Підтримка інлайн кнопок для Telegram

Встановлення

npm install
npm run build
npm start

Конфігурація

Змінні середовища

PORT=3000
NODE_ENV=production

Запуск в Docker

FROM node:18-alpine

WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production

COPY dist ./dist
EXPOSE 3000

CMD ["npm", "start"]

Використання

Підключення до OpenAI

from openai import OpenAI
import requests

# Конфігурація MCP сервера
MCP_SERVER_URL = "https://your-mcp-server.com/mcp"
SENDPULSE_API_KEY = "your_api_key"
SENDPULSE_API_SECRET = "your_api_secret"

client = OpenAI(
    base_url=MCP_SERVER_URL,
    api_key="not-needed",
    default_headers={
        "X-SendPulse-API-Key": SENDPULSE_API_KEY,
        "X-SendPulse-API-Secret": SENDPULSE_API_SECRET
    }
)

Підключення до Claude

{
  "name": "sendpulse",
  "type": "sse",
  "url": "https://your-mcp-server.com/mcp",
  "headers": {
    "X-SendPulse-API-Key": "your_api_key",
    "X-SendPulse-API-Secret": "your_api_secret"
  }
}

API Endpoints

Інформація про сервер

GET /info

Повертає інформацію про доступні інструменти та методи авторизації.

Health Check

GET /health

Перевіряє стан сервера.

MCP Endpoint

POST /mcp
Headers:
  X-SendPulse-API-Key: your_api_key
  X-SendPulse-API-Secret: your_api_secret

Основний endpoint для MCP з'єднання.

Доступні інструменти

1. send_telegram_message

Відправка повідомлення в Telegram

{
  "chatId": "123456789",
  "message": "Привіт! Це повідомлення з MCP сервера",
  "parseMode": "HTML",
  "buttons": [
    {
      "text": "Відкрити сайт",
      "url": "https://example.com"
    }
  ]
}

2. get_telegram_chats

Отримання списку Telegram чатів

{
  "limit": 50,
  "offset": 0
}

3. send_email

Відправка email

{
  "to": [
    {
      "email": "user@example.com",
      "name": "Іван Іванович"
    }
  ],
  "subject": "Тест email",
  "html": "<h1>Привіт!</h1><p>Це тестовий email</p>",
  "from": {
    "email": "noreply@yourcompany.com",
    "name": "Ваша компанія"
  }
}

4. get_email_statistics

Статистика email кампаній

{
  "campaignId": "12345",
  "dateFrom": "2024-01-01",
  "dateTo": "2024-01-31"
}

5. manage_subscribers

Управління підписниками

{
  "action": "add",
  "addressBookId": "123456",
  "subscribers": [
    {
      "email": "user@example.com",
      "variables": {
        "name": "Іван",
        "city": "Київ"
      }
    }
  ]
}

Приклади використання

Відправка Telegram повідомлення через OpenAI

response = client.chat.completions.create(
    model="gpt-4",
    messages=[
        {
            "role": "user",
            "content": "Відправ повідомлення в Telegram чат 123456789: 'Привіт! Як справи?'"
        }
    ],
    tools=[
        {
            "type": "function",
            "function": {
                "name": "send_telegram_message",
                "parameters": {
                    "type": "object",
                    "properties": {
                        "chatId": {"type": "string"},
                        "message": {"type": "string"}
                    }
                }
            }
        }
    ]
)

Отримання статистики через Claude

# Конфігурація Claude MCP
echo '{
  "mcpServers": {
    "sendpulse": {
      "command": "node",
      "args": ["path/to/mcp-client.js"],
      "env": {
        "MCP_SERVER_URL": "https://your-mcp-server.com/mcp",
        "SENDPULSE_API_KEY": "your_api_key",
        "SENDPULSE_API_SECRET": "your_api_secret"
      }
    }
  }
}' > claude_desktop_config.json

Безпека

Авторизація

  • Всі запити повинні містити заголовки X-SendPulse-API-Key та X-SendPulse-API-Secret
  • Токени доступу кешуються на сервері до закінчення терміну дії
  • Автоматичне оновлення токенів при необхідності

Rate Limiting

  • Максимум 100 запитів на IP за 15 хвилин
  • Додаткові обмеження SendPulse API

Валідація

  • Перевірка всіх вхідних параметрів
  • Обмеження на розмір запитів
  • Фільтрація небезпечного контенту

Моніторинг

Логування

// Приклад логування
console.log('MCP Tool executed:', {
  tool: 'send_telegram_message',
  user: 'api_key_hash',
  success: true,
  timestamp: new Date().toISOString()
});

Метрики

  • Кількість запитів по інструментах
  • Час відповіді API
  • Кількість помилок
  • Активні користувачі

Розгортання

Production

# Збірка
npm run build

# Запуск з PM2
pm2 start dist/index.js --name sendpulse-mcp

# Nginx конфігурація
location /mcp {
    proxy_pass http://localhost:3000;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
}

SSL/TLS

server {