mcpField
M
MyFitnessPal

MyFitnessPal

ローカル
github.com/Mason-Levyyヘルスケア27今日更新

MyFitnessPal について

MyFitnessPal は、MyFitnessPal の食事記録を MCP クライアントに接続するオープンソースの MCP サーバーです。ブラウザーのセッション Cookie でアカウントにアクセスし、食品検索や記録編集、栄養トレンドの確認、データ出力を行えます。

主な機能

  1. 01栄養情報付き食品検索
  2. 02食事の下書きと記録
  3. 03記録項目の編集と削除
  4. 04体重、水分、運動、メモの記録
  5. 05トレンド確認と栄養履歴の出力

活用シーン

  1. 01候補から分量を選んで食事を記録
  2. 02食事記録の修正や削除
  3. 03日付ごとの栄養合計の確認
  4. 04分析用に食事データを出力

MCP 対応

MCP クライアントに MyFitnessPal の記録、食品検索、入力、分析用ツールを提供します。stdio と streamable HTTP に対応しています。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"mason-levyy-mfp": {
"command": "uvx",
"args": [
"mfp-mcp"
],
"env": {
"MFP_COOKIE": "<MFP_COOKIE>",
"MFP_USERNAME": "<MFP_USERNAME>"
}
}
}
}
起動コマンドuvx mfp-mcp
設定が必要な環境変数
MFP_COOKIEシークレットMyFitnessPal session cookie (optional; 'mfp-mcp auth' is the guided alternative)
MFP_USERNAMEMyFitnessPal username; only needed if MFP's profile lookup fails for your account

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
pypimfp-mcp0.4.3

ツール

18

掲載時のツール一覧 · 5 日前に更新

パラメーター型必須説明
dateanyいいえ

詳細

myfitnesspal-mcp

AI に話しかけて MyFitnessPal に記録しましょう。

Mason-Levyy/myfitnesspal-mcp MCP server PyPI GitHub stars CI Python License: MIT

Install in Cursor Install in VS Code Install in VS Code Insiders

クイックスタート · ツール · 認証 · 変更履歴

デモ:Claude が fitness_log_food を使って朝食のスムージーの材料を一つずつ記録し、MyFitnessPal の食事日記に記録が表示されます

▶ リリース動画を見る

MyFitnessPal MCP は、MyFitnessPal を Claude、Cursor、VS Code、または任意の MCP クライアントに接続する、無料のオープンソース MCP サーバーです。話しかけて食事を記録したり、マクロ栄養素を含む食品データベースを検索したり、傾向を追跡したり、栄養履歴をエクスポートしたりできます。すべて実際の MyFitnessPal の日記を対象に行えます。

PyPI では mfp-mcp として、また 公式 MCP レジストリ では io.github.Mason-Levyy/mfp-mcp として公開されています。

非公式です。 MyFitnessPal には公開 API がないため、このプロジェクトは Web アプリ自体のエンドポイントをリバースエンジニアリングしています。MFP がサイトを変更すると、動作しなくなる可能性があります。ご自身のアカウントで、自己責任でご利用ください。

なぜこれなのか?

MyFitnessPal は Cloudflare と NextAuth の背後に移行したため、既存の連携の多くが依存しているユーザー名/パスワードでのログインが使えなくなりました。このサーバーでは、次のことができます。

  • ブラウザーのセッション Cookie で認証:実際の Chrome TLS フィンガープリント(curl_cffi)を使用して Cloudflare を通過します
  • セッションを自動更新(任意):ヘッドレスブラウザーのプロファイルがトークンの期限切れ時にローテーションし、失敗した呼び出しは自動的に再試行されます
  • 読み取りだけでなく書き込みにも対応:実際の日記の記録を追加、変更、削除できます
  • 検索してから記録:マクロ栄養素を含む候補を取得してから、正確な項目を記録できます

クイックスタート

  1. アカウントを接続します(初回のみ。Cookie の貼り付けを求められます。認証を参照してください)。

    uvx mfp-mcp auth
    
  2. サーバーをクライアントに追加します。上部のインストールボタンを使うと、Cursor と VS Code ではワンクリックで追加できます。

    Claude Code

    claude mcp add myfitnesspal -- uvx mfp-mcp
    

    または、プラグインとしてインストールします。

    /plugin install myfitnesspal-mcp --marketplace Mason-Levyy/myfitnesspal-mcp
    

    Claude Desktop(claude_desktop_config.json)、Cursor (~/.cursor/mcp.json)、Windsurf(~/.codeium/windsurf/mcp_config.json)、 Cline(cline_mcp_settings.json)では、いずれも同じ設定を使用します。

    {
      "mcpServers": {
        "myfitnesspal": {
          "command": "uvx",
          "args": ["mfp-mcp"]
        }
      }
    }
    
    VS Code、Codex CLI、Gemini CLI

    VS Code(または上のボタンを使用してください):

    code --add-mcp '{"name":"myfitnesspal","command":"uvx","args":["mfp-mcp"]}'
    

    Codex CLI:

    codex mcp add myfitnesspal -- uvx mfp-mcp
    

    Gemini CLI:

    gemini mcp add myfitnesspal uvx mfp-mcp
    
  3. 話しかけてみましょう:「バナナをおやつとして記録して」、「昨日は何を食べた?」、 「今月の体重をグラフにして」。

uv が必要です。stdio または ストリーミング可能な HTTP に対応する MCP クライアントであれば、Claude 以外でも動作します。

役に立ちましたか? GitHub で ⭐ を付けると、ほかの MyFitnessPal ユーザーが見つけやすくなります。

認証

このサーバーは、ブラウザーの MyFitnessPal セッション Cookie を使ってサインインします。

  1. myfitnesspal.com にログインします
  2. DevTools(F12)を開き、Application(Chrome)または Storage(Firefox)→ Cookies → https://www.myfitnesspal.com の順に選択します
  3. __Secure-next-auth.session-token の値をコピーします
  4. mfp-mcp auth のプロンプトに貼り付けるか、macOS では mfp-mcp auth --clipboard を実行して Cookie をコピーします。トークンがクリップボードに届くと 接続されます

セッションの有効期間は、最後に更新されてから 30 日間です。サーバーはクライアントの作成時に セッションを更新し、MyFitnessPal が再発行する Cookie を保存します。そのため、少なくとも月に 1 回使えば 保存されたセッションは最新の状態に保たれます。mfp-mcp auth --check は、保存されたセッションが 引き続き有効か、自動更新が設定されているかを報告します。また、確認時にセッションを更新して保存し、 対応が必要な場合は終了コード 1 で終了します。そのため、スケジュール(cron、launchd)で実行すると、 アイドル状態のセッションを維持し、期限切れになる前に警告できます。

自動更新(推奨)

autorefresh エクストラを使うと、auth は永続的なヘッドレスブラウザーのプロファイルも準備します。 MyFitnessPal が呼び出しの途中でセッションを拒否すると、サーバーはクライアントに再試行中であることを伝え、 プロファイルをヘッドレスで起動します。MyFitnessPal にセッショントークンをローテーションさせ、 新しい Cookie を保存してから呼び出しを再試行します。

uvx --from 'mfp-mcp[autorefresh]' playwright install chromium
uvx --from 'mfp-mcp[autorefresh]' mfp-mcp auth

その後、クライアント設定でも同じ --from 'mfp-mcp[autorefresh]' 形式を使います (例:uvx --from 'mfp-mcp[autorefresh]' mfp-mcp)。

ツール

ツール機能
fitness_get_day1 日分の栄養摂取量、食事記録、MFP の日次メモ、体調メモを取得します
fitness_search_foodブランド、カロリー、マクロ栄養素、分量、ID を含む候補を表示します
fitness_draft_foodカロリーやマクロ栄養素の目標値で任意に絞り込み・順位付けされた、すべての分量サイズを含む番号付きの選択肢を表示します
fitness_log_food下書きの選択肢(および分量)、記憶済みの食品、または正確な ID を実際の食事記録に記録します
fitness_list_food_pins記憶済みの検索語 → 食品/分量の選択肢(ローカル)
fitness_clear_food_pin記憶済みの選択肢を 1 つ、またはすべて消去します
fitness_delete_food名前の一致によって食事記録を削除します
fitness_modify_food記録を置き換える(または数量を変更する)際に、fitness_log_food と同じ方法で置き換える食品を選びます
fitness_log_weight体重を記録します(同じ日に再記録すると更新されます)
fitness_log_water水分を追加する(カップ、fl oz、mL、L)か、replace を指定してその日の合計を設定します
fitness_get_exercise運動記録(有酸素運動+筋力トレーニング)を読み取ります
fitness_get_exercise_entries有酸素運動と筋力トレーニングの記録を、それぞれのセクションの列とともに一覧表示します
fitness_delete_exercise名前の一致によって運動記録を削除します(複数行の同期クリーンアップには all_matches を使用)
fitness_get_note指定日の MyFitnessPal の日次記録メモ(「Notes」ボックス)を読み取ります
fitness_log_noteその日次メモを MFP に書き込みます(置き換えるか、append で新しい行を追加します)
fitness_log_feel主観的な「体調」メモを保存します(ローカルに保存され、MFP に送信されることはありません)
fitness_get_trends日付範囲における 1 つの指標:体重、calories_in、protein、carbs、fat
fitness_bulk_export分析用に、1 回の呼び出しで日付範囲全体を取得します
ログ記録の流れ

食事のログ記録は、下書きを作成してから確定する方式です。そのため、日記に記録される内容がMyFitnessPalの検索順に左右されることはありません。

  1. fitness_draft_food("greek yogurt", min_protein=15, max_calories=150)
    番号付きの候補を返します。各候補には、エントリー全体(1食分 × 数量)のカロリーとマクロ栄養素を含むすべての分量と、おすすめの分量が表示されます。条件を満たす候補が先に表示され、条件に近い候補が続きます。条件を変えて再度呼び出すと、候補を絞り込めます。
  2. fitness_log_food(draft_id=..., option=2, serving=1)
    指定した食品と分量を正確に記録し、その検索クエリに対する選択を記憶します。
  3. 次回は、fitness_log_food(query="greek yogurt")
    検索せずに、記憶した食品と分量を記録します。

記憶された選択がない状態で、引数に query=... だけを指定して fitness_log_food を呼び出した場合、名前が完全一致する結果が1つだけなら記録します。それ以外の場合は何も記録せず、選択用の下書きを返します。記憶された選択はローカルキャッシュに保存されます(fitness_list_food_pins、fitness_clear_food_pin)。下書きの有効期限は24時間です。

fitness_modify_food は、削除を行う前に同じ方法で置き換え先を選びます。記憶された食品か、名前が完全一致する結果が1つだけの場合は、その食品を直接使用します。それ以外の場合はエントリーをそのまま残して下書きを返します。その場合は、同じ query に draft_id と option を指定して、fitness_modify_food をもう一度呼び出してください。

fitness_log_food、fitness_delete_food、fitness_modify_food は、すべて同じ方法で meal 引数を受け取ります。指定できるのは、breakfast/lunch/dinner/snacks、または現在の日記にある任意の食事セクションの名前です。これには名前を変更した既定の食事や、MyFitnessPalが「Diary Settings」で追加を許可している最大2つの追加の食事も含まれます。アカウントで現在設定されている食事名と、大文字・小文字を区別せずに照合します。既定の食事名を変更しても、キーワードは引き続き使えます。breakfast/lunch/dinner/snacks は、それぞれ1番目から4番目の食事に対応します。ただし、その枠に別の既定の名前が設定されている場合は除きます(たとえば、2番目の食事の名前を「Dinner」に変更した場合、lunch を指定してもその食事には記録されません)。それ以外の認識できない meal を指定すると、誤ったセクションに何も通知せず記録するのではなく、エラーが発生します。

1日の概要と傾向はローカルのSQLiteキャッシュから読み取られます。キャッシュに空白がある場合、MyFitnessPalからデータを補完します(新規インストール後の初回呼び出しでは、1日につき1回のリクエストで最大30日分を取得します)。

水分の記録では、/food/water から当日の現在の合計量を読み取り、指定された量を加算して、新しい合計量を同じエンドポイントに送信します。replace=True を指定すると、当日の合計量をその値に置き換えます(誤って記録した量の修正などに使えます)。すべての呼び出しは previous_ml を返します。間違えた場合は、その値を amount として unit="ml" および replace=True を指定して渡すと、元に戻せます。water_logged イベントを伴う別の /stats リクエストは分析用テレメトリーであり、水分の合計量は保存しません。

リモート/HTTP モード

デフォルトのトランスポートはstdioです。ネットワーククライアントを使用する場合:

mfp-mcp --http --host 127.0.0.1 --port 8484

これは /mcp でストリーミング可能なHTTPを提供します。認証機能は組み込まれていないため、インターネットに公開しないでください。 localhostにバインドし、認証を行う仕組みを前段に配置してください。VPN/tailnet(例:tailscale serve)、認証機能付きリバースプロキシ、またはOAuth対応MCPゲートウェイを利用できます。

設定

変数用途デフォルト
MFP_COOKIEセッションCookie(ヘッダー全体またはトークンのみ)。保存済みファイルより優先されます–
MFP_USERNAMEMFPのユーザー名(メールアドレスではありません)。プロフィールの検索に失敗した場合のみ必要です自動検出
MFP_IMPERSONATEcurl_cffiのブラウザーフィンガープリント(403エラーが発生する場合は chrome124 を試してください)chrome
MFP_SYNC_DAYSデータを補完する過去の日数30
MFP_MCP_DATA_DIRSQLiteキャッシュとブラウザープロフィールの保存場所プラットフォームのデータディレクトリ

トラブルシューティング

  • 403 / Cloudflare にブロックされる:MFP_IMPERSONATE=chrome124(または別の curl_cffi の対象ブラウザー)を試してください。 データセンターの IP は、住宅用 IP よりもはるかに頻繁にチャレンジを受けます。
  • 「Session expired」:mfp-mcp auth --check で確認してから、mfp-mcp auth を 再実行するか、自動更新(推奨)を設定してください。
  • 「couldn't read your MyFitnessPal profile」:一部のアカウントでは、MFP のプロフィールエンドポイントが 500 エラーを返します。 メールアドレスではなくユーザー名を MFP_USERNAME に設定してください。
  • curl_cffi のインストールに関する問題:Linux/macOS/Windows 用のビルド済みホイールが用意されています。 musl(Alpine)の場合は、ソースからビルドされます。

よくある質問

MyFitnessPal を Claude に接続するにはどうすればよいですか? uvx mfp-mcp auth を一度実行して MyFitnessPal のセッションを保存し、サーバーを追加してください。Claude Code では claude mcp add myfitnesspal -- uvx mfp-mcp を実行するか、Claude Desktop では クイックスタートの JSON エントリーを追加します。その後、Claude に食事を記録したり、 昨日の日記を表示したりするよう依頼してください。

無料ですか? はい。MIT ライセンスのオープンソースで、何も販売・収集しません。

MyFitnessPal の公式 API はありますか? 利用できるものはありません。MyFitnessPal の API は 承認済みのパートナーに限定されており、新規アプリケーションには公開されていないため、 取得できる API キーはありません。このサーバーは、ブラウザーのセッション Cookie を使ってサインインし、 MyFitnessPal のウェブサイトと同じリクエストを送信します(仕組みを参照)。

どの MCP クライアントで使えますか? stdio またはストリーミング可能な HTTP サーバーを実行する あらゆるクライアントで使えます。Claude Desktop、Claude Code、Cursor、Windsurf、 Cline、VS Code などが該当します。クイックスタートに記載の uvx mfp-mcp コマンドを使ってください。AI コーディングエージェントは llms-install.mdを参照してください。

食事の読み取りだけでなく、記録もできますか? はい。日記の項目の記録、置き換え、削除に加え、 体重と水分の記録、日次メモの書き込みができます。ツールを参照してください。

データはどこに送られますか? サーバーは MyFitnessPal とのみ通信します。セッション Cookie は ローカルの設定ディレクトリに保存され、日ごとの概要、気分のメモ、記憶した食品はローカルの SQLite ファイルに保存されます。 ツールの結果は、接続先の MCP クライアントとモデルに送られます。

仕組み

  • python-myfitnesspalが日記、測定値、運動のページを 解析します。Cloudflare を通過できるよう、Chrome の TLS フィンガープリントを偽装する curl_cffi セッション経由で実行し、NextAuth セッション Cookie のみを使用します。
  • 書き込みには、ウェブアプリ独自の XHR 呼び出しを再現します。従来の食品検索ページから /food/add が受け付ける food_id/weight_id を取得し、削除には /food/remove、 水分の読み書きには /food/water、日次メモの読み書きには /food/note を使用します。 いずれもページの CSRF トークンを使います。
  • 日ごとの概要、傾向、エクスポートでは、欠落した日を補完するローカルの SQLite キャッシュを読み込みます。 MyFitnessPal の日次メモは双方向で同期されます。気分のメモはローカルにのみ保存されます。

開発

git clone https://github.com/Mason-Levyy/myfitnesspal-mcp
cd myfitnesspal-mcp
uv sync --extra autorefresh
uv run pytest

テストは合成した MyFitnessPal の HTML/JSON フィクスチャを使って実行されます。アカウントは不要です。 リントとフォーマットは ruff(uv run ruff check .、uv run ruff format .)で適用されます。

コントリビューション

Issue やプルリクエストを歓迎します。特に、MyFitnessPal の変更時に取得したエンドポイントの記録を歓迎します。 セットアップ、スタイル、プルリクエストのチェックリストについてはCONTRIBUTING.mdを、 脆弱性を非公開で報告する方法についてはSECURITY.mdを参照してください。 リリース履歴はCHANGELOG.mdにあります。

プロジェクトを支援する

このサーバーが時間の節約に役立ったら、 リポジトリにスターを付けてください。スターが付くと、 ほかの MyFitnessPal ユーザーが GitHub の検索や MCP ディレクトリで見つけやすくなります。バグ報告や エンドポイントの記録も、Issueで歓迎します。

ライセンス

MIT

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。