search_activities
Activities
Get activities. Returns summaries with activityId, name, type, start time, distance, duration, and heart rate. Use activityId with get_activity for full details.
limitstartendDatestartDateactivityType
io.github.DynamicsNinjaPublished by GitHub account DynamicsNinjav1.0.0Updated Oct 29, 2026
Read your Garmin sleep, HRV, steps, stress, Body Battery, and activities (unofficial)
Unofficial local MCP server that lets an assistant read your Garmin Connect sleep, HRV, steps, stress, Body Battery and activity data.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Follow the launch instructions in the repository.
Unofficial. This is a community project. It isn't affiliated with or endorsed by Garmin.
An MCP server that lets Claude and other AI assistants read your Garmin Connect data through Garmin's official Personal API. Ask questions such as:
It's built on garmin-connect-personal-api-js and is read-only: it can't change anything in your account.
GARMIN_PERSONAL_API_KEY. You need Node.js 20.4 or newer.Open Settings → Developer → Edit Config and add:
Restart Claude Desktop afterward.
Run npx -y garmin-connect-personal-api-mcp as a stdio server with
GARMIN_PERSONAL_API_KEY set.
Instead of the environment variable, you can save the key in
~/.config/garmin/connect-personal-api-key (on Windows,
%USERPROFILE%\.config\garmin\connect-personal-api-key) and leave env out of
the configuration. This is the same key file the gc-personal CLI uses.
Dates use YYYY-MM-DD and default to today. Date ranges are inclusive.
The server exchanges your API key for a bearer token and caches it in
~/.config/garmin/connect-personal-api-bearer-token.json, shared with the
gc-personal CLI. Tokens are renewed before they expire, and a rejected token
is replaced automatically.
Your data goes from Garmin to the AI client you connect, so it's subject to that client's privacy terms.
Apache 2.0. See LICENSE.
Source: mcp/README.md at commit 339f39f
Activities
Get activities. Returns summaries with activityId, name, type, start time, distance, duration, and heart rate. Use activityId with get_activity for full details.
limitstartendDatestartDateactivityTypeDaily Stress
Get daily stress.
endDatestartDateDaily Steps
Get daily steps.
endDatestartDateDaily Hydration
Get daily hydration.
endDatestartDateEffective Weight Goals
Get effective weight goals.
endDatestartDateWeight Measurements
Get weight measurements.
endDatestartDateFood Logs
Get food logs.
dateUser Profile Settings
Get user profile settings. Includes units, time zone, and date format, which help interpret other responses.
Takes no parameters.
Daily Sleep
Get daily sleep. Detailed sleep for one night, including stages, scores, and overnight readings.
dateDaily Sleep Summaries
Get daily sleep summaries. One summary per night, including duration, stages, and sleep score. Prefer this over get_daily_sleep for trends.
endDatestartDateDaily Body Battery
Get daily body battery.
chunksendDatestartDateUser Daily Summaries
Get user daily summaries. One summary per day with steps, calories, heart rate, stress, Body Battery, intensity minutes, and respiration. Use the same start and end date for a single day.
endDatestartDateDaily Heart Rate
Get daily heart rate. All heart rate samples for one day; the response can be large.
dateDaily HRV
Get heart rate variability (HRV) summary and readings for a calendar date.
dateDaily HRV Summaries
Get daily heart rate variability (HRV) summaries for an inclusive date range. One HRV summary per night with weekly average, baseline, and status.
endDatestartDateHeart Rate Zones
Get heart rate zones.
Takes no parameters.
Menstrual Cycle Summary
Get menstrual cycle summary.
dateMenstrual Cycle Day View
Get menstrual cycle day view.
datetodayDateFitness Age
Get fitness age.
dateDaily SpO2
Get daily spo2.
dateWellness Activity Summaries
Get wellness activity summaries.
endDatestartDateActivity Details
Get activity details.
activityIdrequiredActivity Workouts
Get activity workouts.
activityIdrequiredPersonal API GET
GET any Personal API path that has no dedicated tool, such as one from the Personal API Swagger documentation. The path starts with a slash, for example /usersummary-service/stats/steps/daily/2026-10-01/2026-10-07.
pathrequiredparams90% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
{ "mcpServers": { "garmin": { "command": "npx", "args": ["-y", "garmin-connect-personal-api-mcp"], "env": { "GARMIN_PERSONAL_API_KEY": "your-personal-api-key" } } }}claude mcp add garmin --env GARMIN_PERSONAL_API_KEY=your-personal-api-key -- npx -y garmin-connect-personal-api-mcp