dshemendiuk/sendpulse-mcp-server
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 {