Your agent can't read your sleep score.
Now it can — right inside Claude and ChatGPT.
MCP server for Garmin, Oura, and Whoop. Connect once; ask about sleep, HRV, recovery, and training load. Fetched on demand, never stored. Works with Claude Code, Cursor, and any MCP client.
Your dashboard has a one-click connector for Claude.ai and ChatGPT — no terminal required. For Claude Code, Cursor, or any other MCP client:
claude mcp add --transport http --scope user ghurt \
"https://ghurt.org/v1/mcp?key=YOUR_API_KEY"
Built by someone who got tired of re-wiring Garmin auth every time it broke.
How your data and credentials are handled
Facts, before you connect anything.
Health data is never stored
Each query fetches from the provider and passes through to your AI. Sleep scores, HRV, workouts — none of it is written to our servers.
Garmin credentials
Your password is used once to obtain a session token, then discarded — never logged or written to disk. Session tokens are encrypted at rest. The decryption key is held outside the database. The Garmin client is in-house; no garth or python-garminconnect
Whoop and Oura — standard OAuth
No passwords involved. You authorize through each provider's own login flow.
Full revocation, anytime
Disconnect any provider in one click from your dashboard. Delete your account to purge everything.
How it works
Three steps, then just ask.
-
Connect your wearable
Whoop and Oura use OAuth — no passwords involved. Garmin requires a one-time credential to establish session access; the password is discarded immediately after and the session token is encrypted at rest.
Whoop Oura Garmin -
Add ghurt to your AI
Your dashboard has a one-click connector for Claude.ai and ChatGPT — no terminal required. For Claude Code, Cursor, or other MCP clients, use the command shown at the top of this page with your API key. No extra packages required.
Claude ChatGPT Cursor Any MCP client -
Ask — ghurt fetches on demand
When your AI calls a ghurt tool, it fetches fresh from the provider and returns structured data with the context (units, baselines, date ranges). There's no synced copy — just a live read each time.
What it actually looks like
An example where the AI surfaces something you couldn't easily see from checking the apps.
Example conversation using Claude with ghurt connected. Actual responses vary by model and data.
The kind of questions that are now just… questions.
Real things you can ask
Your AI looks up the actual numbers and gives you a real answer.
-
What patterns show up in my data before a recovery crash?
-
Am I trending toward overtraining, or just one hard week?
-
Compare my Garmin and Oura recovery signals over the last two weeks
-
What changed the week I traveled — sleep, HRV, strain?
-
Rebuild this week's training around my recovery since Tuesday
-
Build a 30-day dashboard of sleep, HRV, resting HR, and workouts
Why not just build this yourself?
You can. Here's what you'd be taking on.
Garmin auth breaks regularly
Garmin's session mechanism isn't documented and changes without notice. What starts as a weekend project becomes a monthly maintenance task. ghurt handles re-auth silently when sessions expire.
Three providers, one endpoint
Whoop, Oura, and Garmin each have different auth flows, rate limits, response shapes, and date semantics. Normalizing them into something consistent is non-trivial — and you have to keep doing it as APIs change.
Structured for agents, not dashboards
Raw API responses aren't LLM-ready. ghurt formats data with the context — units, baselines, date ranges — that models need to give accurate answers rather than plausible-sounding ones.
Simple pricing
Start free. Upgrade when you need more.
30 uses per calendar month
- Maintained connection across Garmin, Oura, and Whoop
- 30 health data queries per calendar month
- Works with Claude, Cursor, and ChatGPTAlso: any MCP client via API key
- No health data persisted on our servers
Unlimited uses
- Everything in Free, plus unlimited queries
- Sleep, recovery, HRV, strain, and workouts — on demand when you ask
- Works with Claude, Cursor, and ChatGPTAlso: any MCP client via API key
- No health data persisted on our servers
- Custom tools and instructions built for agent use
- Revoke access or delete your account at any time
No surprises.
Frequently asked questions
-
You can. The problem is that wearable APIs change without notice, and Garmin auth in particular breaks regularly. What starts as an afternoon project becomes a maintenance burden. ghurt keeps the connections working and structures the outputs so agents can actually use the data. $10/month is cheaper than debugging Garmin auth at midnight before a race.
-
Currently: Whoop, Oura Ring, and Garmin devices that sync through Garmin Connect.
-
ghurt fetches your data on demand when your agent requests it. There's no continuously synced copy on our servers — data is pulled fresh each time.
-
No. We don't store your health metrics. We store only the minimum session and account data needed to authenticate requests and keep your endpoint working.
-
Yes. Use the Delete my data link in the footer, or email us directly. We'll purge stored account and connection data within 24 hours and confirm by email.
-
Yes. After signing up, your ghurt dashboard has a one-click setup for both Claude and ChatGPT. You don't need a terminal or config files — just click, authorize, and you're done. Developers can also connect via the API key to Claude Code, Cursor, or any other compatible agent.
-
Claude (claude.ai) and ChatGPT connect in one click from your dashboard — that's the easiest path for most people. Claude Code, Cursor, and any other MCP-compatible agent also work using the API key.
-
MCP (Model Context Protocol) is the open standard that lets Claude, ChatGPT, and other AI tools connect to external data sources. ghurt uses it to give your AI real-time access to your wearable data on demand — so when you ask, your AI can actually look it up.