Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
MFP_COOKIENoMyFitnessPal session cookie (__Secure-next-auth.session-token). Only needed to actually call tools.
MFP_USERNAMENoMyFitnessPal username (not email); only needed if profile lookup fails.

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
fitness_get_dayA

Nutrition summary, diary entries, the MyFitnessPal daily note, and the local feel note for a day.

date: YYYY-MM-DD (default: today).

fitness_search_foodA

Search MyFitnessPal's food database and return candidate matches.

Each candidate has name, brand, calories, macros, serving, and the food_id + weight_id to pass to fitness_log_food to log exactly that item.

fitness_draft_foodA

Draft a food entry: numbered options to choose from before logging.

Each option lists every serving size with its calories/protein/carbs/fat for the whole entry (serving × quantity) and a suggested_serving. The min_/max_ targets (grams; calories in kcal) also apply to the whole entry: options that fit come first, near misses follow, flagged fits_targets=false. A food you've confirmed before for this query is pinned to the top. The order is fixed once drafted.

Log a choice with fitness_log_food(draft_id=..., option=N, serving=M); call this again with different targets to refine. Drafts last 24 hours. date: YYYY-MM-DD (default: today).

fitness_log_foodA

Log a food to the real MyFitnessPal diary.

Preferred: pick from a fitness_draft_food draft with draft_id + option (+ serving, default the option's suggested_serving). meal, quantity, and date default to the draft's. pin=True remembers the choice so logging the same query later reuses this food and serving.

With only query: logs a pinned food, or the single exact-name match; otherwise nothing is logged and a draft is returned (needs_choice=true) to pick from. With food_id + weight_id (from fitness_search_food): logs exactly that item, query being its display name.

meal: breakfast|lunch|dinner|snacks (default breakfast) or any meal name on the account. quantity: number of servings (default 1). date: YYYY-MM-DD (default today).

fitness_list_food_pinsA

List remembered food choices (query → food and serving) that fitness_log_food reuses. Stored locally only.

fitness_clear_food_pinA

Forget a remembered food choice for query, or every choice with clear_all=True, so the next log of that query drafts options again.

fitness_delete_foodA

Remove a food from the MyFitnessPal diary by name match.

query: text matched against logged entry names (e.g. "banana"). If this matches nothing, the error lists what's actually logged that day/meal — use that to retry with a better query. If it matches more than one entry (and none is an exact name match), the error lists the candidates; narrow query to pick one. Identical duplicates (same name, including its quantity, in the same meal) are interchangeable, so one of them is removed; call again to remove another. meal: optional breakfast|lunch|dinner|snacks or any meal name on the account, to disambiguate duplicates. date: YYYY-MM-DD (default: today).

fitness_modify_foodA

Replace a MyFitnessPal diary entry: deletes the match, then adds a food.

query: the existing entry to replace (name match) within meal. If this matches nothing, the error lists what's actually logged that day/meal — use that to retry with a better query. If it matches more than one entry (and none is an exact name match), the error lists the candidates; narrow query to pick one. Of several identical duplicates, one is replaced. new_query: the food to add instead; omit to re-add query (e.g. to change quantity). The replacement is chosen like fitness_log_food's: a pinned food or a single exact-name match is used directly; otherwise nothing is changed and a draft comes back (needs_choice=true) — call again with the same query plus draft_id + option (and optionally serving). meal: breakfast|lunch|dinner|snacks or any meal name on the account, used for both the delete and the add. quantity: servings (default 1, or the draft's). date: YYYY-MM-DD (default: today).

fitness_log_weightA

Log a weight measurement to MyFitnessPal.

weight: in your MyFitnessPal account's display unit (kg or lbs). Logging twice for the same date updates that day's measurement. date: YYYY-MM-DD (default: today).

fitness_log_waterA

Log water to the real MyFitnessPal water tracker.

amount: quantity to add to the day's total. unit: cup | fl_oz | ml | l (common spellings like "cups", "oz", "fl oz", "milliliters", "litres" are accepted). replace: set the day's total to amount instead of adding — use it to correct a mislogged total (amount=0 clears the day). Returns previous_ml; to undo a mistake, call again with amount=previous_ml, unit="ml", replace=True. date: YYYY-MM-DD (default: today).

fitness_get_exerciseA

Read the MyFitnessPal exercise diary (cardio + strength) for a day.

date: YYYY-MM-DD (default: today).

fitness_get_exercise_entriesA

List a day's cardio and strength exercise-diary entries.

Each entry has its section, name, and that section's columns (cardio: minutes, calories_burned; strength: sets, reps_set, weight_set). entry_id is informational only — fitness_delete_exercise deletes by name match. date: YYYY-MM-DD (default: today).

fitness_delete_exerciseA

Remove exercise-diary entries by name match (case-insensitive).

query: text matched against logged exercise names. By default deletes exactly one entry, like fitness_delete_food: an exact name match wins; otherwise several matches raise an error listing the candidates, and no match raises an error listing what's actually logged. Of several identical rows (same name and columns), one is removed. all_matches: delete every entry whose name contains query — for cleaning up syncs that log one workout as several same-named rows (e.g. Garmin's "Aerobics, general"). Check fitness_get_exercise_entries first; a short query can match many entries. date: YYYY-MM-DD (default: today).

fitness_get_noteA

Read the MyFitnessPal daily diary note (the free-text 'Notes' box at the bottom of the day) straight from your account.

date: YYYY-MM-DD (default: today).

fitness_log_noteA

Write the MyFitnessPal daily diary note (the free-text 'Notes' box at the bottom of the day). This is your real MFP note, synced to your account — distinct from the local-only fitness_log_feel.

text: the note body. append: add to the existing note on a new line instead of replacing it. date: YYYY-MM-DD (default: today).

fitness_log_feelB

Save a 'how I feel today' note. Stored locally only — never sent to MyFitnessPal.

rating: optional 1-5. date: YYYY-MM-DD (default: today).

fitness_get_trendsA

A single metric over a date range, for charts/analysis.

metric: weight | calories_in | protein | carbs | fat. start/end: YYYY-MM-DD (default: last 30 days). Returns {metric, points: [{day, value}, ...]} with nulls omitted.

fitness_bulk_exportA

Export a whole date range at once for analysis: per-day nutrition totals, food entries with macros, the MyFitnessPal daily note, and local feel notes. Read-only.

start/end: YYYY-MM-DD (default: last 30 days ending today). sync_first: gap-fill from MyFitnessPal before exporting. Off by default so large historical exports stay fast on cached data.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A3.9/5.0

Scored across 18 tools

Disambiguation4/5

Most tools target a clearly distinct resource+action, and the food workflow (search -> draft -> log) is well delineated. However, fitness_get_exercise and fitness_get_exercise_entries both appear to read the same exercise diary and could easily be confused.

Naming Consistency5/5

Every tool uses the same fitness_verb_noun snake_case pattern (get_day, log_food, delete_food, list_food_pins). No mixing of conventions.

Tool Count4/5

18 tools is on the heavier side but each covers a genuine slice of the domain (food, exercise, notes, weight, water, trends, export, pins). Slightly over but defensible.

Completeness4/5

Strong coverage: full food CRUD plus search/draft/pins, water, weight, notes, trends, and bulk export. The only notable gap is adding exercise entries (read/delete exist, but logging appears handled by external sync), which agents can work around.

Maintenance

ActivityMaintained
ResponsivenessWithin a week