Indian-accurate nutrition logging for your AI: IFCT 2017 + USDA, by text or photo.
Your AI assistant can finally count Indian food calories correctly.
An MCP server that lets you log meals through Claude (and soon ChatGPT) in plain language: "2 rotis and a katori of dal", or just a photo of your plate. Calories and macros come from India's official food composition data (IFCT 2017, National Institute of Nutrition) plus USDA for everything else, not from US-centric databases that think a roti is a tortilla.
Every popular calorie database is built on USDA data. It is inaccurate for home-cooked Indian food: wrong oils, wrong preparations, no katori, no idli. The one app with a great Indian database keeps it locked behind a subscription with no API. Meanwhile the Indian government published the real data. This project wraps it for the AI you already talk to, and gives that AI memory of what you actually ate.
fetch_image).get_history returns your real intake so the model can
coach you ("your protein is low on training days") against data, not vibes.~/.nutrition-mcp/meals.csv. No account, no cloud, no telemetry.npm install -g indian-food-nutrition-mcp
Add to claude_desktop_config.json (Settings → Developer → Edit Config):
{
"mcpServers": {
"nutrition": {
"command": "indian-food-nutrition-mcp"
}
}
}
Restart Claude Desktop, then just talk:
"Log breakfast: 3 idlis and a small bowl of sambar" "How much protein have I had today?" "Here's a photo of my lunch, log it" "Look at my last week and tell me where my diet is failing"
| Tool | What it does |
|---|---|
search_food | Search 8,300+ foods (IFCT + USDA), per-100g cal/protein/carb/fat/fiber |
log_meal | Log items with mandatory qty + household unit; DB-derived macros |
get_day | A day's log + totals |
get_history | Per-day totals over a range, the AI-coaching context block |
edit_entry / delete_entry | Fix mistakes so history stays honest |
fetch_image | Pull a food photo from a URL so the model can see and log it |
Code is AGPL-3.0-or-later. Bundled data: IFCT 2017 + USDA SR Legacy (public
domain). The INDB cooked-dish dataset (dal, dosa, idli as dishes with serving
sizes) is supported by the code but not redistributed until its authors grant
a license; generate it locally for personal use with npm run build:indb.
Full provenance: DATA_SOURCES.md.
This local server works with Claude Desktop today. A hosted version, which works as a ChatGPT connector and syncs across devices, is coming. Open an issue titled "hosted" or watch releases to get in early.
~/.nutrition-mcp/nutrition.db (SQLite, WAL) + ~/.nutrition-mcp/meals.csv
(auto-maintained mirror). Override with NUTRITION_DB_PATH / NUTRITION_CSV_PATH.
@nodef/ifct2017 package, AGPL)Source-derived launch command. Check the maintainer’s required arguments and credentials before running:
npx -y indian-food-nutrition-mcpMerge 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-krishnabhat-indian-food-nutrition-mcp": {
"command": "npx",
"args": [
"-y",
"indian-food-nutrition-mcp"
]
}
}
}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 referenceio.github.krishnabhat/indian-food-nutrition-mcp 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.