PFC Balance は、日々の食事を記録して P(タンパク質)/ F(脂質)/ C(炭水化物)とカロリーを管理する Next.js アプリです。
- 全機能ドキュメント:
docs/features.md - Android リリース手順:
docs/android-release-guide.md
pnpm install
pnpm devブラウザで http://localhost:3000 を開いて確認できます。
追加画面の「写真」タブでは、食べた内容をテキスト入力して Gemini で P/F/C とカロリーを推定できます。
- サーバー側API:
POST /api/ai-nutrition - 必要な環境変数:
GEMINI_API_KEY
ローカルで確認する場合は .env.local に以下を設定してください。
GEMINI_API_KEY=your_gemini_api_keyGitHub Actions で運用する場合は、リポジトリの Settings > Secrets and variables > Actions に
GEMINI_API_KEY を登録して管理してください。
外部のAIや自動化ツールとは、URL接続のMCPサーバーとして連携できます。
- MCPエンドポイント:
POST /api/mcp/intake - URL例(ローカル):
http://localhost:3000/api/mcp/intake - 利用ツール:
register_intakes(摂取履歴の一括登録)list_intakes(登録済み履歴の取得。limit/startAt/endAt指定可)
initialize リクエスト例:
curl -X POST http://localhost:3000/api/mcp/intake -H "Content-Type: application/json" -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{}}'tools/call(register_intakes)例:
curl -X POST http://localhost:3000/api/mcp/intake -H "Content-Type: application/json" -d '{
"jsonrpc": "2.0",
"id": 2,
"method": "tools/call",
"params": {
"name": "register_intakes",
"arguments": {
"entries": [
{
"name": "サラダチキン",
"protein": 23,
"fat": 2,
"carbs": 1.5,
"calories": 120,
"store": "コンビニ",
"source": "external-ai",
"consumedAt": "2026-02-26T12:30:00+09:00"
}
]
}
}
}'consumedAt は未指定時に現在時刻が使われます。
pnpm test
pnpm lint