Garmin MCP
Provides read-only access to a Garmin account, including activities, sleep, heart rate, stress, HRV, and training metrics through 20 tools.
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.
Garmin MCP on Cloudflare Workers
Read Garmin activities, sleep, heart rate, stress, HRV, and training metrics in Claude, ChatGPT, or another remote MCP client. Self-host one account with 20 read-only tools, OAuth, and encrypted session storage. No container or paid Cloudflare feature is required.
Install
You need a Cloudflare account on Workers Free, Git, Node.js 24+, and uv. Run this on macOS, Linux, or WSL in your own terminal:
git clone https://github.com/sepehr/cloudflare-garmin-mcp.git && cd cloudflare-garmin-mcp && npm ci && npm run setupThe wizard asks for your Cloudflare account ID, Worker name, and full Worker URL
(for example https://garmin.YOUR-SUBDOMAIN.workers.dev). Find your account ID
and workers.dev subdomain in the Cloudflare dashboard. It opens Cloudflare
sign-in if needed, prompts locally for Garmin credentials and MFA, provisions
storage, and deploys the Worker. Use a new Worker name for your first install.
Garmin credentials are not printed or added to the repository. The session and encryption key go to Cloudflare Secrets through a private input pipe. The wizard saves your separate owner access code and encryption key in private files outside the checkout and shows their paths. Back them up privately. Your Garmin password is sent only to Garmin, never to Cloudflare.
Related MCP server: Garmin MCP Server
Connect
Add https://YOUR-WORKER.YOUR-SUBDOMAIN.workers.dev/mcp as a remote MCP server
with OAuth in your client. In Claude, use Customize → Connectors → Add custom
connector. Approve the browser consent with your owner access code, not
your Garmin password. Organization plans may need an administrator to enable
custom connectors. Never paste credentials into a chat.
Try: “Summarize my activities and sleep for the last seven days.”
Prefer plugin uploads? Download the release ZIPs for ChatGPT and Claude. They are templates: set your Worker URL before import.
Updates and limits
To update code, pull changes, run npm ci, then
npx wrangler deploy --config wrangler.local.jsonc.
Keep the encryption key. To replace an expired Garmin session, rerun
npm run setup with the same private setup files. See security and recovery.
Workers, KV, and SQLite Durable Objects have free allowances. Usage limits, including CPU time, still apply; this is not a guarantee that every request fits the free limit. No plan upgrade is performed. See Cloudflare limits. Garmin's unofficial API can change or block sign-in. Only garmin.com is supported.
Activity lists are paginated. Follow next_start while has_more is true.
Missing readings are not zero. One deployment serves one Garmin account.
Development
npm ci
npm run check
npm test
npm run setup -- --dry-runTests use fake Garmin responses. The dry run bundles locally without signing in or deploying. See AGENTS.md for contribution rules.
Inspired by the minimal tool profile in taxuspt/garmin_mcp, rewritten in TypeScript for Workers. See THIRD_PARTY_NOTICES.md.
License
MIT.
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.
Multi-tenant hosted MCP server for Oura Ring — 21 read-only tools, OAuth per user.
Hosted MCP server with managed OAuth for 15+ toolkits: Google Workspace, Fitbit, Oura, Kalshi, etc.
Pace is a remote MCP server that exposes wearable and fitness data to Claude via the Model Context Protocol. It connects to Garmin, Oura, Whoop, Polar, Fitbit and 20+ devices and provides 15 tools for querying sleep, activity, recovery, and training data. Hosted on Google Cloud Run, OAuth 2.1 authentication, Streamable HTTP transport. Instructions: First you need to create an account at: https://pacetraining.co and connect your wearables. After that you can connect the remote Server via Custom Connector in Claude and OAuth 2.1 Flow startet.
Related MCP Servers
- FlicenseAqualityCmaintenanceA local MCP server that exposes Garmin Connect activity, health, and training data as tools for Claude Desktop. It provides read-only access to metrics like activities, sleep, heart rate, and training readiness.25-
- AlicenseBqualityCmaintenanceA read-only MCP server that lets AI agents query a user's own Garmin Connect data via Garmin's official Personal API. It exposes activities, daily wellness metrics, sleep and recovery, and body/profile data as tools for natural-language analysis.21Apache 2.0
- AlicenseNot gradedqualityNot gradedmaintenanceA read-only remote MCP server that lets Claude query your own Garmin Connect wellness and activity data — sleep, HRV, Body Battery, stress, heart rate, daily summaries, and workout details — through Garmin's official Personal API, with OAuth sign-in so it works from mobile and desktop clients.MIT
- AlicenseNot gradedqualityNot gradedmaintenanceEnables Claude and other remote MCP clients to query your own read-only Garmin Connect data — recovery trends, sleep, HRV, Body Battery, stress, heart rate, and activities — through Garmin's official Personal API, with OAuth sign-in that works from the mobile apps as well as desktop. Deploys on Cloudflare Workers' free tier with no password sharing or scraping.MIT