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 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 gradedqualityAmaintenanceConnects to Garmin Connect and exposes your fitness and health data (activities, sleep, heart rate, steps, body composition) to Claude and other MCP-compatible clients.965MIT
- 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 gradedqualityCmaintenanceA 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
Related MCP Connectors
MCP server for Withings health data — sleep, activity, heart, and body metrics.
Hosted remote MCP server for YNAB on Cloudflare Workers with OAuth
Garmin data in Claude & ChatGPT via the Garmin Health API. OAuth sign-in, no password sharing.
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/nibu147/fitdays-mcp-worker'
If you have feedback or need assistance with the MCP directory API, please join our Discord server