MCP Servers

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.

2 Shipped
1 In development
2025 First 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)
SDK
@modelcontextprotocol/sdk @cloudflare/workers-oauth-provider
Why it matters
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.
Repo
github.com/andywoodruff6/mes-mcp-server
Why it matters
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.