Garmin Connect x MCP · no developer app required
Your watch knows the pattern. Your agent can finally read it.
Garmin MCP hands processed Garmin Connect signals — sleep, HRV, Body Battery, stress, training readiness, respiration, SpO2 and activities — to Claude, Cursor, Windsurf, Hermes, OpenClaw and any MCP-compatible agent.
npx -y garmin-mcp-unofficial setupNo Garmin developer app. No token pasted into chat. Login happens locally; tokens stay under ~/.garmin-mcp.
What actually happens
Garmin is not Strava. The right flow is simpler.
Most people expect to create a developer app. For Garmin personal use, that is usually the wrong mental model: official Garmin Health API access is partner-approved. This MCP uses local Garmin Connect authentication and keeps the sensitive pieces on your machine.
Create a developer app
OAuth client id, client secret, redirect URI, scopes, callback debugging.
Not needed here.Login locally once
The helper asks for Garmin email, password and MFA in your terminal, then stores local tokens with 0600 permissions.
Agents call tools
Start with garmin_connection_status, then garmin_daily_summary or garmin_weekly_summary.
Human x agent handoff
One person logs in. The agent does the rest.
The project is designed so a non-technical Garmin user only has one sensitive job: type credentials locally. Everything else can be delegated to an agent with a clear manifest and doctor output.
No password, MFA code, token or private raw payload should be pasted into chat.
Setup is config-only; auth handles login; doctor explains the exact next step.
Agents are guided to call manifest, connection status, then daily or weekly summaries.
For humans
One local login. Then your agent can reason over Garmin.
The setup step only writes local MCP configuration. The auth step is separate on purpose, so users understand exactly when Garmin credentials are requested.
Install setup
Create local config and MCP client snippets. This step does not ask for your Garmin password.
npx -y garmin-mcp-unofficial setupConnect Garmin locally
The helper prompts for Garmin login and MFA on your machine. If Homebrew blocks Python installs, it creates an isolated venv automatically.
npx -y garmin-mcp-unofficial auth --install-helperRun doctor
npx -y garmin-mcp-unofficial doctor
npx -y garmin-mcp-unofficial doctor --client hermesIf doctor says ready, start your MCP client and call garmin_daily_summary.
First successful pull
What users should expect to see.
The toolbelt
Processed health signals, shaped for agents.
Built for useful reasoning first: broad endpoint coverage plus daily and weekly summaries that turn Garmin data into grounded actions.
For agents
A manifest that teaches agents the safe path.
Agents should call garmin_agent_manifest and garmin_connection_status first. Hermes gets direct tool names, pinned package guidance and reload instructions so it does not restart the gateway for normal Garmin access.
Install the unofficial Garmin MCP server for me.
Repo: https://github.com/davidmosiah/garminmcp
Run setup, auth --install-helper and doctor.
Never ask me to paste Garmin passwords or tokens.
Start with garmin_connection_status, then garmin_daily_summary.Privacy dossier
Designed around health data being sensitive.
This bridge is read-only by design and local-first by default. Raw mode exists for debugging, but agents are instructed to prefer summary or structured payloads unless the user explicitly asks for raw.
garmin_privacy_audit reports postureOpen source