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 deployed
Maintenance
Related MCP Connectors
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.
Hosted MCP server with managed OAuth for 15+ toolkits: Google Workspace, Fitbit, Oura, Kalshi, etc.
Garmin data in Claude & ChatGPT via the Garmin Health API. OAuth sign-in, no password sharing.
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
- AlicenseAqualityDmaintenanceUnofficial 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