garmin-athletics-mcp
Provides read-only access to Garmin athletics and wellness data, including daily health, recovery snapshots, performance metrics, workouts, and trends from a Garmin Forerunner 55.
Click on "Install 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-athletics-mcpHow is my recovery looking today?"
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 Athletics MCP
A private, read-only Model Context Protocol server that gives local Codex and Claude Desktop sessions access to athletics and wellness data from a Garmin Forerunner 55.
Security model
Runs locally over MCP
stdio; it does not open a network port.Uses the unofficial
garminconnectpackage and can require maintenance if Garmin changes its private endpoints.Accepts Garmin credentials only through the interactive admin login command.
Stores Garmin session tokens under the current Windows user profile, never in MCP configuration.
Exposes read-only MCP tools. Login, deletion, workout upload, scheduling, and account changes are not tools.
Stores normalized records in SQLite and does not archive raw Garmin API responses.
GPS routes are intentionally not fetched, stored, or exposed.
This project provides training context, not medical advice or diagnosis.
Related MCP server: Garmin MCP Server
What is implemented
The server exposes these read-only tools:
get_daily_healthget_recovery_snapshotget_performance_metricslist_workoutsget_workout_details(splits and metrics only; no GPS)compare_latest_workoutget_athletics_trendsget_recent_athletics_trends
Every information request attempts a fresh Garmin fetch. Calls for the same data within 60 seconds are coalesced so a single agent response cannot hammer Garmin. If Garmin is unavailable, the response may use the timestamped local cache and includes a warning.
The Forerunner 55 provides running VO2 max, recovery time, race predictions, sleep, Body Battery, stress, heart rate, steps, calories, intensity minutes and workout data. Newer features such as HRV Status and Training Readiness are returned as unavailable when the account does not contain them; the server never fabricates substitutes.
Installation
Python 3.12 or newer is required.
python -m venv .venv
.\.venv\Scripts\python.exe -m pip install -e ".[dev]"
.\.venv\Scripts\python.exe -m pytestThis workspace already has Python 3.12, .venv, and the development dependencies installed.
First local login
Close screen-sharing or recording software before entering credentials. From PowerShell in this directory, run:
.\.venv\Scripts\garmin-athletics-admin.exe loginEnter the Garmin email, password and MFA code only in that local terminal. The command saves session tokens under:
C:\Users\dan\AppData\Local\GarminAthleticsMCP\tokensThe password and MFA code are not saved. Do not paste either into Codex, Claude, source files, MCP configuration, or chat.
Check the connection:
.\.venv\Scripts\garmin-athletics-admin.exe doctorImport all eight months of history
After login, run:
.\.venv\Scripts\garmin-athletics-admin.exe backfill --days 245 --delay 2The importer is conservative and resumable. Existing complete days are preserved, failures are reported, and rerunning the same command retries gaps. Use --force only when you intentionally want to re-fetch completed days.
Codex configuration
The repository includes .codex/config.toml. It launches this server through the project virtual environment and points it at the shared Windows-local data directory.
After login:
Restart Codex or start a new task for this trusted workspace.
Confirm the
garmin_athleticsMCP server appears.Ask:
Use Garmin Athletics to show today's health data.
The OpenAI documentation MCP installer was blocked by Windows while this project was built, so the project configuration should be verified in the live Codex UI after restart.
Claude Desktop configuration
An example entry is available at config/claude_desktop_config.example.json.
Your existing Claude configuration is:
C:\Users\dan\AppData\Roaming\Claude\claude_desktop_config.jsonPreserve its existing keys. Add the example's mcpServers object at the top level, then fully restart Claude Desktop. Do not replace the entire existing file with the example.
Useful prompts
Use Garmin Athletics to assess my recovery context today. Separate observed data from interpretation.Compare my latest run with similar runs from the previous 90 days.Show my running volume, pace and VO2 max trends for the last eight months.Show the splits and heart-rate zones for workout 123456789.
Local administration
Check paths and authentication:
.\.venv\Scripts\garmin-athletics-admin.exe doctorDelete the local SQLite database and tokens:
.\.venv\Scripts\garmin-athletics-admin.exe erase --yesDeletion is intentionally unavailable through MCP. After erasing, rerun login to reconnect.
Development verification
.\.venv\Scripts\python.exe -m ruff check .
.\.venv\Scripts\python.exe -m pytest -vvThe tests use mocked Garmin responses. They do not require credentials or contact Garmin.
Troubleshooting
Authentication required: rerun the local
logincommand.429 or throttling: stop retrying and wait before using
doctoragain.Unsupported metric: confirm the Forerunner 55 actually records it; the server returns an availability marker.
Cached response: inspect
source,served_at,fetched_at, andwarningin the tool result.Client cannot start server: verify the absolute Python path in the client configuration and restart the client.
See SECURITY.md and docs/ARCHITECTURE.md for the data boundary and implementation layout.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseBqualityAmaintenanceLocal-first MCP server that connects AI agents to your Garmin sleep, HRV, Body Battery, stress, training readiness and activities, keeping tokens on your machine.Last updated411,0428MIT
- Alicense-qualityBmaintenanceThis Model Context Protocol (MCP) server connects to Garmin Connect and exposes your fitness and health data to Claude and other MCP-compatible clients.Last updated1MIT
- AlicenseAqualityAmaintenanceA Model Context Protocol (MCP) server for Garmin Connect integration. Access your activities, health data, training metrics, and more through Claude and other LLMs.Last updated2248MIT
- Alicense-qualityCmaintenanceSelf-hosted MCP server that exposes 90+ Garmin Connect tools to Claude and includes a live triathlon dashboard.Last updatedMIT
Related MCP Connectors
Garmin data in Claude: 135 tools — activities, sleep, HRV, training, workouts. Free, open source.
Garmin data in Claude & ChatGPT via the Garmin Health API. OAuth sign-in, no password sharing.
WHOOP recovery, strain, sleep and workouts in Claude via official WHOOP OAuth. Free, open source.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/danielmcewan/garmin-athletics-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server