About Nutrition MCP
Nutrition MCP is an MCP server in the Healthcare category: uSDA FoodData Central nutrition data: search foods, compare macros, and analyze meals.
Install
git clone https://github.com/akutishevsky/nutrition-mcpThis server has no ConduID identity, so agent calls to it are not receipted. Pin the version you install and review the source before granting it credentials.
Tools (36)
bulk_import_mealsWrite up to 50 imported rows per call — each row validated, duplicates skipped so a re-send is safe
Parameters not published.
delete_accountPermanently delete account and all associated data
Parameters not published.
delete_mealDelete a meal by ID
Parameters not published.
delete_waterDelete a water log entry by ID
Parameters not published.
delete_weightDelete a weight entry by ID
Parameters not published.
export_all_dataExport every table — meals, water, weight, goals, profile — as one ZIP of CSVs plus a README, and return a 60-minute download link
Parameters not published.
get_current_timeGet the current date and time in the user's timezone, plus the UTC instant — for hosts with no clock in context
Parameters not published.
get_goal_progressGet intake vs. targets and limits for a given day (default: today), plus latest weight vs. target
Parameters not published.
get_meal_patternsPre-aggregated behavioural patterns (breakfast effect, late dinner, weekend vs weekday, outliers)
Parameters not published.
get_meals_by_dateGet meals for a specific date (YYYY-MM-DD)
Parameters not published.
Show all 36 tools
get_meals_by_date_rangeGet meals between two dates (inclusive)
Parameters not published.
get_meals_todayGet all meals logged today
Parameters not published.
get_nutrition_goalsGet the current daily targets and limits
Parameters not published.
get_nutrition_summaryDaily nutrition totals + goal progress for a date range
Parameters not published.
get_profileGet timezone (+ local date/time), widget language, weight unit, widget display and alcohol tracking in one call
Parameters not published.
get_trends7/14/30-day averages, std dev, streaks, day-of-week, best/worst day
Parameters not published.
get_water_by_dateGet water intake for a specific date
Parameters not published.
get_water_todayGet today's water intake total and entries
Parameters not published.
get_weight_by_dateGet weight entries for a specific date
Parameters not published.
get_weight_by_date_rangeGet weight entries between two dates (inclusive), grouped by day
Parameters not published.
get_weight_todayGet today's weight entries
Parameters not published.
get_weight_trendsWeight trend: latest, overall change, 7/14/30-day moving averages, min/max, and goal progress
Parameters not published.
log_mealLog a meal with description, type, calories, macros, fiber, total sugar, alcohol, caffeine (mg), notes — from text or a photo of your plate
Parameters not published.
log_waterLog a hydration entry in milliliters
Parameters not published.
log_weightLog a body-weight measurement in kg or lb (converted and stored server-side)
Parameters not published.
lookup_barcodeLook up a packaged product's label nutrition by barcode via Open Food Facts (read from a photo or typed)
Parameters not published.
search_mealsSearch past meals by keyword, grouped into recurring variations (counts, last logged, typical macros)
Parameters not published.
set_alcohol_trackingTurn alcohol tracking on or off (off by default) and choose US standard drinks or UK units; turning it off hides alcohol rather than deleting it
Parameters not published.
set_languageSet the UI language for in-chat widgets (dashboards, charts) — not the language the AI replies in
Parameters not published.
set_nutrition_goalsSet daily calorie, macro, fiber and water targets to reach, sugar/alcohol/caffeine limits to stay under, plus an optional target weight
Parameters not published.
set_timezoneSet the user's IANA timezone (e.g. `America/Los_Angeles`)
Parameters not published.
set_weight_unitSet the preferred weight unit (`kg` or `lb`; null to clear)
Parameters not published.
set_widget_displayEnable or disable the in-chat visual widgets (dashboards, rings, charts); enabled by default
Parameters not published.
start_meal_importOpen the in-chat CSV importer: pick an export from another app, map its columns, preview, confirm
Parameters not published.
update_mealUpdate any fields of an existing meal
Parameters not published.
update_weightUpdate an existing weight entry
Parameters not published.
Ask AI
Ask AI about Nutrition MCP
Powered by Claude · Grounded in docs
Security checks
- ✓README presentThe repository ships documentation.
5 checks have not been run yet.
README
Nutrition MCP
A remote MCP server for personal nutrition tracking — log meals, track macros, and review nutrition history through conversation.
Quick Start
Already hosted and ready to use — just connect it to your MCP client:
https://nutrition-mcp.com/mcp
On Claude.ai: Customize → Connectors → + → Add custom connector → paste the URL → Connect
On first connect you'll be asked to register with an email and password. Your data persists across reconnections.
Demo
Read the story behind it: How I Replaced MyFitnessPal and Other Apps with a Single MCP Server
Tech Stack
- Bun — runtime and package manager
- Hono — HTTP framework
- MCP SDK — Model Context Protocol over Streamable HTTP
- Supabase — PostgreSQL database + user authentication
- OAuth 2.0 — authentication for Claude.ai connectors
MCP Tools
| Tool | Description |
|---|---|
log_meal |
Log a meal with description, type, calories, macros, notes |
get_meals_today |
Get all meals logged today |
get_meals_by_date |
Get meals for a specific date (YYYY-MM-DD) |
get_meals_by_date_range |
Get meals between two dates (inclusive) |
get_nutrition_summary |
Daily nutrition totals + goal progress for a date range |
update_meal |
Update any fields of an existing meal |
delete_meal |
Delete a meal by ID |
set_nutrition_goals |
Set daily calorie, macro, and water targets |
get_nutrition_goals |
Get the current daily targets |
get_goal_progress |
Get intake vs. targets for a given day (default: today) |
log_water |
Log a hydration entry in milliliters |
get_water_today |
Get today's water intake total and entries |
get_water_by_date |
Get water intake for a specific date |
delete_water |
Delete a water log entry by ID |
get_trends |
7/14/30-day averages, std dev, streaks, day-of-week, best/worst day |
get_meal_patterns |
Pre-aggregated behavioural patterns (breakfast effect, late dinner, weekend vs weekday, outliers) |
set_timezone |
Set the user's IANA timezone (e.g. America/Los_Angeles) |
get_timezone |
Get the user's configured timezone |
delete_account |
Permanently delete account and all associated data |
MCP Resources
| URI | Description |
|---|---|
nutrition://weekly-summary |
Rolling 7-day digest (averages vs targets, best/roughest day) for proactive pulls |
Self-hosting
1. Supabase setup
-
Create a Supabase project.
-
Enable Email Auth (Authentication → Providers → Email) and disable email confirmation.
-
Apply the schema. The full schema lives in
supabase/migrations/. With the Supabase CLI:supabase link --project-ref <your-project-ref> supabase db pushThis creates every table, index, RLS policy, and foreign key the app needs. No local Postgres is involved — migrations run against your hosted project.
-
Copy the service role key from Project Settings → API and use it as
SUPABASE_SECRET_KEY.
2. Environment variables
| Variable | Description |
|---|---|
SUPABASE_URL |
Your Supabase project URL |
SUPABASE_SECRET_KEY |
Supabase service role key (bypasses RLS) |
OAUTH_CLIENT_ID |
Random string for OAuth client identification |
OAUTH_CLIENT_SECRET |
Random string for OAuth client authentication |
PORT |
Server port (default: 8080) |
Note: The HTML files in
public/include a Google Analytics tag (G-1K4HRB2R8X). If you're self-hosting, remove or replace the gtag snippet inpublic/index.html,public/login.html, andpublic/privacy.html.
Generate OAuth credentials:
openssl rand -hex 16 # use as OAUTH_CLIENT_ID
openssl rand -hex 32 # use as OAUTH_CLIENT_SECRET
Development
bun install
cp .env.example .env # fill in your credentials
bun run dev # starts with hot reload on http://localhost:8080
Connect to Claude.ai
- Open Claude.ai and click Customize
- Click Connectors, then the + button
- Click Add custom connector
- Fill in:
- Name: Nutrition Tracker
- Remote MCP Server URL:
https://nutrition-mcp.com/mcp
- Click Connect — sign in or register when prompted
- After signing in, Claude can use your nutrition tools. If you reconnect later, sign in with the same email and password to keep your data.
API Endpoints
| Endpoint | Description |
|---|---|
GET /health |
Health check |
GET /.well-known/oauth-authorization-server |
OAuth metadata discovery |
POST /register |
Dynamic client registration |
GET /authorize |
OAuth authorization (shows login page) |
POST /approve |
Login/register handler |
POST /token |
Token exchange |
GET /favicon.ico |
Server icon |
ALL /mcp |
MCP endpoint (authenticated) |
Deploy
The project includes a Dockerfile for container-based deployment.
- Push your repo to a hosting provider (e.g. DigitalOcean App Platform)
- Set the environment variables listed above
- The app auto-detects the Dockerfile and deploys on port
8080 - Point your domain to the deployed URL
License
README copy captured when this server was indexed; it may lag the repository. The original is authoritative.
