Deploy Your Own Food Tracking MCP in Minutes

I stopped logging meals in MyFitnessPal, so I built an MCP that lets me tell Claude what I ate, and turned it into a template you can deploy yourself.


My friend Jordan built a diet tracker where he tells Claude what he ate and Claude writes it to a Google Sheet. I’d quit MyFitnessPal after about a year of typing in every meal, so I wanted something I could just talk to. I’d never built an MCP before, so I built one: a Cloudflare Worker that looks up foods in USDA FoodData Central and Open Food Facts and saves my logs to D1.

Then I turned it into a template so you can run your own copy.

Get the template: github.com/redSlug/healthy-mcp-template

Telling Claude on my phone that I am eating three Whoppers candies, and Claude logging them to my food tracker
Telling Claude on my phone that I am eating three Whoppers candies, and Claude logging them to my food tracker

What you get

  • Log meals by talking, typing or sharing pictures with Claude (or your fave MCP client), in the middle of any conversation
  • Nutrition data from free food databases (USDA FoodData Central and Open Food Facts)
  • Your logs stored in your own Cloudflare D1 database, not someone else’s app
  • Free to run: it currently fits in Cloudflare’s free tier, D1 included, and the food databases are free
  • Code you can change: edit the migrations, add features, redeploy

Set it up

The steps are in the healthy-mcp-template README.

Then say something like “I had oatmeal with blueberries for breakfast” and it’s logged.

How it works

How the food tracking MCP fits togetherYou talk to Claude or another LLM client, which calls the MCP server running as a Cloudflare Worker in your own account, after signing in with GitHub. The Worker stores your logs in D1, keeps sign-in grants in KV, and looks up foods from USDA and Open Food Facts. GitHub Actions deploys the Worker but never serves requests.

MCP over HTTPS

OAuth token

find foods

first sign-in only

test, create, migrate, deploy

You

voice or chat

Claude or your fave LLM

MCP connector

Worker /mcp

your Cloudflare account

D1

your data

KV

sign-in grants

USDA and

Open Food Facts

GitHub

identity only

GitHub Actions

The MCP server runs on a Cloudflare Worker. Claude calls it to search foods and save logs, and the Worker stores your logs in D1.

Things I learned

  • Approximate data is fine — I spent about half a day architecting around FatSecret, which needs a dedicated IP address and only lets you cache its data for 24 hours. Then I realized USDA FoodData Central and Open Food Facts were plenty, and better for running reports across many days.
  • MCP clients send JSON but expect text back — that surprised me, since this was my first MCP.

Try it

Deploy it, log a meal, and tell me how it goes. Issues and pull requests are welcome: healthy-mcp-template on GitHub

Thank you

  • Jordan, for the idea of tracking food through Claude
  • Frank, for the idea of having a different Cloudflare account for each application