Skip to main content
Glama
AdamWalt

MyFitnessPal MCP Server

by AdamWalt

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
MFP_PASSWORDNoYour MyFitnessPal password. If not provided, the server will attempt to use stored session cookies or browser cookies.
MFP_USERNAMENoYour MyFitnessPal username or email address. If not provided, the server will attempt to use stored session cookies or browser cookies.

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
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

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/AdamWalt/myfitnesspal-mcp-python'

If you have feedback or need assistance with the MCP directory API, please join our Discord server