I added MCP to my Mac timeline app. Nightly cron into a vector DB was the real use. — Sidefy BlogSkip to content<br>What happened after adding MCP to Sidefy: scheduled agents pulling today's timeline into a vector DB mattered more than chat, and why I exposed tools instead of built-in AI.<br>About a year ago I built Sidefy, a Mac app that sits at the screen edge and lays out today’s events on a timeline. Calendar, reminders, RSS, GitHub, custom data sources. All in one place.<br>It had paying users and was doing fine.<br>A few weeks ago I added an MCP server so agents could configure and operate Sidefy without clicking through settings.<br>I was wrong. The real use isn’t a one-off chat session. It’s agents on a schedule calling Sidefy’s MCP and sending the results somewhere useful. A few users do something similar.<br>What MCP gave my app<br>MCP doesn’t require baking AI into the app. I don’t manage API keys or eat token costs on my side. The app exposes what it knows. Your agent runs wherever you already have one.<br>I also thought about shipping built-in AI. Maybe $2–3 per user per month on top of the one-time purchase, with usage limits. But who’s going to pay a second AI bill when they already have Claude or Cursor? Sidefy grows on word-of-mouth, and I didn’t want a subscription add-on to mess that up. If it backfired, I wouldn’t know how to fix it. MCP made more sense. Sidefy doesn’t touch models. It exposes tools for Claude, Cursor, or whatever you already use.<br>Sidefy exposes 45 tools, including:<br>Query today’s timeline (what’s happening, when)<br>Manage rules (hide unimportant events, color-code important ones)<br>Manage plugins, RSS feeds, GitHub repos<br>Create/manage external events<br>…and more<br>From Claude, you can say things like:<br>“Hide all GitHub release notifications”<br>“Create a plugin that tracks Nintendo Switch game deals”<br>“Add a timeline event at 3pm to review the PR”<br>“What does my afternoon look like?”<br>What surprised me<br>The cron job is the part I didn’t see coming. A few days after MCP shipped, I set up Hermes Agent’s built-in cron to pull today’s timeline from Sidefy and embed it in my vector database. Meetings, GitHub releases, RSS headlines, App Store price drops, deal alerts, the usual mix. I hit that store with RAG when I’m writing or digging through old notes.<br>MCP showed up in word-of-mouth sooner than I expected, too. A few users mentioned it in feedback or when recommending the app to friends. Not a flood. Enough that it comes up next to plugin discovery. Not the rule engine I spent months on. A weekend feature.<br>I barely touch the GUI to create plugins or rules anymore. I tell Claude what I want and it handles the MCP calls.<br>The technical bit<br>I kept MCP on localhost only, using Apple’s Network framework with HTTP and SSE. Paid app, not the trial. Off by default. Enable Local Server under Experimental Features.<br>The hard part was keeping the UI responsive. The app lives at the screen edge. When an agent floods you with requests, blocking the main thread was a real problem. I ended up on a dedicated network queue, with connection and session caps, and off-main execution for the heavy reads.<br>All plugins feed events into the timeline through a common EventSource protocol, so list_today_events can query them in one call. MCP tools are registered statically by domain, not per plugin at runtime.<br>┌─────────┐ MCP/HTTP ┌────────────┐
│ Claude │ ────────→ │ Sidefy │
│ Cursor │ │ Timeline │
│ Codex │ ←──────── │ Plugins │
│ ... │ │ Rules │
└─────────┘ └────────────┘
Would I do it again?<br>Yes. I wish I’d shipped it sooner.<br>If you live in feeds and alerts all day and only care about today, not a backlog going back years, that’s what Sidefy is for. The timeline doesn’t archive yesterday. My cron grabs that snapshot for the vector store so I’m not stuffing it with stale RSS.<br>sidefyapp.com. Free trial for the app. MCP is in the purchased build (Experimental Features → Local Server). One-time purchase, no subscription.