garmin-mcp
garmin-mcp
Удалённый MCP-сервер для Garmin Connect на Cloudflare Workers (бесплатный тариф). Полный порт на TypeScript проекта taxuspt/garmin_mcp: все 138 инструментов плюс проброс garmin_get (всего 139) и 5 ресурсов MCP для шаблонов/справочников тренировок.
Модули: управление активностью (21), здоровье и самочувствие (29), тренировки и производительность (15), тренировки + конструкторы (19), питание (14), челленджи/устройства/снаряжение (18), вес/тело/женское здоровье/курсы (14), анализ FIT-файлов (4), профиль пользователя (4), проброс (1).
Авторизация: это OAuth 2.1-сервер авторизации (через @cloudflare/workers-oauth-provider). При добавлении в MCP-клиент открывается страница в браузере, где вы вводите свой адрес электронной почты Garmin и пароль (а также MFA-код, если в вашем аккаунте используется 2FA). Worker выполняет на стороне сервера процесс входа через SSO-виджет Garmin — единственный путь входа, который не блокируется антибот-защитой для IP-адресов дата-центров, — получает долгоживущий (~1 год) OAuth1-токен, отбрасывает ваши учётные данные и сохраняет только этот токен в зашифрованном виде в grant. Затем он по требованию выпускает короткоживущие OAuth2 bearer-токены для connectapi.garmin.com. Резервный вариант «вставить токен» (через локальный скрипт ниже) спрятан за сворачиваемым блоком details на случай, если Garmin когда-нибудь начнёт блокировать серверный вход.
Деплой
npm installnpx wrangler kv namespace create OAUTH_KV— вставьте id вwrangler.jsoncnpx wrangler deploy
Related MCP server: Garmin Open MCP
Подключение клиента
claude mcp add garmin --transport http https://garmin-mcp.<your-subdomain>.workers.dev/mcpClaude Code открывает страницу авторизации в вашем браузере; выполните два её шага. В веб-версии claude.ai: Настройки → Коннекторы → Добавить пользовательский коннектор с тем же URL. Claude Desktop и другие клиенты, поддерживающие только stdio: mcp-remote тоже обрабатывает OAuth-поток.
Доступ возможен только через OAuth — пути с raw-заголовками нет. Каждый запрос /mcp проверяется по access-токену, выданному провайдером, а access-токен выпускается только после завершения процесса входа.
Ограничение только вашим аккаунтом
Задайте OWNER_GARMIN_IDS в wrangler.jsonc равным вашему Garmin displayName (значению, которое возвращает get_user_profile) — это список разрешённых, разделённый запятыми. Любой вход для аккаунта Garmin, которого нет в списке, отклоняется на этапе авторизации, поэтому посторонние не смогут использовать ваш деплой даже со своими действительными учётными данными Garmin. Оставьте его пустым, чтобы разрешить любой аккаунт Garmin.
Отличия от оригинала (адаптации для remote/serverless)
download_activity_fileвозвращает содержимое файла инлайн (fit — как base64, gpx/tcx/csv — как текст, с ограничением размера) вместо записи на локальный диск;set_fit_download_dir— документированная no-op.upload_courseпринимаетgpx_content(текст GPX XML) вместо локального пути к файлу.get_activity_fit_dataохватывает сессии/круги/записи + анализ мощности (NP, VI, кривая мощности, Вт/кг); функции оригинала — Di2 shift, climb-detection и HRV-аналитика — не перенесены.Лимит подзапросов бесплатного тарифа (~50 на вызов):
get_training_load_trendограничен 45 днями (было 90),get_power_duration_curve— 15 активностями (было 20),get_hrv_trendиспользует эндпоинт диапазона за один вызов, циклы пагинации целей/шагов/менструальных данных ограничены.Инструменты возвращают JSON-объекты, а не предварительно сериализованные строки; ошибки отображаются как ошибки инструментов MCP.
Примечания
Токен Garmin хранится зашифрованным внутри grant в Workers KV; когда срок его действия истекает (~1 год), вызовы инструментов начинают завершаться ошибкой — повторно аутентифицируйте сервер в вашем клиенте, чтобы снова выполнить поток.
Access-токены — это bearer-учётные данные: любой, у кого есть действительный токен, имеет доступ к вашим данным до его истечения, поэтому безопасность зависит от того, что ваш MCP-клиент хранит сохранённый токен в секрете.
Локальная разработка:
npm run dev, затем укажите клиенту адресhttp://localhost:8787/mcp.
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
- AlicenseNot gradedqualityCmaintenancePersonal MCP server for interacting with your Garmin Connect data. Exposes 62 tools across 11 domains including activities, health, training, and workouts.1MIT
- AlicenseAqualityBmaintenanceUnofficial MCP server bridging Garmin Connect to MCP clients and ChatGPT, providing tools to access health data, activities, and trends via a self-hosted API.11MIT
- AlicenseAqualityBmaintenanceMCP server for reading and querying Garmin Connect data, including activities, strength history, recovery, trends, and optionally creating workouts.12MIT
- AlicenseNot gradedqualityBmaintenanceMCP server for Garmin Connect that enables users to access and manage their personal health and fitness data, including daily summaries, heart rate, sleep, HRV, stress, body composition, activities, and training readiness, with secure per-user authentication.Apache 2.0
Related MCP Connectors
Garmin data in Claude & ChatGPT via the Garmin Health API. OAuth sign-in, no password sharing.
Hosted remote MCP server for YNAB on Cloudflare Workers with OAuth
Garmin data in Claude: 135 tools — activities, sleep, HRV, training, workouts. 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/rohankmr414/garmin-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server