Skip to main content
Glama
nibu147
by nibu147

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 über WebStandardStreamableHTTPServerTransport (aus derselben Version von @modelcontextprotocol/sdk wie 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.dev

Hier mit Claude verbinden (oder einem anderen MCP-Client)

  1. Auf Claude.ai → Einstellungen → Connectors → Benutzerdefinierten Connector hinzufügen

  2. URL: https://fitdays-mcp.<tuo-subdomain>.workers.dev/mcp

  3. Klicke auf „Connect“: Es öffnet sich die Seite /authorize deines 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 dev

wrangler 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, nie npm install. npm ci installiert exakt die im package-lock.json festgehaltenen 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 install kann die Abhängigkeiten dagegen aktuell halten. Committe immer die Der package-lock.json.

  • Alle Laufzeitabhängigkeiten sind auf die exakte Version gepinnt (keine ^). ^.7 gibt es daher auch bei einem erneuten npm install. für Monaten keinen Drift. package.lock.json also keiner.

  • Der bereitgestellte Worker ist selbst enthalten: wrangler deploy bü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_compat ist in wrangler.jsonc erforderlich, da in arist fitdays-api node:crypto (MD5 für den Login) und randomUUID() 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:

  1. 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.

  2. 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.

F
license - not found
Not graded
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

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

  • A
    license
    Not graded
    quality
    D
    maintenance
    Connects to Garmin Connect and exposes fitness and health data (activities, steps, heart rate, sleep, body composition) to MCP-compatible clients like Claude.
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    An 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
  • A
    license
    Not graded
    quality
    C
    maintenance
    A 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

View all related MCP servers

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.

View all MCP Connectors

Latest Blog Posts

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