PD Документация ← На главную

MCP для AI-агентов

PushData говорит на Model Context Protocol: пакет @pushdata/mcp — MCP-сервер, через который Claude Desktop, Claude Code, Cursor, Codex — любой MCP-клиент — отправляет уведомления, ведёт контакты и устройства, запускает сценарии и читает эту документацию для одного из ваших приложений. Он работает с секретным ключом приложения (pd_…), поэтому его место — машина разработчика или доверенный хост агента, но не браузер и не мобильное приложение.

Ещё два файла для моделей: https://pushdata.ru/llms.txt — карта документации (llmstxt.org), https://pushdata.ru/llms-full.txt (русский) и https://pushdata.ru/llms-full.en.txt (английский) содержат все страницы одним файлом — вставьте любой в контекст ассистента, и он знает API.

Установка

Нужен только Node 20+; npx скачает пакет сам.

Claude Desktopclaude_desktop_config.json:

json
{
  "mcpServers": {
    "pushdata": {
      "command": "npx",
      "args": ["-y", "@pushdata/mcp"],
      "env": { "PUSHDATA_API_KEY": "pd_…" }
    }
  }
}

Claude Code — в проекте:

bash
claude mcp add pushdata -e PUSHDATA_API_KEY=pd_… -- npx -y @pushdata/mcp

Cursor.cursor/mcp.json с тем же JSON-блоком; Codex и другие клиенты принимают ту же команду (npx -y @pushdata/mcp) и ту же переменную окружения.

ПеременнаяПо умолчаниюЗначение
PUSHDATA_API_KEYСекретный ключ приложения (Приложения → Настройки → API-ключи). Один ключ = одно приложение; для двух приложений добавьте сервер дважды.
PUSHDATA_BASE_URLhttps://api.pushdata.ruАдрес API.
PUSHDATA_SITE_URLhttps://pushdata.ruОткуда читаются файлы документации.

Инструменты

ИнструментЧто делает
send_notificationPush на устройства или письмо / SMS / Telegram / MAX / in-app-сообщение контактам. target — ровно один из all, user_ids, tags, device_ids, contact_ids, segment_id; scheduled_at планирует, category — категория отписки, idempotency_key делает повтор безопасным, variants — A/B-тест, goal — цель конверсии, local_time / transactional — ограничения отправки. Возвращает id уведомления.
get_notificationСтатус и счётчики: total_targets, total_sent, total_delivered, total_failed, total_opened, total_clicked.
cancel_notificationОтменяет запланированную или ещё не ушедшую отправку.
list_deliveriesЖурнал доставок отправки: по строке на получателя — исход, отметки, причина отказа, вариант A/B; фильтр по status.
list_templates, get_templateШаблоны приложения с их {{переменными}}; send_notification с template_id + variables (+ locale) отправляет по шаблону.
list_devicesУстройства по user_id, platform, status, постранично; токены не возвращаются.
update_device_tags, deactivate_deviceЗаменить теги устройства; деактивировать устройство.
upsert_contact, get_contact, delete_contactКонтакты по вашему external_id: имя, e-mail, телефон, id в MAX, локаль, metadata.
trigger_workflowЗапускает сценарий для контакта с переменными payload.
track_eventСообщает пользовательское событие (order_placed со свойствами): запускает сценарий с триггером-именем события и питает сегменты.
search_docs, get_docПолнотекстовый поиск по этой документации (на русском или английском) и целые страницы.

Ресурсы: карта документации (llms.txt) и OpenAPI-спецификация REST API — для всего, чего инструменты не покрывают (регистрация устройств, события вовлечённости, inbox).

У каждого инструмента есть MCP-аннотации — readOnlyHint, destructiveHint, idempotentHint, — чтобы клиент спрашивал подтверждение перед отправкой или удалением. Отправки и удаления настоящие: агент, которого попросили «оповестить всех», отправит всем. Отклонённый запрос приходит как ошибка инструмента со стабильным кодом REST API (unauthorized, validation_error, payment_required, not_found, rate_limited, …) и текстом.

Что агент может с этим сделать

  • «Отправь пользователям с тегом beta push о новой сборке со ссылкой на release notes» → send_notification с target.tags, через минуту get_notification за счётчиками.
  • «Заведи контакт для пользователя 4711 с этим e-mail и запусти сценарий онбординга» → upsert_contact + trigger_workflow.
  • «Почему вчерашняя кампания дошла только до половины устройств?» → get_notification, list_devices со status: inactive, search_docs про счётчики доставки.
  • «Как зарегистрировать токен RuStore?» → search_docs / get_doc /docs/channels/push.

Встраивание сервера

Пакет экспортирует createPushDataMcpServer({ client }) для хоста, который запускает сервер в своём процессе (внутренняя платформа агентов, endpoint Streamable HTTP):

ts
import { createPushDataMcpServer } from '@pushdata/mcp'
import { PushData } from '@pushdata/node'

const server = createPushDataMcpServer({ client: new PushData({ apiKey: process.env.PUSHDATA_API_KEY! }) })
await server.connect(transport)
Пакет публикуется. Пока @pushdata/mcp нет в npm, возьмите его из integrations/mcp в репозитории PushData (npm install && npm run build, затем command: node, args: ["<путь>/integrations/mcp/dist/cli.js"] в конфигурации клиента). Исходники в репозитории, MIT.