fitdays-mcp
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_users、list_devices、get_weight_history、get_latest_weight、refresh_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.devClaude(または他のMCPクライアント)を接続する
Claude.ai → 設定 → コネクター → カスタムコネクターを追加
URL:
https://fitdays-mcp.<あなたのサブドメイン>.workers.dev/mcp「接続」をクリック:Workerの
/authorizeページが開きます → メールアドレス、パスワード、FitDaysリージョンを入力 → 承認します
これ以降、Claudeはあなたのパスワードを見ることなく5つのFitDaysツールを呼び出すことができます(パスワードはKV名前空間内の暗号化されたOAuth grantに残ります)。
ローカル開発
npm run devwrangler devは、ローカルのKV名前空間をシミュレートしてWorkerをローカルで起動します。デプロイせずにログインフォームとツールをテストするのに便利です。
注意事項
常に
npm ciを使用し、npm installは使用しないでください。npm ciはpackage-lock.jsonの正確なバージョンをインストールし、各パッケージをSHA-512ハッシュに対して検証します。npmに公開されたコンテンツが変更された場合、インストールはEINTEGRITYで失敗し、異なるコードを静かにインストールすることはありません。npm installは依存関係を更新する可能性があります。常にpackage-lock.jsonをコミットしてください。ランタイム依存関係はすべて正確なバージョンに固定されています(
^なし)。そのため、数か月後にインストールを再実行してもドリフトは発生しません。デプロイされたWorkerは自己完結型です。
wrangler deployはデプロイ時にすべてのコードをバンドルします。実行時にnpmやGitHubから何かをダウンロードすることはなく、アップストリームの作者によるその後の変更は、すでに公開されているWorkerには影響しません。nodejs_compatがwrangler.jsoncで必要です。fitdays-apiがnode:crypto(ログイン用のMD5)とrandomUUID()を使用するためです。FitDaysの資格情報はメールアドレス+パスワードです(Hevyのような単一のAPIキーではありません)。そのため、
/authorizeフォームは承認を完了する前に実際のログイン試行を行い、間違った資格情報が最初のツール呼び出しで静かに失敗するのではなく、すぐに拒否されるようにします。
パスワードの行き先
2つの宛先のみ:
FitDaysサーバー(
online-{us,eu}.fitdays.cn)— 避けられません。認証する唯一の方法です。MD5(MD5(password+salt))として送信されますが、saltは公開された定数であるため、平文パスワードと同等と見なす必要があります。FitDaysのパスワードを他の場所で再利用しないでください。Cloudflare上のあなたのKV名前空間、grant props内(CloudflareのOAuthライブラリによって保存時に暗号化されます)。
他のサードパーティはありません。fitdays-apiにはランタイム依存関係がゼロで、コード全体にネットワークポイントが1つだけあります。アップストリームの2つのリポジトリにも、この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