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