Where I'm putting my building hours. Model Context Protocol is becoming the plumbing
between agents and the real world — I'm running one server in production today and shipping
the next two, betting this niche matters more in 2026 than the consensus has priced in.
2Shipped
1In development
2025First deploy
Shipped
Todoist + Telemetry Logging
Production · since Sep 2025
A remote, GitHub-OAuth-protected MCP server that gives any agent secure read/write access
to my Todoist — and quietly logs every tool call so the AI can answer "how much time did
you save me?" Two surfaces in one server: a Todoist control plane and an AI-usage
observability plane. Live on Cloudflare's edge since September 2025.
Live
Cloudflare Workers
Stack
Cloudflare Workers + Durable Objects + D1 + KV
Auth
GitHub OAuth (per-user approval, not a shared API key)
Quantifies the AI's actual impact — every tool call lands in D1 with a configurable
time-saved weight, so the server can answer "how much time did you save me this
month?" with real numbers. Most MCP servers expose data; this one also measures
itself.
Madison Endurance Sports
Shipped · v0.1 · May 2026
A FastMCP server for Madison-area endurance athletes — race discovery, NWS race-day
weather, and recurring group rides — wrapped in a /race_prep slash command
that resolves fuzzy race references ("madtown half" → the right race) and
returns a focused pre-race read: how long you'll be out there, what conditions to
expect, and basic nutrition matched to both.
Stack
Python — FastMCP 3.x on Prefect Horizon
Surface
find_races, race_weather, find_group_rides,
and the /race_prep prompt
Data
Hand-curated Madison race + group-ride seed (Ironman Wisconsin, Run Madtown, Horribly
Hilly, Wisconsin Triathlon Series, Trek Bicycle Madison rides, MadCity Runners…); NWS
for inside-7-days forecasts; bundled 30-year NOAA climate normals beyond. Optional
RunSignup enrichment when an API key is provided.
Two design moves I want to be known for: (1) dual-channel weather — the
server refuses to invent race-day forecasts beyond NWS's honest 7-day horizon, and
falls back to a labeled climate normal rather than confidently presenting next
week's weather as race day's. (2) Fuzzy slash-command UX — slash commands
that demand UUIDs are a portfolio piece, not a product; resolving
"madtown half" server-side is the difference. The piece collapses six
websites of Madison endurance planning into one MCP conversation built on FastMCP
idioms a Prefect engineer can read in under five minutes.
In development
Household + Food
In development
One MCP server, two domains — a shared context layer my wife and I both pass data through.
Household side: shared calendars, home-maintenance reminders, weekend agenda buffer.
Food side: pantry inventory, fridge and freezer inventory, weekly meal plan, and an
auto-generated shopping list that's just meal plan minus inventory.
The user interface isn't tools, it's slash commands —
/plan_week, /weekend_brief, /restock_decision,
/maintenance_check — so neither of us has to learn an API to use what's
really a shared family operating layer.
Why MCP, why now
The protocol consolidated in 2025 — one transport survived (Streamable HTTP), auth
formalized around OAuth 2.1 + PKCE + Dynamic Client Registration, Cloudflare turned into a
first-class host. The hard parts of writing a remote, secure, multi-user MCP server are now
~80% scaffolded. The remaining 20% is the part I want to be known for: agent-native product
design — discovery, iteration, context. Most servers expose APIs. The good ones design for
how an agent actually uses them.
The longer bet: agents need trust. MCP today authenticates the user to the server; it
doesn't carry verifiable identity for the agent acting on the user's behalf. Self-sovereign
identity is the missing layer there — and
that's the ten-year bet this MCP work is the agent-side counterpart to.