fitdays-mcp
fitdays-mcp (Cloudflare Worker)
Entfernter MCP-Server für die inoffizielle FitDays / iComon-API, gehostet auf deinem eigenen Cloudflare Worker, mit OAuth-2.1-Login (kein statischer API-Key, der im Worker eingetragen werden muss: Jeder Benutzer, der sich verbindet, meldet sich über eine Seite /authorize mit seiner eigenen FitDays-E-Mail und seinem Passwort an).
Basiert auf roquerodrigo/fitdays-mcp-server (das nur im stdio/lokalen Modus läuft) und für Cloudflare Workers angepasst, nach demselben Muster wie chrisdoc/hevy-mcp.
So funktioniert es
src/index.ts— kombiniert@cloudflare/workers-oauth-provider(verwaltet PKCE, dynamische Client-Registrierung, Tokens, OAuth-Discovery) mit:src/authorize.ts— die Seite/authorize: zeigt ein E-Mail/Passwort/Region-Formular an, prüft die Anmeldedaten mit einem echten Login bei FitDays und speichert{ fitdaysEmail, fitdaysPassword, fitdaysRegion }als grant props (von der Cloudflare-Bibliothek im Ruhezustand verschlüsselt).src/mcp-handler.ts— den Handler/mcp: automatisch vom Provider geschützt (erfordert ein gültiges OAuth-Bearer-Token), liest die Anmeldedaten aus dem Grant und serviert das MCP-Protokoll überWebStandardStreamableHTTPServerTransport(aus derselben Version von@modelcontextprotocol/sdkwie das Originalrepository).
src/server.ts— dieselben 5 Tools wie das Original:list_users,list_devices,get_weight_history,get_latest_weight,refresh_sync.src/fitdays-session.ts— FitDays-Client mit In-Memory-Cache pro Isolate (5 Minuten), um bei jedem Aufruf einen Login und vollständigen Resync zu vermeiden, wenn das Worker-Isolate „warm“ ist.
Es landen keine Anmeldedaten auf einem Drittserver: Diese Login erfolgt in deinem Worker, die FitDays-Daten bleiben zwischen dem Worker und den API.
Related MCP server: Garmin MCP Server
Deploy
Erfordert Node.js ≥ 22 und ein kostenloses Cloudflare-Konto.
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.devHier mit Claude verbinden (oder einem anderen MCP-Client)
Auf Claude.ai → Einstellungen → Connectors → Benutzerdefinierten Connector hinzufügen
URL:
https://fitdays-mcp.<tuo-subdomain>.workers.dev/mcpKlicke auf „Connect“: Es öffnet sich die Seite
/authorizedeines Workers → gib E-Mail, Passwort und FitDays-Region ein → autorisiere
Ab diesem Zeitpunkt kann Claude die 5 FitDays-Tools nutzen, ohne dein Passwort jemals zu sehen (es bleibt im verschlüsselten OAuth-Grant innerhalb deines KV-Namespace).
Lokale Entwicklung
npm run devwrangler dev startet den Worker lokal mit einem simulierten lokalen KV-Namespace –
nützlich, um das Login-Formular und die Tools ohne Bereitstellung zu testen.
Hinweise
Verwende immer
npm ci, nienpm install.npm ciinstalliert exakt die impackage-lock.jsonfestgehaltenen Versionen und prüft jedes Paket gegen seinen SHA-512-Hash: öffnet sich der Inhalt auf npm²EINTEGRITY— statt still und leise anderen Code zu installieren.npm installkann die Abhängigkeiten dagegen aktuell halten. Committe immer dieDer package-lock.json.Alle Laufzeitabhängigkeiten sind auf die exakte Version gepinnt (keine
^).^.7gibt es daher auch bei einem erneutennpm install. für Monaten keinen Drift.package.lock.jsonalso keiner.Der bereitgestellte Worker ist selbst enthalten:
wrangler deploybündelt den gesamten Code beim Bereitgestellt wird, zu dem Zeitpunkt. Es lädt zur Laufzeit nichts von npm oder GitHub herunter. und spätere Änderungen von Upstream-Entwicklern rejoice: nicht den bereits veröffentlichten Worker.nodejs_compatist inwrangler.jsoncerforderlich, da in aristfitdays-apinode:crypto(MD5 für den Login) undrandomUUID()verwendet.Die FitDays-Anmeldedaten sind E-Mail und Passwort (kein einzelner API-Key wie Hevy): Deshalb unternimmt das
/authorize-Formular einen echten Zustand und lehnen falsche Anmeldedaten sofort ab, statt beim ersten Tool-Aufruf schlusszu sein.
Wohin das Passwort landet
Zwei Möglichkeiten:
Die FitDays-Server (
online-{us,eu}.fitdays.cn) — unvermeidbar, es ist der einzige Weg, sich zu authentifizieren. Wird als MD5(MD5(password+salt) dieser, aber das salt ist eine öffentliche Konstante und daher so zu betrachten wie klartet oder das Passwort: Verwende das FitDays-Passwort nicht für andere BeLassungen.Dein KV-Namespace bei Cloudflare in den grant-Props (im Ruhemodus verschlüsselt von der OAuth-Bibliothek von Cloudflare).
Keine andere Partys. fitdays-api hat keinerlei Live-Zustand-Abhängen und einen einzigen
Netzwerkziels im gesamten Codem. It gibt es keine Telemetrie, Analytics oder Error-Reporting
in keine der Upstream-Repos noch in diesem 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