pp-myfitnesspal について
pp-myfitnesspalは、MyFitnessPalの食事、運動、体重記録を読み取るコマンドラインスキルです。エージェントや栄養分析のワークフロー向けに、ローカルSQLiteストアを使った食品単位のエクスポート、日記検索、傾向分析、最近の記録の要約を提供します。
主な機能
- 01日記、運動、目標、測定値の取得
- 02同期済み日記を食品名で検索
- 03食品ごとの日記データをCSVに出力
- 04よく記録される食品と目標達成の連続日数を分析
- 05contextで最近の記録を要約
活用シーン
- 01数週間にわたる栄養傾向の確認
- 02特定の食品を記録した日の検索
- 03詳細分析用の日記データの出力
- 04栄養指導に向けた記録の要約
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ mvanhorn/ printing-press-library --skill pp-myfitnesspalインストール後、Claude Code で/pp-myfitnesspalを入力して読み込まれたか確認します。
詳細
MyFitnessPal — Printing Press CLI
前提条件:CLI をインストールする
このスキルは myfitnesspal-pp-cli バイナリを使用します。このスキルのコマンドを実行する前に、CLI がインストールされていることを必ず確認してください。インストールされていない場合は、先にインストールしてください。
- Printing Press インストーラーを使ってインストールします。バイナリのデフォルトのインストール先は、macOS/Linux では
$HOME/.local/bin、Windows では%LOCALAPPDATA%\Programs\PrintingPress\binです。npx -y @mvanhorn/printing-press-library install myfitnesspal --cli-only - 確認します:
myfitnesspal-pp-cli --version - 表示されたインストール先のディレクトリが、このスキルを実行するエージェント/ランタイムの
$PATHに含まれていることを確認します。
npx によるインストールが失敗した場合(Node がない、オフラインなど)は、Go を直接インストールする方法に切り替えてください(Go 1.26.6 以降が必要です)。
go install github.com/mvanhorn/printing-press-library/library/productivity/myfitnesspal/cmd/myfitnesspal-pp-cli@latest
インストール後に --version が「command not found」と表示される場合、ランタイムからバイナリのディレクトリを $PATH 経由で参照できていません。確認に成功するまで、スキルのコマンドを実行しないでください。
この CLI を使う場面
エージェントがユーザーの実際の食事、運動、体重の履歴を分析する必要がある場合、特に今日より前の期間も含めて分析する場合に、この CLI を使用してください。ローカルの SQLite ストアと、エージェント向けに設計された context コマンドを使えば、昨日の食事記録をチャットに貼り付けてやり取りする手間を、1 回のツール呼び出しで置き換えられます。栄養コーチング、カロリー赤字の調整、マクロ栄養素の分析、「X を記録したのはいつもどんなときか」といった振り返りの質問、また、公式 MFP UI の食事ごとの集計では回答できない質問に活用してください。
独自の機能
この API を扱うほかのツールにはない機能です。
蓄積されるローカルデータ
-
export csv— 食事記録を CSV にエクスポートします。食事ごとではなく、記録された食品ごとに 1 行出力されます。MFP Premium が提供する CSV は食事ごとの出力のみです。エージェントが分析、トレーニング、長期的なコーチングの記憶に使うため、ユーザーの食事履歴全体を食品単位で必要とする場合に活用してください。
myfitnesspal-pp-cli export csv --from 2026-01-01 --to 2026-05-08 --out diary.csv -
analytics top-foods— パレート分析クエリです。指定した期間に、どの N 種類の食品がタンパク質/炭水化物/脂質/食物繊維/糖質/カロリーの X%を占めたかを調べます。ユーザーがマクロ栄養素の目標に実際に影響している食品を把握できるよう、エージェントがサポートする場合に使います。ユーザーが影響していると思っている食品ではなく、実際に影響している食品を明らかにできます。
myfitnesspal-pp-cli analytics top-foods --nutrient protein --days 60 --cumulative-percent 80 --json -
find— ローカルストアにあるすべての食事記録と食品を全文検索します。一致した項目について、日付、食事、分量、カロリーを返します。エージェントが、何か月分もの食事記録をスクロールせずに、ユーザーが特定の食品を記録したすべての機会を思い出す必要がある場合に使います。
myfitnesspal-pp-cli find --food "Chipotle Bowl" --from 2026-01-01 --json -
analytics streak— カロリー合計が目標の許容範囲(±許容誤差)に収まった連続日数の最長記録を調べます。ユーザーが目標達成状況の推移を尋ねたときに使います。主観的な解釈を加えずに回答できます。
myfitnesspal-pp-cli analytics streak --days 60 --tolerance 0.05 --json
エージェント向けの連携機能
-
context— 直近 N 日分のスナップショットを 1 回の呼び出しで取得します。食事の合計、体重の推移、現在の目標、最近の食品、マクロ栄養素の差分が含まれ、エージェントのコンテキストウィンドウに収まるサイズです。ユーザーの栄養について分析を始める前に、エージェントが最初に呼び出すべきコマンドです。全体像を一度に把握できます。
myfitnesspal-pp-cli context --days 14 --json
コマンドリファレンス
api-user — v2 API の認証済みユーザーレコード(設定、有料サブスクリプション、プロフィール)。
myfitnesspal-pp-cli api-user— v2 のユーザーレコードを取得します(単位、目標設定、有料サブスクリプション、プロフィール)。
diary — 毎日の食事日記(食事ごとの記録とすべての栄養素情報)。
myfitnesspal-pp-cli diary get-day— 1 日分の食事日記をスクレイピングした HTML として取得します(python-myfitnesspal が使用する旧式のインターフェース)。myfitnesspal-pp-cli diary load-recent— 食事用の最近使用した食品クイック選択リストを読み込みます。
exercise — 指定した日に記録された有酸素運動と筋力トレーニング。
myfitnesspal-pp-cli exercise— 1 日分の運動記録(有酸素運動と筋力トレーニング)をスクレイピングした HTML として取得します。
food — 公開食品データベースの検索、食品の詳細表示、カスタム食品の記録。
myfitnesspal-pp-cli food details— MFP の食品 ID を指定して、食品 1 件のすべての栄養素情報を取得します。myfitnesspal-pp-cli food search— 食品データベースを検索します。myfitnesspal-pp-cli food suggested-servings— 食品の一般的な分量候補を取得します(「1 カップ/100g/中サイズ」の選択肢を提供します)。
goals — 1 日のカロリー、主要栄養素、水分、体重の目標。
myfitnesspal-pp-cli goals— 現在の 1 日の目標(目標カロリー、主要栄養素の配分、水分摂取目標)をスクレイピングした HTML として取得します。
measurement — 体重、体脂肪率などの身体測定値(時系列)。
myfitnesspal-pp-cli measurement get-range— 1 種類の測定値について、指定した期間の値をスクレイピングした HTML として取得します。myfitnesspal-pp-cli measurement types— アカウントで定義されている測定の種類(Weight、BodyFat、Neck、Waist、Hips、およびカスタム項目)を一覧表示します。
note — その日の食事日記または運動日記に添付されたフリーテキストのメモ。
myfitnesspal-pp-cli note— 1 日分の食事メモを取得します。
reports — 集計済みの時系列レポート(日付から値への系列として、任意の栄養素や体重を表示)。
myfitnesspal-pp-cli reports— 時系列レポートを取得します(例:nutrition/Net%20Calories/30 は、直近 30 日分の正味カロリーを返します)。
user — 認証済みユーザーのアカウント情報、単位、設定。
myfitnesspal-pp-cli user auth-token— セッション Cookie から v2 のベアラートークンを初期化して取得します。myfitnesspal-pp-cli user top-foods-server— 期間内によく記録した食品をサーバー側で集計して取得します(「よく食べる食品」のインサイトを提供します)。
water — 毎日の水分摂取量の記録。
myfitnesspal-pp-cli water— 1 日分の水分摂取量を取得します。
適切なコマンドを見つける
やりたいことはわかっているものの、どのコマンドを使えばよいかわからない場合は、CLI に直接問い合わせてください。
myfitnesspal-pp-cli which "<capability in your own words>"
which は、自然言語で指定された機能の問い合わせを、この CLI の厳選された機能インデックスから最適なコマンドに解決します。終了コード 0 は 1 件以上の一致を示し、終了コード 2 は確かな一致がないことを示します。一致しない場合は --help を使うか、クエリをより絞り込んでください。
レシピ
コーチングの質問に答えるためのエージェントコンテキストを構築する
myfitnesspal-pp-cli context --days 30 --json --select diary_totals,weight_trend,goals
ツールを 1 回呼び出すだけで、エージェントが「今週はさらに減量すべきですか?」という質問に、何度も情報を貼り付けてもらうことなく答えるために必要な情報をすべて取得できます。
食品を記録したすべての日時を探す
myfitnesspal-pp-cli find --food "Greek yogurt" --from 2026-01-01 --json --select date,meal,servings,calories
同期済みの日記をローカルの FTS で検索します。MFP の Web UI ではスクロールが必要な記録を、すぐに確認できます。
四半期分の食品別 CSV
myfitnesspal-pp-cli export csv --from 2026-01-01 --to 2026-03-31 --out q1-2026.csv
食品の記録 1 件につき 1 行で、すべての栄養素情報を含みます。MFP のプレミアム機能では提供されないエクスポートです。
主要栄養素の摂取に寄与している食品
myfitnesspal-pp-cli analytics top-foods --nutrient protein --days 60 --cumulative-percent 0.8 --json
ローカルの日記に対するパレート分析クエリです。過去 60 日間のタンパク質の大半を、どの食品が占めていたかを確認できます。
目標達成の連続記録
myfitnesspal-pp-cli analytics streak --days 60 --tolerance 0.05 --json
カロリー目標の ±5% 以内に収まった日数の最長記録です。目標値には、ローカルストアに同期された最新の goal_snapshot が使われます。変更するには --goal-calories <value> を渡してください。
認証の設定
MyFitnessPal は公開 API を終了しました。この CLI はログイン済みのブラウザーセッションを使用します。Chrome で myfitnesspal.com にログインしてから、myfitnesspal-pp-cli auth login --chrome を実行してください。Cookie は .myfitnesspal.com ドメインから読み取られます。セッションは通常 7~30 日間有効です。有効期限が切れたら、Chrome で再度ログインし、auth login --chrome をもう一度実行してください。
myfitnesspal-pp-cli doctor を実行して、設定を確認してください。
エージェントモード
任意のコマンドに --agent を追加します。次のオプションに展開されます:--json --compact --no-input --no-color --yes。
-
パイプ可能 — 標準出力には JSON、標準エラーにはエラーを出力します
-
フィルター可能 —
--selectでフィールドを絞り込めます。ドット区切りのパスはネストされた構造をたどり、配列は各要素をたどります。出力の多い API でコンテキストを小さく保つために重要です:myfitnesspal-pp-cli api-user --user-id 550e8400-e29b-41d4-a716-446655440000 --agent --select id,name,status -
プレビュー可能 —
--dry-runで、リクエストを送信せずに内容を表示します -
オフライン対応 — 同期/検索コマンドは、利用可能な場合にローカルの SQLite ストアを使用できます
-
非対話型 — プロンプトは表示されず、すべての入力はフラグで指定します
-
明示的な再試行 — すでに存在するリソースの作成を成功として扱う場合にのみ、
--idempotentを使用します
レスポンスエンベロープ
ローカルストアまたは API から読み取るコマンドは、出力をデータの由来を示すエンベロープで囲みます:
{
"meta": {"source": "live" | "local", "synced_at": "...", "reason": "..."},
"results": <data>
}
データには .results を解析し、ライブデータかローカルデータかを確認するには .meta.source を参照してください。人間が読みやすい N results (live) という概要は、標準出力が端末の場合にのみ標準エラーに出力されます。パイプやエージェントから利用する場合、標準出力には純粋な JSON が出力されます。
エージェントからのフィードバック
あなた(またはエージェント)がこの CLI に気になる点を見つけたら、記録してください:
myfitnesspal-pp-cli feedback "the --since flag is inclusive but docs say exclusive"
myfitnesspal-pp-cli feedback --stdin < notes.txt
myfitnesspal-pp-cli feedback list --json --limit 10
記録は ~/.myfitnesspal-pp-cli/feedback.jsonl にローカル保存されます。MYFITNESSPAL_FEEDBACK_ENDPOINT が設定されており、かつ --send が指定されているか、MYFITNESSPAL_FEEDBACK_AUTO_SEND=true の場合を除き、POST されることはありません。デフォルトではローカルにのみ保存されます。
バグ報告ではなく、意外に感じたことを書いてください。短く、具体的に、1 行で。それが積み重なっていく部分です。
出力の配信
すべてのコマンドで --deliver <sink> を指定できます。出力は標準出力に加えて(または標準出力の代わりに)指定したシンクに送られるため、エージェントはコマンド結果を手動でパイプせずに振り分けられます。対応しているシンクは 3 種類です:
| シンク | 動作 |
|---|---|
stdout | デフォルト。標準出力のみに書き込みます |
file:<path> | 出力を <path> にアトミックに書き込みます(tmp + rename) |
webhook:<url> | 出力本文を URL に POST します(--compact の場合は application/json または application/x-ndjson) |
不明なスキームは、対応するスキームを示す構造化エラーとともに拒否されます。Webhook の失敗時はゼロ以外の終了コードが返され、URL と HTTP ステータスが標準エラーに記録されます。
名前付きプロファイル
プロファイルは、保存したフラグ値のセットで、複数回の実行で再利用できます。スケジュールされたエージェントが、毎回同じ設定で同じコマンドを呼び出す場合に使用します。これは HeyGen の「Beacon」パターンです。
myfitnesspal-pp-cli profile save briefing --json
myfitnesspal-pp-cli --profile briefing api-user --user-id 550e8400-e29b-41d4-a716-446655440000
myfitnesspal-pp-cli profile list --json
myfitnesspal-pp-cli profile show briefing
myfitnesspal-pp-cli profile delete briefing --yes
明示的なフラグは常にプロファイル値より優先され、プロファイル値はデフォルトより優先されます。agent-context は、利用可能なすべてのプロファイルを available_profiles に一覧表示するため、情報を調べるエージェントは実行時にプロファイルを検出できます。
終了コード
| コード | 意味 |
|---|---|
| 0 | 成功 |
| 2 | 使用方法のエラー(引数が誤っています) |
| 3 | リソースが見つかりません |
| 4 | 認証が必要です |
| 5 | API エラー(上流での問題) |
| 7 | レート制限中(待機して再試行してください) |
| 10 | 設定エラー |
引数の解析
$ARGUMENTS を解析します:
- 空、
help、または--help→myfitnesspal-pp-cli --helpの出力を表示 installで始まる →mcpで終わる場合は MCP のインストール、それ以外の場合は上記の前提条件を参照- それ以外 → 直接使用(CLI コマンドとして
--agentを付けて実行)
MCP サーバーのインストール
- MCP サーバーをインストールします:
go install github.com/mvanhorn/printing-press-library/library/other/myfitnesspal/cmd/myfitnesspal-pp-mcp@latest - Claude Code に登録します:
claude mcp add myfitnesspal-pp-mcp -- myfitnesspal-pp-mcp - 確認します:
claude mcp list
直接利用
- インストールされているか確認します:
which myfitnesspal-pp-cli見つからない場合は、インストールを提案します(このスキルの上部にある前提条件を参照してください)。 - ユーザーのクエリに最適なコマンドを、上記の「独自の機能とコマンドリファレンス」から選びます。
--agentフラグを付けて実行します:myfitnesspal-pp-cli <command> [subcommand] [args] --agent- 判断に迷う場合は、サブコマンドのヘルプを確認します:
myfitnesspal-pp-cli <command> --help。