Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
FATSECRET_MCP_USERNoWith more than one person in FATSECRET_MCP_USERS: the id the server acts as.
FATSECRET_MCP_USERSYesEveryone the server serves, as one JSON line written by `fatsecret-mcp add-user`.[{"id":"demo","display_name":"Demo","fatsecret_access_token":"placeholder","fatsecret_access_secret":"placeholder","daily_targets":{"kcal":2000,"protein":120,"fat":70,"carbohydrate":220},"timezone":"UTC"}]
FATSECRET_CONSUMER_KEYYesYour FatSecret Platform API consumer key.placeholder
FATSECRET_CONSUMER_SECRETYesYour FatSecret Platform API consumer secret.placeholder
FATSECRET_MCP_SIGNING_KEYYesA random key of at least 32 characters that signs drafts. Keep it across restarts.placeholder-signing-key-at-least-32-chars

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
}

Tools

Functions exposed to the LLM to take actions

NameDescription
get_diary_dayA

Read the User's Food Diary for one Diary Day.

Returns the Food Entries grouped by Meal (name, amount, kcal and Macros), the day's totals, the User's Daily Targets and what remains of them. Use it for questions like "what have I eaten today?" or "how much is left?". Past days reuse entries already read during this server session, for up to twelve hours. Today is always fresh. Set refresh=true when the User requests fresh data or says they changed this past day in the FatSecret app.

get_period_summaryA

Read daily kcal and Macro totals alongside the User's configured Daily Targets.

Includes both endpoints, at most 31 Diary Days, and marks days without Food Entries. To compare two periods, call once for each period. Returns numbers without evaluation. Past days reuse Food Entries already read during this server session, for up to twelve hours. Missing days use FatSecret's month totals; today is always fresh. Set refresh=true when the User requests fresh data or says they changed these days in the FatSecret app.

search_foodsA

Find catalog Foods with loggable Servings, kcal and Macros.

Search one food at a time. Search a composed dish, such as a plate in a photo, as a whole first (e.g. "beef bibimbap"), and its components separately only when the dish has no good match. Pass the User's original description and, for non-English input, an English rendering: the catalog is searched with the English rendering, or the original when omitted. Nutrition and metric amounts describe the whole Serving; number_of_units is its FatSecret unit count. A not_found result is normal. When a branded product isn't among the matches, ask the User for a photo of its Nutrition Label and draft it as a Stand-in with draft_entries. This tool does not write to the Food Diary.

draft_entriesA

Propose new Food Entries, and changes to logged ones, without writing to the Food Diary.

Show the Draft to the User.

A Food item uses Food and Serving ids from search_foods. number_of_units is the FatSecret unit count, not necessarily grams: scale it from the Serving's number_of_units. Name it with food_entry_name the way the User said it, in their language, followed by a short note in the same language that it was matched in the US catalog, e.g. "Kajzerka (katalog USA)" or "Kaiser roll (US catalog)". The Draft shows the catalog's name beside it. A Serving of known weight, such as "1 roll (57 g)", is logged as that weight in the Food's Serving in grams or ml when it has one, so the Draft may show that Serving instead.

A Nutrition Label item logs a branded product missing from the catalog as a Stand-in: the closest catalog Food for search_phrase, in the amount whose kcal match the label, under the product's name. Ask for a photo of the Nutrition Label unless the User already gave its values. For a product logged before as a Stand-in, reuse its label from this conversation or your memory, and ask again otherwise. Estimate the label, with estimated=true, only when the User has no packaging. Show the label values, the logged values and the difference. If the User dislikes the Stand-in, draft again with a different search_phrase.

A Diary Entry item logs a Food Entry from the Food Diary again, under its own name, with its Food, Serving and nutrition, so no catalog search is needed. For "the same as yesterday's breakfast", read that Diary Day with get_diary_day, list its Food Entries with their amounts to the User and ask whether everything was the same, or what to leave out or eat more or less of. Then draft the chosen entries by diary_day and food_entry_id, with metric_amount for a changed amount in grams or ml.

A change item changes or removes a Food Entry already in the Food Diary, by diary_day and food_entry_id: change="remove", or change="edit" with a new metric_amount in grams or ml, a meal on the same Diary Day or a food_entry_name. For "undo that" after a confirm_draft, remove the food_entry_ids it returned; undoing a change is a change back. For any other change, read the Diary Day with get_diary_day first, name the entries to change, and ask when it's unclear which one is meant. The Food or Diary Day of an entry can't change: for "chicken thigh, not breast", remove the entry and add a Food item; for "that was yesterday", remove it and add a Diary Entry item with the same food_entry_id, in one Draft whose diary_day is yesterday. Show each change before and after, and the removal_note when there is one.

A Draft holds at most 20 items: split a larger meal into several Drafts.

Include assumptions about estimated amounts. When the Draft has new items, always ask the User whether the suggested Meal is correct. If previous_day_suggested is true, ask whether to use Snacks on the previous Diary Day instead. meal and diary_day are for new items only. A correction needs a new Draft with the explicit Meal or Diary Day. Nothing is written by this tool; a Draft expires after thirty minutes.

confirm_draftA

Write a Draft to the User's Food Diary: its new Food Entries first, then its changes.

New entries go under the Draft's Meal and Diary Day. A removed entry can't be restored. Call this only after the User explicitly approved this Draft in their latest message. After a correction, draft again and confirm the new Draft instead. Confirm each Draft once: a repeat usually returns the earlier result, but after a server restart it would write the Draft again.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A4.5/5.0

Scored across 5 tools

Disambiguation4/5

The tools mostly have distinct roles: search catalog foods, read one diary day, read period totals, draft changes, and confirm a draft. The main ambiguity is that draft_entries is an umbrella for adding, editing, removing, and re-logging entries, so its name undersells its scope, though it does not directly overlap with another tool.

Naming Consistency5/5

All tool names use snake_case with a predictable verb_noun structure: get_diary_day, get_period_summary, search_foods, draft_entries, confirm_draft. The draft_entries/confirm_draft pair is slightly asymmetric in noun choice, but the overall convention is consistent and readable.

Tool Count5/5

Five tools is a compact, well-scoped set for a food diary logging server, with clear separation between reading, searching, drafting, and confirming. Although draft_entries is dense, the overall count is appropriate and each tool earns its place.

Completeness4/5

The core diary lifecycle is covered: catalog search, daily diary reads, period summaries, drafting new entries and changes, and confirming writes. Minor gaps remain, such as no explicit target management and no multi-day entry-level read beyond period totals.

Maintenance

ActivityMaintained
ResponsivenessNo issues