Skip to main content
Glama
Rune-markar

Signal Desk MCP

by Rune-markar

Signal Desk

A PWA that manages monitored items on a dedicated screen and handles scheduled execution, history, in-app notifications, and Web Push. From ChatGPT, you can register, update, and run the same monitored items using OAuth-protected MCP tools.

Where it is published

Since GitHub Pages cannot hold secret information or scheduled processing, it runs as an in-browser demo. The production URL that uses automatic monitoring, MCP, and Push is issued when you deploy the Cloudflare Worker.

Related MCP server: GetMonitor MCP Server

Operation modes

GitHub Pages / local prototype mode

  • Add, edit, stop, resume, delete, search, and filter monitored items

  • Unread notifications, mark all as read, snooze

  • Execution history and next scheduled run

  • Manually enter the contents of a ChatGPT Scheduled task and migrate it in a stopped state

  • Save to localStorage

  • Export non-sample data as JSON to pass to the Worker version

  • "Demo results" that do not communicate externally

  • Offline display of the PWA app shell

Cloudflare Worker connection mode

  • Device-to-device synchronization with D1 as the source of truth

  • Session authentication and single-owner data isolation

  • Cron every 15 minutes and execution lease

  • Cloudflare Workers AI for evaluating monitoring with a referenced URL

  • Public web search via the OpenAI Responses API (when an API key is set)

  • Safe retrieval of HTTPS pages, or web search

  • History of success, mismatch, and failure, with duplicate notification prevention

  • VAPID Web Push and quiet hours

  • /mcp protected by OAuth 2.1 + PKCE

  • List, create, update, stop/resume, run immediately, and delete from ChatGPT

  • Explicit one-time migration of pre-connection local data

  • Validation and import of JSON exported from the GitHub Pages version

If an authenticated screen goes offline as-is, you can view the most recent server state only during that same session. On reload, only local data is displayed until authentication is confirmed; on logout, 401, or confirmation of unauthenticated status, the device's server cache is deleted. No server data changes are made while offline.

Boundary with ChatGPT

Signal Desk is the source of truth for monitored items. When you connect MCP to ChatGPT, you can operate Signal Desk monitoring from conversations.

On the other hand, since no general-purpose API is available for retrieving the existing list or execution history of ChatGPT Scheduled Tasks, the following are not done:

  • Automatic import of existing Scheduled Tasks

  • Replacing the ChatGPT-side notification destination with Signal Desk

  • Bidirectional synchronization between the ChatGPT side and the Signal Desk side

For existing tasks, confirm the contents under "Migrate from ChatGPT" on the screen and manually save them in a stopped state. After the test succeeds in Signal Desk, the user should stop the original ChatGPT task.

Since the GitHub Pages version and the Worker version have different origins, browser-saved data is not automatically shared. Export the migration JSON from "Settings" in the Pages version, log in to the Worker version and import it from the same "Settings", then confirm the count and URL and migrate explicitly. Since the JSON contains monitoring conditions and URLs, handle it on a secure device.

Local startup

Use Node.js 20.19 or later (or 22.12 or later).

Local prototype mode equivalent to GitHub Pages:

npm install
npm run dev

Worker connection mode:

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

In Worker connection mode, the app is at http://localhost:8787/signal-desk/ and MCP is at http://localhost:8787/mcp. Set the actual secret values in .dev.vars and do not add them to Git. Even if the OpenAI API key is omitted, monitoring with a referenced URL set can be run with Workers AI. Monitoring that performs public web search without a URL requires the OpenAI API key.

Quality checks

npm run check

npm run check runs the following:

  • Vitest tests for domain, UI, monitoring source URL, and Push URL

  • Frontend TypeScript and Vite production build

  • Worker TypeScript

  • Wrangler deploy dry-run

Deployment

See deployment procedure for D1 migration to Cloudflare, Worker Secret, VAPID, deploy, and ChatGPT MCP connection. Implementation boundaries and security design are summarized in architecture.

Main structure

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統合入口

Tech stack

  • React 19 + TypeScript + Vite

  • Vitest + Testing Library

  • Vite PWA / Workbox

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

  • Cloudflare Workers AI

  • Cloudflare Agents SDK's stateless MCP handler

  • Cloudflare Workers OAuth Provider

  • OpenAI Responses API

  • Web Push / VAPID

  • Temporal polyfill

Security notes

  • Do not place API keys, the login passphrase, or the VAPID private key in the frontend or in Git.

  • Monitoring sources are HTTPS only. The Worker rejects private networks, dangerous redirects, non-text responses, and content over 512KB.

  • External pages are passed to the model as untrusted data; instructions within the page are not executed.

  • Authentication in this version is for a single owner. Add an external IdP and account management before publishing to the general public.

  • Perform final verification of Push reception, notification clicks, PWA installation, and Android/iOS icons on production HTTPS and real devices.

The Noto Sans JP license is included in public/THIRD_PARTY_NOTICES.txt. This project itself does not currently grant a reuse license.

F
license - not found
Not graded
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

View all related MCP servers

Related MCP Connectors

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

  • MCP connector that lets ChatGPT list, search, and run your Apple Shortcuts via a local Mac agent

  • AI-powered website change monitoring - manage monitors and alerts via MCP.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Rune-markar/signal-desk'

If you have feedback or need assistance with the MCP directory API, please join our Discord server