| mfp_get_diaryA | Get the food diary for a specific date including all meals and their nutritional information.
Returns meals (Breakfast, Lunch, Dinner, Snacks) with each food entry's name,
quantity, and complete nutrition breakdown (calories, protein, carbs, fat, etc.).
Also includes daily totals and goals.
Args:
params: GetDiaryInput containing:
- date (str, optional): Date in YYYY-MM-DD format, defaults to today
- response_format (str): 'markdown' or 'json'
Returns:
str: Formatted diary data with meals, entries, nutrition, and goals
|
| mfp_search_foodA | Search the MyFitnessPal food database for food items.
Returns a list of matching foods with their name, brand, serving size,
calories, and MFP ID (which can be used with mfp_get_food_details).
Args:
params: SearchFoodInput containing:
- query (str): Search query (e.g., 'chicken breast')
- limit (int): Maximum results to return (default 10)
- response_format (str): 'markdown' or 'json'
Returns:
str: List of matching food items with basic nutrition info
|
| mfp_get_food_detailsA | Get detailed nutritional information for a specific food item by its MFP ID.
Returns complete nutrition breakdown including calories, macros (protein, carbs, fat),
fiber, sugar, sodium, cholesterol, vitamins, minerals, and available serving sizes.
Args:
params: GetFoodDetailsInput containing:
- mfp_id (str): MyFitnessPal food item ID from search results
- response_format (str): 'markdown' or 'json'
Returns:
str: Complete nutritional information for the food item
|
| mfp_get_measurementsA | Get body measurements (weight, body fat, etc.) over a date range.
Returns historical measurement data with dates and values. Useful for
tracking weight loss progress and body composition changes.
Args:
params: GetMeasurementsInput containing:
- measurement (str): Type of measurement (default 'Weight')
- start_date (str, optional): Start date, defaults to 30 days ago
- end_date (str, optional): End date, defaults to today
- response_format (str): 'markdown' or 'json'
Returns:
str: Measurement history with dates and values
|
| mfp_set_measurementA | Log a new body measurement (weight, body fat, etc.) for today.
Records the measurement value in MyFitnessPal for tracking progress.
Args:
params: SetMeasurementInput containing:
- measurement (str): Type of measurement (default 'Weight')
- value (float): Measurement value (e.g., 185.5)
Returns:
str: Confirmation message with the logged value
|
| mfp_get_exercisesA | Get logged exercises for a specific date.
Returns both cardiovascular and strength training exercises with their
details (duration, calories burned, sets, reps, weight, etc.).
Args:
params: GetExercisesInput containing:
- date (str, optional): Date in YYYY-MM-DD format, defaults to today
- response_format (str): 'markdown' or 'json'
Returns:
str: List of exercises with details and calories burned
|
| mfp_get_goalsA | Get the user's daily nutrition goals (calories, protein, carbs, fat, etc.).
Returns the configured daily targets for all tracked nutrients.
Args:
params: GetGoalsInput containing:
- date (str, optional): Date in YYYY-MM-DD format, defaults to today
- response_format (str): 'markdown' or 'json'
Returns:
str: Daily nutrition goals and targets
|
| mfp_set_goalsA | Update daily nutrition goals (calories, protein, carbs, fat).
Sets new daily targets for the specified nutrients. Only updates the
values that are provided; others remain unchanged.
Args:
params: SetGoalsInput containing:
- calories (int, optional): Daily calorie goal
- protein (int, optional): Daily protein goal in grams
- carbohydrates (int, optional): Daily carb goal in grams
- fat (int, optional): Daily fat goal in grams
Returns:
str: Confirmation message with updated goals
|
| mfp_get_waterA | Get water intake for a specific date, in millilitres.
MyFitnessPal's `/food/water` endpoint returns the amount in a field
literally named `milliliters` (see python-myfitnesspal's `_get_water`),
so this value is always ml regardless of what unit the account's UI is
configured to display.
Args:
params: GetWaterInput containing:
- date (str, optional): Date in YYYY-MM-DD format, defaults to today
Returns:
str: JSON with `date` and `water_ml`
|
| mfp_add_food_to_diaryA | Add a food item to your MyFitnessPal food diary for a specific date and meal.
This tool adds a food entry to your diary. You can search for foods using
mfp_search_food to find the food ID (mfp_id) needed for this tool.
Args:
params: AddFoodToDiaryInput containing:
- mfp_id (str): MyFitnessPal food item ID (from mfp_search_food)
- meal (str): Meal name - 'Breakfast', 'Lunch', 'Dinner', or 'Snacks' (default: 'Breakfast')
- date (str, optional): Date in YYYY-MM-DD format, defaults to today
- quantity (float): Number of servings (default: 1.0)
- unit (str, optional): Unit/serving size (e.g., '1 cup', '100g')
Returns:
str: Confirmation message with details of the added food entry
|
| mfp_remove_food_from_diaryA | Remove (delete) one or more food entries from your diary.
Two modes:
1. By entry_id (precise): delete exactly the entry whose id matches -
this is the UUID `mfp_add_food_to_diary` returned when you logged it.
Use this when you already know the ID.
2. By name_contains (fuzzy): list the day's entries, find ones whose
name contains the given substring (case-insensitive), optionally
restricted to a meal, and delete up to max_matches of them.
Args:
params: RemoveFoodFromDiaryInput with one of:
- entry_id: the entry's UUID, as returned by
mfp_add_food_to_diary (NOT a food_entry_id from the diary page)
- name_contains: substring match against entry names
- meal: restrict matching to one meal
- max_matches: safety cap for fuzzy matches (default 1)
- date: date to operate on (default today)
Returns:
JSON describing each entry that was removed.
|
| mfp_set_waterA | Log water intake for a specific date.
Sets the number of cups of water consumed for the day. MyFitnessPal uses
cups as the unit (1 cup = ~237ml).
Args:
params: SetWaterInput containing:
- cups (float): Number of cups of water (e.g., 2.5 for 2.5 cups)
- date (str, optional): Date in YYYY-MM-DD format, defaults to today
Returns:
str: Confirmation message with the logged water amount
|
| mfp_get_reportA | Get a nutrition report over a date range.
Returns daily values for the specified nutrient/metric over the date range.
Useful for analyzing trends and patterns in nutrition intake.
Args:
params: GetReportInput containing:
- report_name (str): Report type (e.g., 'Net Calories', 'Protein')
- start_date (str, optional): Start date, defaults to 7 days ago
- end_date (str, optional): End date, defaults to today
- response_format (str): 'markdown' or 'json'
Returns:
str: Daily values and summary statistics for the report period
|
| refresh_browser_cookiesA | Extract and save session cookies from your web browser.
Use this tool when authentication fails and you need to refresh your
MyFitnessPal session. You must be logged into myfitnesspal.com in the
target browser.
Args:
browser: Source to extract cookies from. Options:
- 'auto' (default): scan every installed Chromium-based
browser on macOS (Arc, Chrome, Edge, Brave, Vivaldi,
Opera, ...) and use the first one with a valid session.
- 'arc', 'chrome', 'chromium', 'edge', 'brave', 'vivaldi',
'opera': force a specific Chromium browser (macOS).
- 'firefox': use browser_cookie3 (Firefox is not Chromium).
Returns:
Success message or error description.
|
| mfp_create_custom_foodA | Create a private custom food in the user's MyFitnessPal account.
Fills the full nutrition panel MFP supports (macros, fats breakdown,
cholesterol, sodium, potassium, fiber, sugars, and the four %DV micros).
Uses the cookie-authenticated web endpoint, so no browser needs to be
running. Returns the new food's id, which mfp_add_food_to_diary accepts.
CARBS ARE NET (with the default country_code="NL"): pass net carbs in
`carbs`; MFP stores net_carbs as given and reports total = carbs + fiber.
Never pre-add fiber. Verified: carbs=42/fiber=8 stores 50/42 under "NL" but
42/34 with country_code omitted, so the field is load-bearing, not cosmetic.
MFP has no update endpoint. To correct a food, create the corrected version
then mfp_delete_custom_food the old one.
Args:
params: CreateCustomFoodInput (description, brand_name, serving_amount,
serving_unit, calories + optional nutrients, public, response_format)
Returns:
str: The created food's id, description and HTTP status
|
| mfp_list_own_foodsA | List the user's own custom foods, newest first.
Private custom foods do not reliably surface in mfp_search_food, so this is
the way to find the id of something previously created.
Args:
params: ListOwnFoodsInput (search, limit, response_format)
Returns:
str: Matching custom foods with id, description, brand and calories
|
| mfp_delete_custom_foodA | Delete one of the user's custom foods by id.
Destructive and not recoverable. A food actively referenced by a logged
diary entry may be refused by MyFitnessPal.
Args:
params: DeleteCustomFoodInput (food_id)
Returns:
str: Confirmation with the HTTP status
|
| mfp_log_fastA | Log a completed intermittent fasting window in MyFitnessPal.
Creates a new entry with the given start and end times. If `id` is
omitted, a fresh uppercase UUIDv4 is generated (matches how the iOS
app self-assigns ids). The returned `id` is what `mfp_update_fast` and
`mfp_delete_fast` accept — save it if you plan to modify the entry
later.
Args:
params: LogFastInput (fast_started, fast_ended, id?, response_format)
Returns:
str: The created entry with id, timestamps, created_at, and status
|
| mfp_update_fastA | Update an existing fasting entry's start and end times.
MFP's PATCH is a full replacement of the two time fields — both must be
supplied even if only one is changing.
The MCP cannot list fasts (MFP exposes no read endpoint); the `id` must
come from a prior `mfp_log_fast` call or be captured from the MFP app.
Args:
params: UpdateFastInput (id, fast_started, fast_ended, response_format)
Returns:
str: The updated entry (id, timestamps, status)
|
| mfp_delete_fastA | Delete a fasting entry by id.
Destructive and not recoverable. The `id` must come from a prior
`mfp_log_fast` call or be captured from the MFP app — the MCP cannot
list existing fasts because MFP exposes no read endpoint.
Args:
params: DeleteFastInput (id, response_format)
Returns:
str: Confirmation with the deleted id and HTTP status
|