Local-first nutrition MCP for AI agents: food, barcode, photo, intake, hydration, goals.
Runs on your machine from its package; the steps are below.

At most: creates or changes data: records, files, settings.
Odel charges nothing per call. The publisher may charge for its own service.
Runs locally over stdio
This server isn't hosted — your MCP client launches it from a package registry. Use one of the commands below, or drop the config into your client (e.g. Claude Desktop).
Run
npx -y wellness-nourish
MCP client config
{
"mcpServers": {
"wellness-nourish": {
"command": "npx",
"args": [
"-y",
"wellness-nourish"
]
}
}
}
📈 Published on npm and used by AI agents and MCP clients — see the live download badge above for current numbers.
If Nourish helps your agent, a ⭐ on this repo makes it easier for other AI builders to find.
⚡ One-command install — pick your runtime:
- Delx Wellness for Hermes:
npx -y delx-wellness-hermes setup- Delx Wellness for OpenClaw:
npx -y delx-wellness-openclaw setupBoth preconfigure this connector and the full Delx Wellness stack into a dedicated profile. Or wire it standalone into Claude Desktop / Cursor / ChatGPT Desktop — see the install section below.
Want runnable agent examples? Use the Delx Wellness hub for prompt packs, MCP client configs and local-first workflow templates.
What's new in 0.7.1: Offline fixture demo works from the published npm package (fixtures shipped + path resolved from package root). 0.7.0: Brazilian TACO 4 meal estimator for pt-BR foods (cafezinho, feijão, concha, churrasco-style meals) plus Smithery install. Offline demo:
NOURISH_FIXTURE_MODE=1 npx -y wellness-nourish search banana. Notes: CHANGELOG.md · eval:docs/evals/pt-br-meal-estimator.json(52 cases).
Public proof: Nourish is tracked in the Delx Open Source Growth Snapshot alongside downloads, stars and next-action priorities. If this saves you setup time, star this repo so other agent builders can find the local-first nutrition path faster.
Default is stdio. Optional Streamable HTTP — no session id, JSON responses, loopback only:
npx -y wellness-nourish --http
# GET http://127.0.0.1:3000/health
# POST http://127.0.0.1:3000/mcp (sessionless)
Env: NOURISH_MCP_HOST, NOURISH_MCP_PORT, NOURISH_MCP_TRANSPORT=http.
Local-first nutrition MCP for AI agents — food search, barcode lookup, photo-assisted meal estimation, intake logging, hydration, goals and coach-style workflows. No OAuth, no hosted account.
npx -y wellness-nourish setup --client claudenpx -y wellness-nourish@0.8.0 doctor
npx -y wellness-nourish@0.8.0 search banana
npx -y wellness-nourish@0.8.0 barcode 0000000000000
npx -y wellness-nourish@0.8.0 log --preview "2 ovos, banana e café preto"
doctor checks readiness, search/barcode hit the food providers, and log --preview estimates a meal locally without writing anything.
| Action | Link |
|---|---|
| Star if it earned it | stargazers |
| Docs GFI — first meal in 2 minutes | #25 |
| File a real bug / pt-BR food miss | issues |
| Full wellness hub | delx-wellness |
NOURISH_FIXTURE_MODE=1 serves the bundled fixtures/ instead of calling USDA or Open Food Facts, so you can see the exact shape of every response with zero network access or keys:
$ NOURISH_FIXTURE_MODE=1 wellness-nourish search banana
Bananas, raw usda 89 kcal/100g
BANANA usda 312 kcal/100g
Three copy-paste prompts, all backed by existing tools:
nourish_estimate_mealnourish_lookup_barcodenourish_daily_coach / nourish_suggest_next_mealMutating tools (log intake, water, goals, clear-day) never run without explicit user save intent — they return USER_ACTION_REQUIRED until the agent passes explicit_user_intent: true.
Nourish exposes food search, barcode lookup (text + image), photo-assisted meal estimation, intake logging, hydration, goals, exports, daily/weekly summaries, personal meal memory, and coach-style workflows over stdio (default) or Streamable HTTP (POST /mcp).
docs/cli.mddocs/telegram.mddocs/providers.mddocs/evals/pt-br-meal-estimator.jsondocs/telegram-demo-transcript.jsonAgents should route Telegram/Hermes/OpenClaw food photos by the strongest signal they can extract:
nourish_lookup_barcode_image.nourish_analyze_food_image with barcode_observation plus any OCR/meal clues.nourish_analyze_food_image with product_name and nutrition_label_text.nourish_analyze_food_image with detected_items or image_description.Image tools accept exactly one of these input forms:
{ "image_path": "/tmp/telegram-food-photo.jpg" }
{ "image_base64": "<base64 image bytes>", "image_mime_type": "image/jpeg" }
{ "image_data_uri": "data:image/jpeg;base64,<base64 image bytes>" }
If barcode decoding fails, the response includes fallback and next_actions so the agent can ask the user for the typed digits, OCR the nutrition label, or route the photo as a meal without silently inventing a food.
The capture above is generated from a real MCP run in fixture mode with a temporary local directory:
npm run demo:capture
The committed transcript proves the exact tool sequence: nourish_estimate_meal → user confirmation → nourish_log_intake → nourish_daily_summary.
Intake, hydration and goals are stored locally under ~/.wellness-nourish/ (override with NOURISH_LOCAL_DIR). The connector does not require hosted accounts and does not send local intake logs to Delx Wellness. Provider lookups may contact USDA FoodData Central or Open Food Facts — unless NOURISH_FIXTURE_MODE=1 keeps everything offline against the bundled fixtures.
Agents should never ask users to paste API keys, tokens, raw health exports, or private food logs into chat — configure secrets through environment variables or local files. Full detail in docs/providers.md.
Watch Nourish work alongside the other connectors in one reproducible run:
npx -y delx-living-body demo
Anchor question: "Should I train hard today?" — the demo combines wearable recovery signals with nutrition context to answer it. This is the shared, reproducible proof for the whole Delx Wellness stack.
The full Delx Wellness connector library:
| Provider | Package | Repo |
|---|---|---|
| WHOOP | whoop-mcp-unofficial | whoop-mcp |
| Oura | oura-mcp-unofficial | ouramcp |
| Garmin | garmin-mcp-unofficial | garmin-mcp |
| Strava | strava-mcp-unofficial | strava-mcp |
| Fitbit | fitbit-mcp-unofficial | fitbitmcp |
| Google Health | google-health-mcp-unofficial | google-health-mcp |
| Withings | withings-mcp-unofficial | withingsmcp |
| Apple Health | apple-health-mcp-unofficial | apple-health-mcp |
| Samsung Health | samsung-health-mcp-unofficial | samsung-health-mcp |
| Polar | polar-mcp-unofficial | polarmcp |
| Nourish (nutrition) | wellness-nourish | wellness-nourish |
One-command setup for Hermes — preconfigures every connector above plus wellness skills + onboarding: delx-wellness-hermes.
Nutrition estimates are approximate and intended for personal tracking and agent workflow context. They are not diagnosis, treatment, or medical advice. Confirm important nutrition decisions with a qualified professional.
Unofficial. Not affiliated with, endorsed by, or sponsored by USDA, Open Food Facts, or any third party. All trademarks belong to their respective owners.
First meal in 2 minutes: docs/first-meal-2-minutes.md
Wearable context fields (no invention): docs/wearable-context-schema.md
Same package, two doors. MCP registers tools on stdio/HTTP. The skill can drive the same tools through the CLI when the client has no MCP:
npx -y wellness-nourish call nourish_connection_status --json '{}'
Copy skill/SKILL.md into your agent skills dir.