Garmin Connect MCP
Provides read-only access to your own Garmin Connect data through Garmin's Personal API, including activities, sleep, HRV, Body Battery, stress, steps, heart rate, weight, nutrition, and women's health data.
This server does not currently have a deployable release on Glama. Follow the repository's setup instructions to install and configure it for your MCP client, including any required credentials and local dependencies.
Garmin Connect MCP
Let Claude, Gemini, ChatGPT or any other MCP client read your own Garmin data (activities, sleep, HRV, Body Battery, stress, steps, heart rate, weight and more) through Garmin's official Connect Personal API.
"How did I sleep this week compared to last week?" · "Summarize my last five runs." · "Which days this month did I miss my step goal?"
It exposes all 26 Personal API endpoints as read-only tools, and you can host it yourself for free on Vercel.
Unofficial community project, not affiliated with or endorsed by Garmin.
Set up on Vercel
1. Create a Garmin API key. In Garmin Connect on the web, open Settings → Personal API Token, select Create Key and copy it. Garmin shows it only once.
2. Generate two secrets: a client secret for the app to store, and a sign-in password that only you type. Run this twice:
openssl rand -base64 323. Deploy and fill in the variables when Vercel asks:
Environment variables
Variable | Value | What it's for |
| The key from step 1 | Reads your Garmin data. Required. |
| First secret from step 2 | The client secret you enter in Claude, Gemini or ChatGPT. |
| Second secret from step 2 | Your sign-in password, typed on your server's sign-in page when you connect an app (step 5). Also lets header-based clients like Claude Code connect directly. |
|
| The client ID you enter in the app. Keep the default. |
| Optional, add later if needed | Extra allowed sign-in callback URLs, comma-separated. Claude's, Gemini's and ChatGPT's are already allowed. |
MCP_OAUTH_CLIENT_SECRET and MCP_AUTH_TOKEN are each optional, but at least one must be set. Without MCP_AUTH_TOKEN, the sign-in page asks for the client secret instead.
Your server is now at https://<your-project>.vercel.app/mcp. Vercel's free Hobby plan is enough. Recommended: under Settings → Environment Variables, recreate the two secrets as Sensitive (their values can't be read back afterwards), then redeploy. The deploy button can't do this for you.
4. Add a custom connector in your app with:
Field | Value |
Server URL |
|
Client ID |
|
Client secret | Your |
Claude (claude.ai and Claude Desktop): Settings → Connectors → Add custom connector. The client ID and secret go under Advanced settings.
Gemini: add a custom MCP connector and fill in Client ID and Client secret. If it also asks for URLs, use
https://<your-project>.vercel.app/oauth/authorize(authorization),https://<your-project>.vercel.app/oauth/token(token) and scopegarmin:read.ChatGPT: create a connector in developer mode (on plans that offer custom connectors), choose OAuth with a user-defined OAuth client, and leave the registration URL empty.
5. Sign in. When you connect, Claude, Gemini or ChatGPT opens a sign-in page from your own server that asks for MCP_AUTH_TOKEN. Paste it and select Allow access. You only do this once per connection.
This is expected. The client ID and secret identify the app; the sign-in page proves the person connecting is you, so a leaked client secret alone isn't enough to read your data. If the page says a redirect URL isn't allowed, add that URL to MCP_OAUTH_REDIRECT_URIS and redeploy.
Claude Code connects with the token directly:
claude mcp add --transport http garmin https://<your-project>.vercel.app/mcp --header "Authorization: Bearer <MCP_AUTH_TOKEN>"Other clients, running locally, and other hosts: see docs/deployment.md.
Related MCP server: garmin-connect-mcp
Tools
All tools are read-only. Dates are YYYY-MM-DD in your local calendar.
Area | Tools |
Profile |
|
Activities |
|
Daily wellness |
|
Sleep |
|
Heart & recovery |
|
Body |
|
Nutrition |
|
Women's health |
|
Each tool's description tells the model what it returns, its units and its limits, so you don't need to learn them.
Good to know
Your own data only, read-only. That's the scope of Garmin's Personal API. It doesn't cover commercial or multi-user apps, and it can't upload workouts.
Keys expire. You choose 30 days to 1 year when creating the key, and Garmin emails you before it expires. Create a new key, update
GARMIN_API_KEYin Vercel, and redeploy.Keep your secrets secret.
MCP_AUTH_TOKENandMCP_OAUTH_CLIENT_SECRETare what protect your data. If one leaks, change it in Vercel and redeploy. Changing either also signs out every OAuth connection.
Development
npm install && npm testnpm run smoke checks every tool against the real API using GARMIN_API_KEY from .env, and prints only response shapes, never your data. Architecture and conventions are in AGENTS.md.
License
MIT © Pedro Kehl
This server cannot be deployed
Maintenance
Related MCP Connectors
Garmin data in Claude & ChatGPT via the Garmin Health API. OAuth sign-in, no password sharing.
Multi-tenant hosted MCP server for Oura Ring — 21 read-only tools, OAuth per user.
Your Garmin, Oura, WHOOP, Hevy and 35 more fitness apps, queryable from your own AI.
Garmin data in Claude: 135 tools — activities, sleep, HRV, training, workouts. Free, open source.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceEnables users to query Garmin health, activity, sleep, HRV, and training data through read-only MCP tools from ChatGPT or Codex.Apache 2.0
- AlicenseNot gradedqualityBmaintenanceExposes your own Garmin Connect activity, health, and training data as read-only MCP tools, covering activities, workouts, sleep, heart rate, HRV, stress, body battery, weight, and women's health. Most tools use Garmin's official Personal API key, with a clearly labeled unofficial fallback for data the official API doesn't yet cover, such as training readiness and VO2 max.MIT
- AlicenseAqualityAmaintenanceEnables MCP-capable AI apps to query a user's own Garmin sleep, HRV, stress, Body Battery, heart-rate, activity, and body-metric data through Garmin's official Personal API in a read-only, locally run setup.14266 PyPI1MIT
- AlicenseBqualityCmaintenanceA read-only MCP server that lets AI agents query a user's own Garmin Connect data via Garmin's official Personal API. It exposes activities, daily wellness metrics, sleep and recovery, and body/profile data as tools for natural-language analysis.21Apache 2.0