Skip to main content
Glama
nibu147
by nibu147

fitdays-mcp (Cloudflare Worker)

非公式FitDays / iComon API用のリモートMCPサーバー。あなた自身のCloudflare Worker上でホストされ、OAuth 2.1ログインを備えています(Workerに静的なAPIキーを貼り付ける必要はありません。接続する各ユーザーは/authorizeページを介して自分のFitDaysメールアドレス/パスワードでログインします)。

roquerodrigo/fitdays-mcp-server(stdio/ローカルのみで動作)に基づき、chrisdoc/hevy-mcpで使用されているのと同じパターンに従ってCloudflare Workers用に再適合させました。

仕組み

  • src/index.ts@cloudflare/workers-oauth-provider(PKCE、動的クライアント登録、トークン、OAuthディスカバリーを処理)を以下と組み合わせます:

    • src/authorize.ts/authorizeページ:メールアドレス/パスワード/リージョンのフォームを表示し、FitDaysへの実際のログインで資格情報を検証し、{ fitdaysEmail, fitdaysPassword, fitdaysRegion }grant propsとして保存します(Cloudflareのライブラリによって保存時に暗号化されます)。

    • src/mcp-handler.ts/mcpハンドラー:プロバイダーによって自動的に保護され(有効なOAuthベアラートークンが必要)、grantから資格情報を読み取り、WebStandardStreamableHTTPServerTransportを介してMCPプロトコルを提供します(元のリポジトリで使用されているのと同じバージョンの@modelcontextprotocol/sdkから)。

  • src/server.ts — オリジナルと同じ5つのツール:list_userslist_devicesget_weight_historyget_latest_weightrefresh_sync

  • src/fitdays-session.ts — アイソレートごとのインメモリキャッシュ(5分)を備えたFitDaysクライアント。Workerアイソレートが「ウォーム」な場合に、呼び出しのたびにログインと完全な再同期を回避します。

資格情報がサードパーティのサーバーを経由することはありません。ログインはあなたのWorker内で行われ、FitDaysデータはWorkerとFitDays APIの間だけを移動します。

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クライアント)を接続する

  1. Claude.ai → 設定 → コネクター → カスタムコネクターを追加

  2. URL: https://fitdays-mcp.<あなたのサブドメイン>.workers.dev/mcp

  3. 「接続」をクリック:Workerの/authorizeページが開きます → メールアドレス、パスワード、FitDaysリージョンを入力 → 承認します

これ以降、Claudeはあなたのパスワードを見ることなく5つのFitDaysツールを呼び出すことができます(パスワードはKV名前空間内の暗号化されたOAuth grantに残ります)。

ローカル開発

npm run dev

wrangler devは、ローカルのKV名前空間をシミュレートしてWorkerをローカルで起動します。デプロイせずにログインフォームとツールをテストするのに便利です。

注意事項

  • 常にnpm ciを使用し、npm installは使用しないでください。 npm cipackage-lock.jsonの正確なバージョンをインストールし、各パッケージをSHA-512ハッシュに対して検証します。npmに公開されたコンテンツが変更された場合、インストールはEINTEGRITYで失敗し、異なるコードを静かにインストールすることはありません。npm installは依存関係を更新する可能性があります。常にpackage-lock.jsonをコミットしてください。

  • ランタイム依存関係はすべて正確なバージョンに固定されています(^なし)。そのため、数か月後にインストールを再実行してもドリフトは発生しません。

  • デプロイされたWorkerは自己完結型です。wrangler deployはデプロイ時にすべてのコードをバンドルします。実行時にnpmやGitHubから何かをダウンロードすることはなく、アップストリームの作者によるその後の変更は、すでに公開されているWorkerには影響しません。

  • nodejs_compatwrangler.jsoncで必要です。fitdays-apinode:crypto(ログイン用のMD5)とrandomUUID()を使用するためです。

  • FitDaysの資格情報はメールアドレス+パスワードです(Hevyのような単一のAPIキーではありません)。そのため、/authorizeフォームは承認を完了する前に実際のログイン試行を行い、間違った資格情報が最初のツール呼び出しで静かに失敗するのではなく、すぐに拒否されるようにします。

パスワードの行き先

2つの宛先のみ:

  1. FitDaysサーバーonline-{us,eu}.fitdays.cn)— 避けられません。認証する唯一の方法です。MD5(MD5(password+salt))として送信されますが、saltは公開された定数であるため、平文パスワードと同等と見なす必要があります。FitDaysのパスワードを他の場所で再利用しないでください。

  2. Cloudflare上のあなたのKV名前空間、grant props内(CloudflareのOAuthライブラリによって保存時に暗号化されます)。

他のサードパーティはありません。fitdays-apiにはランタイム依存関係がゼロで、コード全体にネットワークポイントが1つだけあります。アップストリームの2つのリポジトリにも、この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