Skip to main content
Glama
nibu147
by nibu147

fitdays-mcp (Cloudflare Worker)

Servidor MCP remoto para la API no oficial de FitDays / iComon, alojado en tu propio Cloudflare Worker, con inicio de sesión OAuth 2.1 (sin clave de API estática que pegar en el Worker: cada usuario que se conecta inicia sesión con su propia email/contraseña FitDays mediante una página /authorize).

Basado en roquerodrigo/fitdays-mcp-server (que solo funciona en stdio/local) y adaptado para Cloudflare Workers siguiendo el mismo patrón usado por chrisdoc/hevy-mcp.

Cómo funciona

  • src/index.ts — integra @cloudflare/workers-oauth-provider (gestiona PKCE, dynamic client registration, tokens y descubrimiento OAuth) con:

    • src/authorize.ts — la página /authorize: muestra un formulario de email/contraseña/region (email/correo, contraseña, región), verifica las credenciales con un inicio de sesión real en FitDays y luego guarda { fitdaysEmail, fitdaysPassword, fitdaysRegion } como grant props (cifradas en reposo por la librería de Cloudflare).

    • src/mcp-handler.ts — el manejador /mcp: protegido automáticamente por el proveedor (requiere un bearer token OAuth válido), lee las credenciales del grant y sirve el protocolo MCP a través de WebStandardStreamableHTTPServerTransport (con la misma versión de @modelcontextprotocol/sdk usada en el repositorio original).

  • src/server.ts — las mismas 5 herramientas del original: list_users, list_devices, get_weight_history, get_latest_weight, refresh_sync.

  • src/fitdays-session.ts — cliente FitDays con caché en memoria por aislado (5 minutos), para evitar inicio de sesión + resincronización completa en cada llamada cuando el aislado del Worker está "caliente".

Ninguna credencial se transmite jamás por un tercero: el inicio de sesión ocurre en tu Worker, los datos FitDays se mantienen entre el Worker y la API FitDays.

Related MCP server: Garmin MCP Server

Despliegue

Requiere Node.js ≥ 22 y una cuenta gratuita de 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

Conectar Claude (u otro cliente MCP)

  1. Claude.ai → Configuración → Conectores → Añadir conector personalizado

  2. URL: https://fitdays-mcp.<tu-subdominio>.workers.dev/mcp

  3. Haz clic en "Connect": se abre la página /allow de tu Worker → introduces email, contraseña y región FitDays → autorizas

A partir de ese momento, Claude puede llamar a las 5 herramientas FitDays sin ver nunca tu contraseña (queda en el grant OAuth cifrado dentro de tu namespace KV).

Desarrollo local

npm run dev

wrangler dev inicia el Worker localmente con un namespace KV local simulado — útil para probar el formulario de inicio de sesión y las herramientas sin desplegar.

Notas

  • Usa siempre npm ci, nunca npm install. npm ci instala exactamente las versiones del package-lock.json y verifica cada paquete contra su hash SHA-512: si el contenido publicado en npm cambia, la instalación falla con EINTEGRITY en lugar de instalar silenciosamente código diferente. npm install puede actualizar las dependencias. Haz commit siempre del package-lock.json.

  • Las dependencias de producción están fijas a una versión exacta (sin ^), de modo que no hay desajustes aunque se vuelva a ejecutar la instalación meses después.

  • El Worker desplegado es autocontenido: wrangler deploy empaqueta todo el código en el momento del despliegue. No descarga nada de npm ni GitHub en tiempo de ejecución, y los cambios posteriores hechos por los autores originales no afectan al Worker ya publicado.

  • nodejs_compat es obligatorio en wrangler.jsonc porque fitdays-api usa node:crypto (MD5 para el inicio de sesión) y randomUUID().

  • Las credenciales FitDays son email+contraseña (no una única API key como Hevy): por eso el formulario /authorize intenta un inicio de sesión real antes de completar la autorización; así las credenciales incorrectas se rechazan de inmediato en lugar de fallar silenciosamente en la primera llamada a una herramienta.

Dónde termina la contraseña

Solo dos destinos:

  1. Los servidores de FitDays (online-{us,eu}.fitdays.cn): es inevitable, es la única forma de autenticarse. Se envía como MD5(MD5(contraseña+salt)), pero el salt es una constante pública, así que debe considerarse equivalente a contraseña en texto claro: no reutilices la contraseña de FitDays en otros sitios.

  2. Tu namespace KV en Cloudflare, dentro de los grant props (cifrados en reposo por la librería OAuth de Cloudflare).

Ningún otro tercero. fitdays-api tiene cero dependencias de producción y un solo punto de red en todo el código; no hay telemetría, análisis de datos ni reporting de errores en ninguno de los dos repositorios originales de desarrollo remoto ni en este 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