garmin-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@garmin-mcpHow many steps did I take yesterday?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Garmin MCP Server
Connect your Garmin watch data to Claude Desktop. This is a lightweight Model Context Protocol server that lets Claude answer questions like "How did I sleep last night?" or "Summarize my workouts this week" using your real Garmin Connect data.

Tools
Tool | What it returns |
| Step count and step goal for a date |
| Steps, calories, distance, floors, intensity minutes, resting HR, stress, body battery |
| Sleep duration, deep/light/REM/awake breakdown, sleep score |
| Resting, min, max, and 7-day average resting heart rate |
| Recent workouts with distance, duration, pace, calories, heart rate |
| Average and max stress level for a date |
Related MCP server: Garmin Health MCP Server
Setup
Requires Python 3.10+ and Claude Desktop.
git clone https://github.com/cadencheng888/garmin-mcp.git
cd garmin-mcp
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt1. Log in to Garmin (one time)
python garmin_login.pyEnter your Garmin Connect email and password (and an MFA code if your
account uses one). OAuth tokens are saved to ~/.garminconnect and last
about a year — your password is never stored anywhere. If you see
429 — IP rate limited by Garmin warnings, ignore them; the library
falls back to another login method automatically.
2. Add the server to Claude Desktop
Edit your Claude Desktop config:
Mac:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"garmin": {
"command": "/absolute/path/to/garmin-mcp/.venv/bin/python",
"args": ["/absolute/path/to/garmin-mcp/server.py"]
}
}
}3. Try it
Fully quit Claude Desktop (Cmd+Q) and reopen it. Click the tools icon in the chat input to confirm the server is listed, then ask:
How many steps did I take yesterday?
Adding more tools
Add another @mcp.tool() function in server.py that calls any
garminconnect method
(body battery, VO2 max, training status, hydration, weight, and more), then
restart Claude Desktop.
Disclaimer
This project uses the unofficial garminconnect library, which talks to
Garmin's private API. It is not affiliated with or endorsed by Garmin, and
the API can change without notice. Use at your own risk.
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.
Connect Claude to your Intervals.icu watch data for fitness, workout review, and plan writing.
Garmin data in Claude: 135 tools — activities, sleep, HRV, training, workouts. Free, open source.
WHOOP recovery, strain, sleep and workouts in Claude via official WHOOP OAuth. Free, open source.
Related MCP Servers
- AlicenseBqualityAmaintenanceConnects Claude Desktop to Garmin Connect, enabling natural language queries of fitness activity data, health metrics, sleep analysis, workout management, and device information with 94 available tools.1101MIT
- AlicenseAqualityDmaintenanceEnables Claude Desktop to access and analyze Garmin wearable health data including sleep, HRV, Body Battery, and activity metrics. Users can query their health trends, track recovery, and generate interactive HTML dashboards using natural language.96MIT
- FlicenseNot gradedqualityBmaintenanceConnects Claude Desktop to your Garmin Connect running data stored locally in SQLite, enabling querying, syncing, and AI analysis of fitness activities.1-
- AlicenseBqualityAmaintenanceEnables users to analyze their own Garmin Connect data—activities, sleep, HRV, Body Battery, training readiness—directly inside Claude Desktop.132MIT