Skip to main content
Glama

MFP Logger

Chat to log food into MyFitnessPal — from your phone (Claude / ChatGPT) via an always-on Railway server, or from your Mac terminal.

Say:

log 2 eggs and a banana for breakfast

…and it lands in your diary (meal + quantity + date).

MyFitnessPal diaries are meal-based (Breakfast / Lunch / Dinner / Snacks), not clock timestamps.


Your Mac does not need to stay on. Claude’s cloud calls your Railway URL.

On any browser logged into myfitnesspal.com:

  1. DevTools → Application → Cookies → www.myfitnesspal.com

  2. Copy __Secure-next-auth.session-token (or the full Cookie header)

2. Create a Railway project

  1. Push this repo to GitHub (or deploy from the Railway CLI).

  2. railway.app → New Project → Deploy from GitHub (Dockerfile is detected).

  3. Variables (Settings → Variables):

Variable

Value

MCP_AUTH_TOKEN

long random secret (python3 -c "import secrets; print(secrets.token_urlsafe(32))")

MFP_COOKIE

the session cookie from step 1

MFP_USERNAME

optional MFP username if needed

  1. Service → SettingsNetworkingPublic NetworkingGenerate Domain

  2. Wait until deploy is healthy (/healthz should return {"ok":true,...}).

3. Connect Claude (once on web)

Claude’s custom connector UI often only shows OAuth fields (no Bearer header). Use the secret path URL instead:

https://YOUR-APP.up.railway.app/t/YOUR_MCP_AUTH_TOKEN/mcp
  1. Open claude.ai/customize/connectors (same account as iOS).

  2. Add custom connector

  3. Paste that full URL (token is in the path)

  4. Leave OAuth Client ID and Client Secret empty

  5. Add / Connect

4. Use Claude on iPhone

  1. Open Claude iOS → chat → + → Connectors → enable this connector

  2. Message: log 2 eggs and a banana for breakfast

ChatGPT mobile

Same path URL works. If ChatGPT asks for an API key, you can still paste MCP_AUTH_TOKEN, but the path URL alone is enough.

Session cookies die every few weeks. On your phone:

  1. Open https://YOUR-APP.up.railway.app/admin

  2. Enter MCP_AUTH_TOKEN + a fresh cookie → Save

  3. Also paste the same cookie into Railway VariablesMFP_COOKIE (so restarts keep it)


Local Mac (optional)

uv sync
uv run mfp-logger auth          # save cookie locally
uv run mfp-logger chat          # needs OPENAI_API_KEY — terminal agent
uv run mfp-logger mcp           # local MCP for testing only

MCP tools

Tool

Purpose

search_food

Search MFP database

log_food

Log food + quantity + meal + date

quick_add

Quick-add calories/macros

get_diary

Read diary for a day

get_goals

Daily goals

delete_food

Remove a mistaken entry


Security

  • Treat MCP_AUTH_TOKEN like a password. Anyone with
    https://…/t/<token>/mcp can write to your diary.

  • Prefer not sharing that URL; rotate the token in Railway if it leaks.

  • Never commit .env (contains MFP_COOKIE).