Nice, I've been messing around with MCP servers lately too. One thing I ran into, Garmin's Connect API has pretty tight rate limits, something like 25 requests per 15 minutes if I remember right. Did you hit that? Also wondering if you're storing raw data in Postgres or just aggregated stuff. Because with sleep tracking you get a datapoint every 30 seconds, that adds up fast.

Thanks, yes I also saw the Garmin MCP and I also tried the TrainingsPeaks MCP. I have a Polar Watch so I needed to build something for myself. I use Terra API for my Data Pipeline. So they normalize and aggregate my Data (so Terra handles all provider-specific rate limits). Storage is a mix, every workout, sleep or daily record gets its own with row extracted summary fields as typed columns (HR, HRV or duration) plus the raw time-series stored as JSONB arrays.

Your point about sleep tracking is real but the JSONB arrays compress well in Postgres and a night's worth of 30s data is 1-2K data points, so it's manageable. The bigger concern is the query performance when you need 90d of sleep data. what MCP Servers have you tried out, something similar?