Food logging MCP: track calories and macros from your AI assistant
A food logging MCP lets Claude or ChatGPT draft meals from your nutrition account and save them only after you confirm. Accuracy, privacy, and Zolt's free tier.
A food logging MCP lets an assistant such as Claude or ChatGPT look up foods in your nutrition account, propose a meal, and save it only after you confirm. The calories and macros come from that account's food database. The assistant's job is to interpret what you said, or what is in a photo, and to show you the match.
Use it when opening a tracker is why meals go missing. Keep the app, a barcode, or a weighed recipe when you already know the exact food. A model still has to guess any portion you leave out.
Zolt's hosted server does this job. On the free tier you can log food, water, and weight, reuse saved foods, and read three months of history, with 30 distinct food resolutions per UTC day. Pro adds analytics, full history, database search, and 3,000 resolutions a day. Browser login (OAuth) is the free path. Manual API keys are Pro-only. Client setup lives on the MCP page, with separate steps for Claude and ChatGPT.
This page is the decision in front of that setup. Product limits below were checked against Zolt's MCP server and the public setup pages on October 21, 2026.
When conversation beats tapping, and when it does not
| The meal in front of you | Better move | Why |
|---|---|---|
| A normal plate you can describe | Tell the assistant, then read the draft | One sentence can resolve several foods |
| The same breakfast most days | Ask it to reuse your recent meal | History already has the foods and the usual serving |
| A packaged snack with a barcode or label | Scan or enter it in the app | The label is a better source than a sentence |
| A recipe you weighed | Log the saved recipe | The grams are already done |
| A chain restaurant on our calculator list | Build the bowl, then log that result | Rice, cheese, and salsa change the total |
| You will not review the draft | Leave it for later or write a rough note | An unreviewed match can be the wrong food, saved cleanly |
Conversation removes search friction. You still have to know what you ate. If you do not have a calorie target yet, the TDEE calculator is a starting estimate. The assistant reads the target on your Zolt account after you set a goal in the app. You can log before that. The day then shows intake, with nothing to compare it to.
People who hate logging for other reasons can compare photo, text, barcode, and message workflows in calorie apps for people who hate logging. iMessage is the path that skips a connector entirely. See tracking calories through iMessage.
What an MCP server is
MCP (Model Context Protocol) is an open-source standard for connecting an AI app to outside tools and data. Anthropic published it in November 2024. The docs compare it to a USB-C port: one way to plug an assistant into other systems (Model Context Protocol, Anthropic's announcement).
Three pieces matter when you are logging lunch:
- The host is the app you are typing in. Zolt documents Claude (claude.ai, the Claude mobile app, Claude Desktop, and Claude Code), ChatGPT on a plan that includes Developer mode, and Cursor.
- The server is the program that holds your nutrition tools. Zolt's is remote. You point the host at
https://mcp.zolthealth.com/mcp. You do not install a second calorie app on your laptop. - A tool is one action the assistant can call: resolve foods for a draft, read today's totals, stage a log, confirm it.
The assistant chooses which tools fit your prompt. MCP does not measure the plate, and it does not make the model a dietitian. It gives the model a way to read and write your account under rules the server enforces. On Zolt, writes are staged. Nothing is stored until you confirm the draft you were shown.
What a nutrition MCP should expose
A useful server covers the whole loop, from "I had this" to "does it fit today?"
| Job | What you should be able to do | On Zolt |
|---|---|---|
| Logging | Turn a description into foods and servings, then save the meal you approved | Free. Draft, then confirm |
| Search and reuse | Match foods you named, including ones you have saved, and repeat a recent meal | Free to resolve and reuse. Open database search is Pro |
| Daily totals | See calories and macros already logged today | Free, inside the three-month window |
| Targets | See the calorie and macro targets, and what is left | Free, once a goal exists |
| TDEE context | Read the adaptive expenditure estimate the target came from, plus weight trend | Pro analytics |
Lookup alone never builds a diary. A write that fires the moment you mention food will save the wrong chicken. Resolve the foods, show every item, write on a second confirmation, and read the day back.
Water and body weight belong in that loop if you want the diary to explain the scale. Workouts and a weekly check-in are the next question, after "log the eggs."
What Zolt's server lets the assistant do
On a free account, signed in with browser OAuth, resolving a meal includes custom foods and recipes you already saved. Each distinct food query counts toward 30 per UTC day. Repeating that same query later in the day does not cost another resolution. A query that matches nothing still counts. Confirming the draft does not use the allowance. Food entries, recent meals, and today's calories, protein, carbs, fat, and fiber are readable inside the three-month window, along with calorie and macro targets, what remains of those targets, and water and body-weight history.
Pro adds the rest of the public tool list: search_foods for browsing the database, longer analytics (averages, adherence, micronutrients), full history, the adaptive TDEE read, workout logging and history, and 3,000 food resolutions a day. The MCP page is the current list. If this article and that page ever diverge, follow the page.
A prompt such as "what did I eat yesterday?" or "what's left today?" fits the free tier. "How were my macros across the last month?" or "what's my TDEE?" calls analytics and needs Pro. If you are on the free tier, the assistant should say the feature is locked rather than invent the number.
Which clients can connect
| Client | What Zolt supports | Plan note |
|---|---|---|
| Claude.ai, Claude mobile, Claude Code | Custom connector or the Claude Code command, then browser login | Zolt free tier works |
| Claude Desktop | Config file plus a manual API key | The key requires Zolt Pro |
| ChatGPT | Developer mode connector | ChatGPT Plus, Team, or Enterprise. The free ChatGPT plan cannot add MCP connectors |
| Cursor | Add from the MCP page, then browser login | Zolt free tier works. The install link does not contain an API key |
Custom GPTs use a different plugin path. Zolt's server is the Developer mode connector, so a GPT Store bot is a separate setup. Install steps on the MCP page name the clients in the table. Use those.
Photos work when the host can see images. You attach the picture in Claude or ChatGPT. That app identifies the foods. Zolt does not run a second image model. It resolves the food names the assistant sends, then waits for the same draft confirmation as a typed meal. Portion error on a photo is still portion error. Treat the picture as a head start, then fix the serving sizes you can see.
Accuracy: the database is only as right as the match
Asking a general model to invent nutrition is a different task from asking it to look a food up.
O'Hara and colleagues gave ChatGPT-4 114 meal photographs from a national dietary survey and compared the answers with the known meals (Nutrients, 2025). The model identified the foods in the photos with 93.0% precision. Meal weight agreed for small portions and disagreed for medium and large ones. For 13 of 16 nutrients, the percentage difference from the known value was greater than 10%.
Fridolfsson and colleagues ran a harder numeric test on 52 standardized food photographs, in three portion sizes, with ChatGPT-4o, Claude 3.5 Sonnet, and Gemini 1.5 Pro (Current Developments in Nutrition, 2025). When the models estimated energy themselves, ChatGPT and Claude each had a mean absolute percentage error of 35.8%. The authors reported that underestimation increased as portions got larger.
Those papers tested models guessing from pictures, with no nutrition-account connection. An MCP link changes the source of the nutrients for whatever food you accept. It does not change the hard part those studies isolated: naming the food and judging the amount.
Read a draft as four checks. Identity: "eggs" can be the right food and still miss the butter, the sauce, or the drink. Amount: "a bowl" is not a serving, so give slices, cups, ounces, grams, or "about half the rice" when you know it. The matched number: once you confirm, the calories and macros are the database values for that food and that serving, including a wrong brand. Anything you never mentioned, including oil and a second coffee, stays at zero until you add it.
Try this on a real breakfast before you trust the habit:
Two eggs, two slices of sourdough, and a flat white.
Check the egg count, whether oil or butter was added, the bread (slices versus a weighed amount), and the milk in the coffee. Then correct it in the same thread:
The coffee was whole milk. Add butter on the toast.
Confirm only after the revised draft shows both changes, on the right meal and the right date. That example is a script for the review, not a promise of a calorie total. Branded foods and restaurant items move the result. If the meal is from a chain we publish, build it in the restaurant calculators and log that version. For a barcode, a label, or a recipe you cook on repeat, the app paths in logging food in Zolt are the tighter record.
Privacy: what the assistant can reach
The server answers for the Zolt account you authorized. A connector on another login cannot see your diary.
- Writes wait. The assistant shows a draft, then confirms in a later step. Walking away does not silently file the meal. Pending confirmations expire after ten minutes and cannot be reused.
- Reads follow the prompt, and the model picks the tools. "Log lunch" should stay on the meal. "How am I doing?" can pull several reads: today's totals, weight, and, on Pro, trends. Read what it quotes back.
- Health data is a separate consent. Apple Health and Google Health aggregates (sleep, activity, recovery, workouts from those sources) are available to the assistant only on Pro, and only after you have allowed AI processing for that source. Without that consent, the health tools refuse. Zolt's learned calorie target does not need this feed.
- Keys and connectors can be removed. Disconnect Zolt in the assistant's connector settings. If you created a manual API key, revoke it in the Zolt app under Settings. Keys are stored hashed. The privacy policy is the standing notice for account data.
The photo stays in the assistant you attached it to. That app has its own retention rules. Zolt's server receives the food queries, not an image-analysis job of its own.
How this sits next to an Apple Watch
The watch is a good record of the session, heart rate, and whether this week was busier than last week. The calorie number on the watch is a weak figure to add to dinner. Heart-rate error in recent reviews stayed modest. Energy-expenditure error did not. The details are in how accurate Apple Watch calories are and whether you should eat back exercise calories.
Zolt's adaptive TDEE is estimated from logged intake and the weight trend. The watch calorie estimate does not drive that update, and active calories do not become a one-for-one bump in the target. How Zolt learns TDEE and what active calories do to the target are the product pages for that split.
The assistant, iMessage, and the app write the same diary. Confirmed meals give the expenditure estimate an intake record. Blank dinners leave that record empty, even on a week when the watch logged every run. You can log this way with no watch on your wrist.
On Pro, after health consent, you can ask about sleep, activity, or recovery beside intake. That is context for the day, not a second metabolism calculation. Strength workouts logged through the server are Zolt workouts, separate from an Apple Health import.
A short way to try it
- Open the MCP page and connect the client you already use. Paste
https://mcp.zolthealth.com/mcponly where that page tells you to. - Use Claude on the web, Claude's mobile app, or Claude Code if you want the free Zolt tier. Use ChatGPT only if you have Developer mode. Use Cursor's button on the same page if that is your editor.
- Describe one meal with a detail that changes the entry: milk type, cooking fat, or how much.
- Read foods, servings, meal, and date. Correct in the thread. Confirm when the draft matches what you had.
- Ask what is left today. If you have no goal yet, set one in the app before you expect a target in the answer.
Step-by-step setup is in how to log food with Claude and how to log food with ChatGPT. If a day is only partly logged, follow handling incomplete days so a missing dinner is not treated as a true zero.
Common questions
What is a food logging MCP?
It is a Model Context Protocol server that lets an AI assistant search or resolve foods, draft a meal, and write it to a nutrition account after you confirm. Zolt's server also reads daily totals and targets on the free tier, and adaptive TDEE on Pro. The assistant is the interface. The account remains the diary.
Is Zolt's food logging MCP free?
Food, water, and weight logging are free with a Zolt account, along with saved-food reuse, three months of history, and 30 distinct food resolutions per UTC day. Pro adds analytics, full history, database search, and 3,000 resolutions a day. Claude on the web, Claude's mobile app, Claude Code, and Cursor can use the free tier through browser login. Claude Desktop needs a Pro API key. ChatGPT's own free plan cannot enable Developer mode, so that host requires ChatGPT Plus, Team, or Enterprise even though Zolt's free tier is enough on the Zolt side.
Does the meal save as soon as I describe it?
No. The assistant should show the foods and servings and wait for a confirmation before anything is written. If you are unsure, check the diary in the app before you describe the meal again. Sending it twice can create two entries once you confirm twice.
Will the calories be exact once a database is connected?
They will be the database values for the foods and servings you confirm. They will be wrong if the match, the brand, or the portion is wrong, and they will miss anything you leave out. Photo studies found large energy error when models guessed without a database, especially as portions grew. Review the draft the same way you would review a manual search.
Do I need an Apple Watch?
No. Adaptive TDEE uses intake and weight. The watch can add activity, sleep, and recovery context, and on Pro the assistant can read those aggregates only after you consent. Watch calorie burn is not the number Zolt copies into your target.
Can the assistant see my whole account?
It can call the tools your plan allows, for your account only, when the prompt leads it to. A narrow logging request should not need your workout history. A broad "how am I doing?" might. Health records stay unavailable until you grant AI-processing consent. Disconnect the connector, or revoke an API key in Settings, to end that access.
Or describe the meal in Messages
If you do not want to connect Claude or ChatGPT, text the meal to Zolt, review the proposal, and confirm it. The saved entry lands in the same diary.
Related articles
Can you track calories through iMessage?
See how messaging meal proposals, corrections, and confirmations connect to your Zolt diary.
Best calorie apps for people who hate logging
Find a logging workflow that survives an ordinary busy day, including corrections and repeat meals.
How accurate are Apple Watch calories?
Heart rate on an Apple Watch usually stays close to a lab reading. Calorie burn does not, and one lifting comparison was about 158 kcal high.