mcp-server-garmin
Allows interaction with Garmin Connect, providing tools for retrieving daily summaries, heart rates, sleep, HRV, stress, body composition, activities, training readiness, and logging weight.
This server does not currently have a deployable release on Glama. Follow the repository's setup instructions to install and configure it for your MCP client, including any required credentials and local dependencies.
mcp-server-garmin
MCP server for Garmin Connect (personal health/fitness data) with per-user login and encrypted, per-user token storage.
Unofficial API. Garmin has no obtainable official API for individual developers, so this uses
python-garminconnectagainst Garmin's private endpoints. This may violate Garmin's Terms of Service and can break when Garmin changes their auth. Login is rate-limited per account (24–48h blocks) — the server logs in once per user and rides the token.
Isolation
Behind an authenticating gateway that forwards the signed-in user as X-MCP-User, every tool is bound to that user. Tokens are AES-256-GCM encrypted per user; a user only ever reaches their own data, and the server fails closed without a verified identity. Passwords are never stored — only the resulting OAuth tokens. Users enroll via garmin_connect, which returns a single-use browser form where they enter their Garmin credentials (kept out of Claude entirely).
Related MCP server: garth-mcp-server
Security configuration
MCP_HTTP_TOKEN— shared bearer the gateway must send on/mcp(Authorization: Bearer <token>), compared in constant time. It is required whenGARMIN_TRUST_FORWARDED_USER=true: the server refuses to start without it, because otherwise anyone who can reach the port could claim anyX-MCP-User. Keep/mcpreachable only from the gateway.The enrollment page shows which gateway identity the link is bound to and requires an explicit confirmation, bound to the confirming browser (HttpOnly cookie), before it accepts Garmin credentials. Links are single-use and expire after 10 minutes.
Tools
garmin_connect / garmin_status / garmin_disconnect; garmin_daily_summary, garmin_get_heart_rates, garmin_get_sleep, garmin_get_hrv, garmin_get_stress, garmin_get_body_composition, garmin_get_activities, garmin_get_training_readiness; garmin_log_weight (write, GARMIN_ENABLE_WRITES=true).
Run
pip install --require-hashes -r requirements.lock
python -m app.server # /mcp + /garmin/enroll on :3000
PYTHONPATH=. pytest tests/Dependencies are pinned with hashes in requirements.lock. To update them, edit pyproject.toml and regenerate:
uv pip compile pyproject.toml --generate-hashes --universal --python-version 3.12 -o requirements.lockDocker images: ghcr.io/borgels/mcp-server-garmin.
This server cannot be deployed
Maintenance
Related MCP Connectors
MCP server for Withings health data — sleep, activity, heart, and body metrics.
Multi-tenant hosted MCP server for Oura Ring — 21 read-only tools, OAuth per user.
Remote MCP server for training, nutrition, wellness, and performance data with OAuth 2.0.
Unofficial Garmin Connect access: sleep, HRV, training, activities, workouts and weight.
Related MCP Servers
- AlicenseAqualityCmaintenanceMCP server for Garmin Connect that provides read-only access to daily health metrics, activities, workouts, and body composition data.32MIT
- AlicenseNot gradedqualityDmaintenanceMCP server to interact with Garmin Connect, enabling retrieval of health, activity, and device data through natural language.66MIT
- FlicenseAqualityDmaintenanceMCP server that connects AI assistants to Garmin Connect health and fitness data, enabling natural language queries about workouts, sleep, heart rate, and more.29-
- AlicenseAqualityDmaintenanceMCP server that exposes Garmin Connect health and activity data (steps, sleep, stress, activities, etc.) via tools for querying, analysis, and visualization.17Apache 2.0