About Paceva for Garmin
Paceva for Garmin is a local, read-only MCP server for querying personal Garmin Connect data. It is for people who want an MCP app to inspect health and activity records using their own Garmin Personal API key, without added scores or advice.
Key features
- 01Sleep, HRV, Body Battery, and stress data
- 02Daily summaries and health measurements
- 03Training logs and activity details
- 04Profile, weight, hydration, and food records
- 05Local key storage and read-only access
Use cases
- 01Review sleep and HRV trends
- 02Compare recent running activities
- 03Inspect daily steps and heart rate
- 04Ask an MCP app about Garmin health records
MCP support
Exposes Garmin Personal API data to MCP clients through read-only tools for daily metrics, sleep, HRV, activities, and other available records. The server runs locally and uses the user's Garmin Personal API key.
Configuration
Local server config is the same for every client. Copy it into your client’s MCP config file.
npx -y paceva-garmin-mcpGARMIN_PERSONAL_API_KEYSecretYour Garmin Personal API key (optional if saved with `npx paceva-garmin-mcp setup`).Local servers need a runtime on your machine (e.g. Node.js 18+). Config file locations differ by client; see your client’s docs.
Tools
18Saved tool list · updated 1d ago
| Parameter | Type | Required | Description |
|---|---|---|---|
| date | string | No | Calendar date, YYYY-MM-DD. Defaults to today. |
| include_series | boolean | No | Include minute-by-minute series. Off by default: long series come back as count, min, max and average. |
Details
From the project README
Paceva for Garmin
Ask Claude or any MCP app about your own Garmin data: sleep, HRV, Body Battery, stress, resting heart rate, steps and activities.
"How did I sleep last night?" "Is my HRV trending down this month?" "Compare my last three long runs." "What could I run a half marathon in right now?"
Free, open source and local. It runs on your computer with your own Garmin Personal API key. Your data goes from Garmin to your computer to your AI app, and never through anyone else's server. It's read-only: it can't change anything in Garmin Connect.
Set up
Claude Desktop: one download
- Download paceva-garmin.mcpb and open it.
- Claude asks for your Garmin key: open Garmin Connect › Personal API Key, select Create Key, copy it, paste it in.
- Switch Paceva for Garmin on. Claude installs extensions switched off.
- Ask Claude: "How did I sleep last night?"
Everything else: one command
Needs Node.js 20 or newer. In a terminal:
npx github:OwenScheuer/paceva-garmin-mcp
It opens Garmin for you, picks up the key once you've copied it, checks it with Garmin, and adds itself to Claude Desktop, Claude Code, Cursor and Windsurf, whichever you have. Restart the app and ask away.
For any other MCP app, add this to its MCP servers:
"garmin": { "command": "npx", "args": ["-y", "github:OwenScheuer/paceva-garmin-mcp"] }
ChatGPT only connects to servers on the internet, not ones on your computer, so it can't use this yet.
New key later? npx github:OwenScheuer/paceva-garmin-mcp --new-key. Check it's working: npx github:OwenScheuer/paceva-garmin-mcp check.
What it can read
| Tool | What it gives your AI |
|---|---|
get_daily_overview | One day at a glance: summary, sleep, HRV and Body Battery |
get_daily_summaries | Steps, calories, resting HR, stress and intensity minutes per day |
get_sleep | One night in detail, or nightly summaries over a range |
get_hrv | Overnight HRV, baseline and status |
get_body_battery | Charged, drained, high and low |
get_stress · get_steps · get_heart_rate · get_spo2 | Daily stress, steps, heart rate and Pulse Ox |
get_training_log | Every activity in a period (up to a year) with Garmin's main fields: distance, time, speed, heart rate, power, TSS, fastest splits, time in zones |
list_activities · get_activity | Your activities, and any one in full |
get_profile | Profile settings and heart rate zones |
get_weight · get_fitness_age · get_hydration · get_food_log · get_menstrual_cycle | The rest of what Garmin's Personal API offers |
Just Garmin's data. No scores, models or advice are added: every number is Garmin's, in Garmin's own field names and units. Ask "what could I run a 10K in?" and any prediction is your AI's own, made from that data.
Ranges are capped at 92 days per call (a year for the training log). Minute-by-minute series (heart rate through the day, sleep stages) come back as a count, min, max and average unless your AI asks for the full series.
Garmin's Personal API doesn't include training readiness, training status or recovery time, so neither does this.
Your key and your privacy
- Your key is saved to
~/.config/garmin/connect-personal-api-key, the same place Garmin's own tools look, readable only by you. You can also setGARMIN_PERSONAL_API_KEYinstead. - The short-lived access token Garmin issues is cached in
~/.config/paceva-garmin/token.json, also readable only by you. - The data your AI app reads is sent to that app's provider (for example Anthropic or OpenAI) as part of your chat, under their privacy terms.
- To revoke access, delete the key in Garmin Connect.
Garmin's Personal API is for your own data. Each person uses their own key; please don't build a service that collects other people's keys.
Troubleshooting
- "Garmin didn't accept your Personal API key": it expired or was deleted. Run
npx github:OwenScheuer/paceva-garmin-mcp --new-key. (For the Claude Desktop extension, update the key in Settings › Extensions.) - "No Garmin Personal API key found": run
npx github:OwenScheuer/paceva-garmin-mcpin a terminal. - "Garmin is rate-limiting requests": wait a minute and ask again.
Development
npm install
npm test
npm run build
./scripts/pack-mcpb.sh # builds paceva-garmin.mcpb
Not affiliated with or endorsed by Garmin. Garmin and Garmin Connect are trademarks of Garmin Ltd. or its subsidiaries.
MIT licensed. Made by Paceva.
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.