fitdays-mcp
fitdays-mcp (Cloudflare Worker)
Удалённый MCP-сервер для неофициального API FitDays / iComon, размещённый на вашем Cloudflare Worker, с входом через OAuth 2.1 (никаких статических API-ключей, которые нужно вставлять в Worker: каждый подключающийся пользователь входит со своими email/password FitDays через страницу /authorize).
Основан на roquerodrigo/fitdays-mcp-server (который работает только в stdio/локально) и адаптирован для Cloudflare Workers по тому же шаблону, что и chrisdoc/hevy-mcp.
Как это работает
src/index.ts— объединяет@cloudflare/workers-oauth-provider(управляет PKCE, динамической регистрацией клиентов, токенами, OAuth discovery) с:src/authorize.ts— страница/authorize: показывает форму email/password/region, проверяет учётные данные реальным входом в FitDays, затем сохраняет{ fitdaysEmail, fitdaysPassword, fitdaysRegion }как grant props (зашифрованные в состоянии покоя библиотекой Cloudflare).src/mcp-handler.ts— обработчик/mcp: автоматически защищён провайдером (требует действительный OAuth bearer token), читает учётные данные из grant и обслуживает протокол MCP черезWebStandardStreamableHTTPServerTransport(из той же версии@modelcontextprotocol/sdk, что используется в оригинальном репозитории).
src/server.ts— те же 5 инструментов, что и в оригинале:list_users,list_devices,get_weight_history,get_latest_weight,refresh_sync.src/fitdays-session.ts— клиент FitDays с кэшем в памяти для каждого изолята (5 минут), чтобы избежать входа и полной повторной синхронизации при каждом вызове, когда изолят Worker "тёплый".
Никакие учётные данные никогда не передаются стороннему серверу: вход происходит в вашем Worker, данные FitDays остаются между Worker и API FitDays.
Related MCP server: Garmin MCP Server
Развёртывание
Требуется Node.js ≥ 22 и бесплатный аккаунт Cloudflare.
npm ci
npx wrangler login
# Crea il namespace KV che l'OAuth provider usa per grant e token
npx wrangler kv namespace create OAUTH_KV
# copia l'"id" restituito in wrangler.jsonc -> kv_namespaces[0].id
npm run worker:dry-run # opzionale: verifica il bundle localmente
npm run worker:deploy # pubblica su https://fitdays-mcp.<tuo-subdomain>.workers.devПодключение Claude (или другого MCP-клиента)
Claude.ai → Настройки → Коннекторы → Добавить пользовательский коннектор
URL:
https://fitdays-mcp.<ваш-поддомен>.workers.dev/mcpНажмите "Connect": откроется страница
/authorizeвашего Worker → введите email, пароль и регион FitDays → авторизуйтесь
С этого момента Claude может вызывать 5 инструментов FitDays, никогда не видя ваш пароль (он остаётся в зашифрованном OAuth grant внутри вашего KV namespace).
Локальная разработка
npm run devwrangler dev запускает Worker локально с имитацией локального KV namespace — полезно для тестирования формы входа и инструментов без развёртывания.
Примечания
Всегда используйте
npm ci, никогдаnpm install.npm ciустанавливает точно версии изpackage-lock.jsonи проверяет каждый пакет по его SHA-512 хешу: если опубликованное в npm содержимое изменится, установка завершится сEINTEGRITYвместо тихой установки другого кода.npm installможет обновить зависимости. Всегда коммитьтеpackage-lock.json.Все зависимости времени выполнения закреплены на точные версии (без
^), поэтому нет дрейфа даже при повторной установке через месяцы.Развёрнутый Worker самодостаточен:
wrangler deployсобирает весь код в момент развёртывания. Во время выполнения он ничего не загружает с npm или GitHub, и последующие изменения, сделанные авторами вышестоящих проектов, не затрагивают уже опубликованный Worker.nodejs_compatтребуется вwrangler.jsonc, потому чтоfitdays-apiиспользуетnode:crypto(MD5 для входа) иrandomUUID().Учётные данные FitDays — это email+пароль (не один API-ключ, как у Hevy): поэтому форма
/authorizeделает реальную попытку входа перед завершением авторизации, так что неверные учётные данные отклоняются сразу, а не молча проваливаются при первом вызове инструмента.
Куда попадает пароль
Только два места:
Серверы FitDays (
online-{us,eu}.fitdays.cn) — неизбежно, это единственный способ аутентификации. Отправляется как MD5(MD5(password+salt)), но salt — публичная константа, поэтому это эквивалентно паролю в открытом виде: не используйте пароль FitDays где-либо ещё.Ваш KV namespace на Cloudflare, внутри grant props (зашифрованных в состоянии покоя библиотекой OAuth Cloudflare).
Никакой другой третьей стороны. fitdays-api имеет ноль зависимостей времени выполнения и только одну сетевую точку во всём коде; нет телеметрии, аналитики или отчётов об ошибках ни в одном из двух вышестоящих репозиториев, ни в этом Worker.
This server cannot be deployed
Maintenance
Related MCP Connectors
MCP server for Withings health data — sleep, activity, heart, and body metrics.
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.
Hosted MCP server with managed OAuth for 15+ toolkits: Google Workspace, Fitbit, Oura, Kalshi, etc.
Hosted remote MCP server for YNAB on Cloudflare Workers with OAuth
Related MCP Servers
- AlicenseBqualityAmaintenanceConnects to Garmin Connect and exposes your fitness and health data (activities, sleep, heart rate, steps, body composition) to Claude and other MCP-compatible clients.1481,307MIT
- AlicenseNot gradedqualityDmaintenanceConnects to Garmin Connect and exposes fitness and health data (activities, steps, heart rate, sleep, body composition) to MCP-compatible clients like Claude.MIT
- AlicenseNot gradedqualityDmaintenanceAn MCP server that connects Claude to Withings health data using OAuth 2.0. Provides 11 read-only tools to access body measurements, activity, sleep, heart rate, and device information from Withings devices.MIT
- AlicenseNot gradedqualityDmaintenanceA personal MCP server on Cloudflare Workers that connects Claude to Google Health API v4, enabling reading of health data like activity, sleep, heart rate, SpO₂, HRV, and nutrition.MIT