mcp-garmin-connect
Provides tools to retrieve Garmin Connect data including recovery, sleep, stress, activities, training load, fitness, zones, personal records, and running summaries.
Allows sending Garmin health and activity data to OpenAI's Chat Completions API for natural language queries about training and recovery.
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., "@mcp-garmin-connectWhat should my training focus be this week based on my recovery?"
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.
mcp-garmin-connect
LLM-agnostic Garmin Connect MCP server for training, recovery, sleep, stress, VO2 Max, race predictions, and running summaries.
Use the same local Garmin tools from MCP clients such as Claude Desktop, Claude Code, Cursor, Continue, Hermes, or from provider-backed demo agents using DeepSeek, OpenAI, or Claude API.
Why This Exists
Most fitness advice from LLMs is generic. This server lets an LLM inspect your real Garmin Connect data first, then answer with context from your activities, recovery markers, HRV, sleep, stress, VO2 Max, and running history.
The core server is provider-neutral. DeepSeek, OpenAI, and Claude integrations are optional demo bridges for clients that do not speak MCP directly.
Related MCP server: claude-garmin
Features
Local MCP server for Garmin Connect over
stdioor Streamable HTTP.14 Garmin tools and 4 prompt templates.
Provider demo bridge for
deepseek,openai, andclaude.Windows-first CLI, with cross-platform Python project structure.
Explicit opt-in before Garmin health/activity data is sent to any external LLM provider.
Mocked test suite plus optional live Garmin smoke tests.
Languages And Stack
Area | Technology |
Main language | Python 3.11+ |
Package manager | uv |
MCP server |
|
Garmin access |
|
Provider API calls |
|
Tests | pytest |
Linting | ruff |
Client config examples | JSON, YAML, PowerShell |
Quick Start
uv sync
Copy-Item .env.example .env
notepad .envSet Garmin credentials:
GARMIN_EMAIL=you@example.com
GARMIN_PASSWORD=your-passwordAuthenticate once:
uv run garmin-mcp login
uv run garmin-mcp doctor --liveList available MCP tools:
uv run garmin-mcp toolsRun as a local MCP server:
uv run garmin-mcp serve --transport stdioRun as an HTTP MCP server:
uv run garmin-mcp serve --transport http --host 127.0.0.1 --port 8765HTTP clients can connect to:
http://127.0.0.1:8765/mcpProvider Demo Agents
Provider API access may require a paid account or credits even if the provider's web app has a free tier.
DEEPSEEK_API_KEY=sk-...
OPENAI_API_KEY=sk-...
ANTHROPIC_API_KEY=sk-ant-...Provider | Env key | Default model | API style |
DeepSeek |
|
| OpenAI-compatible Chat Completions |
OpenAI |
|
| OpenAI Chat Completions |
Claude |
|
| Anthropic Messages API |
Ask through a provider bridge:
uv run garmin-mcp ask "How is my recovery today?" --provider deepseek --allow-external-health-data
uv run garmin-mcp ask "Summarize my running for 90 days." --provider openai --allow-external-health-data
uv run garmin-mcp ask "What should I focus on this week?" --provider claude --allow-external-health-dataThe --allow-external-health-data flag is required because Garmin tool results can be sent to the selected provider.
MCP Tools
Tool | Purpose |
| Readiness, HRV, sleep, body battery, resting HR, training status if available |
| Sleep duration and sleep score trends |
| Daily stress buckets and average stress |
| Recent normalized activity summaries |
| One activity with training effect fields |
| Volume by sport based on recent activities |
| Native Garmin Training Load when the device/account exposes it |
| VO2 Max, FTP, and race predictions |
| Heart-rate and power zones when available |
| Garmin personal records |
| 90-day running summary with pace, HR, longest and fastest run |
| Monthly running breakdown |
| Compact recovery, sleep, and stress snapshot |
| Broad multi-section Garmin snapshot |
MCP Prompts
recovery_checkweekly_training_reviewactivity_analysisrace_plan_context
Client Setup
See docs/clients for examples covering:
Claude Desktop
Claude Code
Cursor
Continue
Hermes
Generic stdio MCP clients
Generic HTTP MCP clients
Minimal stdio config:
{
"mcpServers": {
"garmin": {
"command": "uv",
"args": [
"--directory",
"C:\\Users\\Jason\\Documents\\GitHub\\mcp-garmin",
"run",
"garmin-mcp",
"serve",
"--transport",
"stdio"
]
}
}
}Testing
uv run garmin-mcp doctor
uv run garmin-mcp doctor --live
uv run garmin-mcp tools
uv run ruff check .
uv run pytestOptional live tests are gated and do not run in CI by default:
$env:GARMIN_LIVE_TEST = "1"
uv run pytest tests/liveCurrent local validation target:
ruff: All checks passed
pytest: all mocked tests pass, live test skipped unless enabledPrivacy And Safety
Your .env file and Garmin token cache stay local and are ignored by git.
MCP clients that run locally can call Garmin tools without sending provider API keys to this project. Provider demo commands such as garmin-mcp ask can send Garmin health/activity results to the selected LLM provider, so the CLI requires --allow-external-health-data.
Garmin Disclaimer
This project uses the community garminconnect Python package and Garmin Connect endpoints. Garmin Connect is not a public API for individual open-source projects, and authentication or endpoint behavior may change without notice.
Some metrics depend on Garmin device capabilities. For example, a device may expose VO2 Max and Training Effect but not native Garmin Training Load or Training Status.
Star History
After this repository is published, open the Star History page above and use its
Show real-time chart on your README.md generator to create the live README
embed. Star History currently requires a GitHub token for live charts because
GitHub restricts star history data to repository owners and collaborators.
License
This project is licensed under the MIT License.
Publish
Codex does not push this repo. To publish it yourself:
git remote add origin https://github.com/Kavakoss/mcp-garmin-connect.git
git push -u origin mainMade by kavakoss.
Inspired by Jack-Abyss/claude-garmin, with a clean-room implementation focused on LLM-agnostic MCP usage.
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
- FlicenseBqualityDmaintenanceA Model Context Protocol server that integrates Garmin Connect data with LLMs to provide personalized running analysis and training plans. It enables users to monitor performance metrics, manage training loads, and receive data-driven workout suggestions based on health indicators like VO2 Max and recovery status.435
- Alicense-qualityBmaintenanceMCP server that connects Garmin Connect data to Claude, enabling training analysis, recovery checks, and personalized plans based on real metrics like HRV, training load, and activities.12MIT
- AlicenseAqualityAmaintenanceA Model Context Protocol (MCP) server for Garmin Connect integration. Access your activities, health data, training metrics, and more through Claude and other LLMs.2250MIT
- Alicense-qualityBmaintenanceMCP server to interact with Garmin Connect, enabling retrieval of health, activity, and device data through natural language.63MIT
Related MCP Connectors
Garmin data in Claude & ChatGPT via the Garmin Health API. OAuth sign-in, no password sharing.
MCP server for Withings health data — sleep, activity, heart, and body metrics.
MCP server for Argo RPG Platform — connects AI assistants to campaign data via OAuth2
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/kavakoss/mcp-garmin-connect'
If you have feedback or need assistance with the MCP directory API, please join our Discord server