Personal Assistant Toolkit
Building the infrastructure AI actually runs on
Problem
AI assistants are powerful but context-blind. They have no access to your calendar, tasks, email, or reminders unless you manually paste everything in. Could you build the infrastructure layer that makes AI genuinely useful for daily workflows?
What I Learned
This was the first project where the output wasn't an app or a website. It was an MCP server: the protocol layer that lets AI tools connect to real data sources. Building it meant writing tool definitions that Claude Desktop calls at runtime, designing OAuth2 authentication flows for multi-account Google access, handling macOS system APIs (Swift/EventKit) when the obvious approach (AppleScript) silently failed, and implementing input validation and rate limiting before any tool was written.
Stack
Deep Dive
Key product decisions
Why local-first, not cloud?
All personal data stays on the user's machine. A hosted version would be easier to onboard but would require storing OAuth tokens server-side. For a tool handling sensitive personal data, that's a trust ask most users won't accept.
Why MCP, not a standalone app?
Claude Desktop is already the interface. Building a separate dashboard would fragment attention and require a UI layer. MCP lets Claude reason about the data, not just display it. One conversation replaces six apps.
Why de-scope Apple Notes and WhatsApp?
Notes are freeform and deeply personal. WhatsApp has strong user expectations around message privacy. Both carry more risk than value in Phase 1. Deliberate scope decision, documented before build started.
Why multi-account Google from day one?
Most professionals have a personal and a work Gmail. Treating multi-account as Phase 2 would mean retrofitting the entire data model later. The server auto-discovers all authenticated accounts at runtime.
Why Swift/EventKit over AppleScript?
AppleScript's Reminders bridge silently hangs on large reminder lists. No error, no timeout. EventKit accesses the database directly via macOS framework. The first approach failed in testing; the pivot happened in the same session.
Why security-first build order?
Input validation (Zod schemas), rate limiting, and secure token storage were built before any tool was written. Retrofitting security into existing code is how vulnerabilities ship. Building it first meant every tool inherited the guardrails automatically.