Skip to main content
Glama
Rune-markar

Signal Desk MCP

by Rune-markar

Signal Desk

PWA для управления элементами мониторинга на отдельном экране: периодическое выполнение, история, внутриприложенные уведомления и Web Push. Через защищённый OAuth MCP-инструмент можно регистрировать, обновлять и запускать те же элементы мониторинга прямо из ChatGPT.

Ссылки для публикации

GitHub Pages не может хранить секретные данные или выполнять периодические задачи, поэтому работает как демонстрация в браузере. Рабочий URL для автоматического мониторинга, MCP и Push выдаётся при развёртывании Cloudflare Worker.

Related MCP server: omniwatchguard-mcp

Режимы работы

GitHub Pages / режим локального прототипа

  • Добавление, редактирование, остановка, возобновление, удаление, поиск и фильтрация элементов мониторинга

  • Непрочитанные уведомления, массовое прочтение, откладывание (snooze)

  • История выполнения и следующее запланированное время

  • Ручной ввод содержимого ChatGPT Scheduled task и перенос в состоянии «остановлен»

  • Сохранение в localStorage

  • Экспорт JSON с несэмпловыми данными для передачи в Worker-версию

  • «Демо-результат» без внешних коммуникаций

  • Офлайн-отображение PWA-оболочки приложения

Режим подключения к Cloudflare Worker

  • Синхронизация между устройствами с D1 как источником истины

  • Сессионная аутентификация и изоляция данных единственного владельца

  • Cron каждые 15 минут и аренда выполнения (execution lease)

  • Cloudflare Workers AI для определения мониторинга с URL-адресами назначения

  • Публичный веб-поиск через OpenAI Responses API (при настройке API-ключа)

  • Безопасное получение HTTPS-страниц или веб-поиск

  • История успехов, несоответствий и сбоев, защита от дублирования уведомлений

  • VAPID Web Push и тихие часы

  • /mcp, защищённый OAuth 2.1 + PKCE

  • Список, создание, обновление, остановка/возобновление, немедленное выполнение и удаление из ChatGPT

  • Явная одноразовая миграция локальных данных перед подключением

  • Проверка и загрузка JSON, экспортированного из версии GitHub Pages

Если аутентифицированный экран переходит в офлайн, в течение того же запуска можно просматривать последнее состояние сервера. При перезагрузке до подтверждения аутентификации отображаются только локальные данные; при выходе, 401 или подтверждении отсутствия аутентификации кэш сервера на устройстве удаляется. Во время офлайна изменения данных на сервере не выполняются.

Граница с ChatGPT

Signal Desk является источником истины для элементов мониторинга. При подключении MCP к ChatGPT вы можете управлять мониторингом Signal Desk прямо из диалога.

В то же время, публичный API для получения существующего списка ChatGPT Scheduled Tasks или истории выполнения недоступен, поэтому следующее не выполняется:

  • Автоматический импорт существующих Scheduled Tasks

  • Замена получателей уведомлений ChatGPT на Signal Desk

  • Двусторонняя синхронизация между ChatGPT и Signal Desk

Существующие задачи проверяются на экране «Перенос из ChatGPT» и сохраняются вручную в остановленном состоянии. После успешного теста в Signal Desk остановите исходную задачу ChatGPT самостоятельно.

Версии GitHub Pages и Worker имеют разные origin, поэтому данные браузера автоматически не синхронизируются. Экспортируйте JSON для переноса в «Настройках» версии Pages, войдите в Worker-версию, импортируйте его там через те же «Настройки», затем явно подтвердите перенос, сверив количество и URL. JSON содержит условия мониторинга и URL, поэтому обращайтесь с ним только на безопасных устройствах.

Локальный запуск

Используйте Node.js 20.19 или выше (или 22.12 или выше).

Локальный режим прототипа, эквивалентный GitHub Pages:

npm install
npm run dev

Режим подключения к Worker:

cp .dev.vars.example .dev.vars
npm run db:migrate:local
npm run dev:worker

Приложение в режиме подключения к Worker доступно по адресу http://localhost:8787/signal-desk/, MCP — http://localhost:8787/mcp. Укажите реальные секретные значения в .dev.vars и не добавляйте их в Git. Даже без ключа OpenAI API мониторинг с заданным URL-адресом назначения можно выполнять через Workers AI. Для мониторинга с публичным веб-поиском без URL требуется ключ OpenAI API.

Проверка качества

npm run check

npm run check выполняет следующее:

  • Тесты Vitest для домена, UI, URL источника мониторинга и Push URL

  • TypeScript фронтенда и продакшен-сборку Vite

  • Типы Worker

  • Wrangler deploy dry-run

Развёртывание

См. инструкцию по развёртыванию для D1 migration в Cloudflare, Worker Secret, VAPID, deploy и подключения ChatGPT MCP. Границы реализации и проектирование безопасности описаны в архитектуре.

Основная структура

src/
  api/          PWAから同一オリジンAPIへのクライアント
  components/   共通UI、モーダル、監視カード
  domain/       型、予定計算、Reducer、ローカル保存
  pages/        概要、監視、通知、履歴、設定
  state/        ローカル/サーバー両モードの状態管理
worker/
  migrations/   D1 schema
  api.ts        Cookie認証されたPWA API
  auth.ts       セッション、同一オリジン、試行制限
  db.ts         D1 repository
  runner.ts     Workers AI / Responses API、外部取得、Cron、lease
  push.ts       VAPID Web Push
  mcp.ts        ChatGPT用MCPツール
  oauth.ts      OAuth同意フロー
  index.ts      Worker統合入口

Технический стек

  • React 19 + TypeScript + Vite

  • Vitest + Testing Library

  • Vite PWA / Workbox

  • Cloudflare Workers + D1 + KV + Cron + Static Assets

  • Cloudflare Workers AI

  • Stateless MCP handler из Cloudflare Agents SDK

  • OpenAI Responses API

  • Web Push / VAPID

  • Примечания по безопасности

  • Не размещайте секретные данные, парольную фразу для входа или VAPID-ключи во фронтенде или в Git.

  • Worker поддерживает только HTTPS. Внешние страницы обрабатываются как ненадёжные данные; инструкции с этих страниц не выполняются.

  • Эта версия предназначена для одного владельца. Для массового использования добавьте систему управления учётными записями и внешний IdP.

Лицензия на public/THIRD_PARTY_NOTICES.txt указана в public/THIRD_PARTY_NOTICES.txt. Данный проект в настоящее время не имеет лицензии на повторное использование.

Related MCP Connectors

  • Uptime, SSL, DNS and domain monitoring you can talk to from Claude or any MCP client.

  • Remote streamable-HTTP MCP server running on a single Cloudflare Worker. Your assistant gets live Airbnb, Amazon, Booking.com, Google Flights, Maps and Reddit data, social search on X, Instagram and TikTok, the Meta Ad Library, and image/video generation without any keys. Connect your own accounts to let it send WhatsApp or Telegram messages, work an IMAP inbox, manage Meta Ads campaigns and publish to X and LinkedIn. OAuth 2.1 with PKCE; stored credentials are AES-256-GCM encrypted.

  • Official remote MCP server of MailSenpai, the EU-hosted email marketing platform. Connect Claude, ChatGPT, Cursor or another MCP client with OAuth 2.1 and PKCE. 74 tools manage lists, subscribers, segments, templates, draft campaigns and stats, and check email DNS, blacklists and spam. Sends and deletions require explicit confirmation; every call is logged. The same team also offers SMTP Senpai, an SMTP relay and email API for transactional sending: https://en.mailsenpai.com/smtp-senpai/.

  • Let Claude or ChatGPT search, read and send your WhatsApp messages over MCP. OAuth sign-in.

Related MCP Servers