FrontMCP Events Demo
An MCP server that publishes its clock. Every minute, at the start of the minute, it sends the event clock.tick, with its time, to everyone subscribed. Add it to ChatGPT, ask ChatGPT to subscribe, and a message arrives every minute with nobody typing.
It shows MCP Events: a server telling a client that something happened, instead of waiting to be asked. It is built with FrontMCP and runs as a Cloudflare Worker.
The address
https://events-demo.frontmcp.dev
The MCP endpoint is this page's address. It signs callers in with OAuth: an MCP client opens a sign-in page, which you fill in once.
Add it to ChatGPT
- In ChatGPT on the web, open Plugins, choose Add, then Add custom MCP server.
- Give it a name, like FrontMCP Events Demo. Enter the server URL
https://events-demo.frontmcp.dev, choose OAuth as the authentication, tick the acknowledgement box, and choose Create as a plugin. - ChatGPT opens this server's sign-in page. Enter an email address and a name, and choose Authorize.
- The plugin's page lists the tool
tick_nowunder "Write" and, under "Events",clock.tick.
ChatGPT delivers events in Work chats on the web, in Work chats in the desktop app with Cloud selected, and to dots, as OpenAI's page on MCP Events says. Your workspace's controls for plugins and event-triggered tasks apply.
Subscribe
Ask your dot, or a Work chat:
Using my FrontMCP Events Demo plugin, subscribe to its clock.tick event.
Every time a clock.tick event arrives, send me a short message here with the server time it carries.
ChatGPT subscribes, giving the server an address to send events to. The server checks that address with a signed challenge before it accepts the subscription. From the next minute on, ChatGPT gets one event a minute and answers it as you asked: "Server time: 2026-11-11 14:38:00.001 UTC."
To get one at once, ask ChatGPT to call tick_now. It publishes the time to your own subscriptions only.
What arrives
Each event is an HTTPS POST to the address ChatGPT gave, signed with the secret ChatGPT gave, as Standard Webhooks describes. Its body:
{
"eventId": "clock-tick-2026-11-11T18:14:00.000Z",
"name": "clock.tick",
"timestamp": "2026-11-11T18:14:00.006Z",
"data": { "time": "2026-11-11T18:14:00.006Z", "source": "schedule" }
}
time is the server's time, in ISO 8601 and UTC. source is schedule for the minute's event and tick_now for one you asked for.
Stop
Tell the same chat or dot:
Stop monitoring clock.tick now and unsubscribe from it.
ChatGPT unsubscribes, and the server sends nothing more to it. A subscription that ChatGPT doesn't renew ends within an hour anyway.
Limits
- One event and one tool.
clock.ticktakes no arguments: every subscriber gets every minute's event. - Clients that identify themselves with a URL. A client signs in with a client ID metadata document, as ChatGPT does. Clients that register first, with dynamic client registration, are refused.
- The sign-in checks nothing. Any email address and name are accepted, no email is sent, and nothing is verified. The address only tells your subscriptions apart from others': whoever types the same address is the same user here. Use any address you like.
- What the server keeps, in its own database: for each sign-in, the email address and name you typed with a refresh token, for 30 days; for each subscription, the address events go to, its signing secret and who owns it, encrypted, until it ends; and events waiting to be retried, for up to 5 minutes. Restarting the server keeps all of them.
- At most 3 subscriptions per signed-in user, each lasting up to an hour. A client renews one by subscribing again before the time the server gave it.
- Three tries per event. An event that fails three times within 5 minutes is dropped. Events missed while a subscription was off are not sent later.
- 120 requests a minute from one network address.
- A demo. It may be down, reset or changed without notice.
More
- How to notify ChatGPT from your MCP server with MCP Events: the post this demo comes from, which builds the same feature for an appointments product.
- The Events reference: declaring an event, publishing it, and the options.
- This server's source, and how it runs.