Local-first nutrition MCP for AI agents: food, barcode, photo, intake, hydration, goals.
⚡ 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.
Source-derived launch command. Check the maintainer’s required arguments and credentials before running:
npx -y wellness-nourishMerge this template into ~/Library/Application Support/Claude/claude_desktop_config.json. Keep existing servers. Add any arguments, credentials, and permissions required by the maintainer; this template has not been install-tested.
{
"mcpServers": {
"io-github-davidmosiah-wellness-nourish": {
"command": "npx",
"args": [
"-y",
"wellness-nourish"
]
}
}
}Restart Claude Desktop completely for changes to take effect. Confirm the server appears connected in the client’s tool list, then try a read-only example from its documentation.
Claude Desktop setup referencewellness-nourishnpmio.github.davidmosiah/wellness-nourish works with any MCP-compatible client. Copy the config snippet from the Configuration section above and add it to the file shown for your client, then restart the application.
~/Library/Application Support/Claude/claude_desktop_config.jsonRestart Claude Desktop completely for changes to take effect.~/.cursor/mcp.jsonRestart Cursor for changes to take effect..vscode/mcp.jsonReload VS Code window for changes to take effect.~/.codeium/windsurf/mcp_config.jsonRestart Windsurf for changes to take effect..mcp.jsonSave at the project root, then start Claude Code in that project and review the MCP server approval prompt. Keep real credentials out of shared files.