The Nutrition connector answers food and meal questions from a local copy of USDA FoodData Central, about 600,000 foods with macro and micronutrient data. It is read-only and has no account or sign-in.
Server URL: https://docuslide-mcp-production.up.railway.app/mcp (streamable HTTP).
claude mcp add --transport http nutrition https://docuslide-mcp-production.up.railway.app/mcpurl is the server URL.Every tool reads data only, except the three profile tools, which change a profile held in memory for the current conversation. Weights are in grams and nutrients are scaled to the requested serving.
| Tool | What it returns | Parameters |
|---|---|---|
search_foods | Foods matching a name, with fdc_id, dataset, macros per 100 g, and the branded ingredient statement. | query, limit (1-50, default 10), data_type, offset |
get_food_nutrition | Full nutrients for one food at a serving weight, an assessment against daily targets, and common portion sizes. | fdc_id, grams (default 100) |
compare_foods | Up to 10 foods side by side, with the leader for each nutrient. | fdc_ids (1-10), grams |
analyze_meal | Totals for up to 25 foods, with shortfalls and exceeded limits. | items: list of fdc_id and grams |
find_foods_by_nutrient | Lab-measured foods ranked by one nutrient per 100 g. Branded products are included only when data_type is Branded, and amounts that cannot physically fit in 100 g are left out. |
nutrient, limit (1-100, default 20), data_type, min_amount, category, offset |
resolve_ingredients | Ingredient names matched to foods and portions such as 1 cup converted to grams. | items: list of food or fdc_id, with portion or grams (up to 400) |
analyze_recipe | One dish totaled from its ingredients and reported per serving. | name, ingredients, servings (default 1) |
analyze_plan | A meal plan of up to 14 days assessed as a daily average, with a shopping list. | days, include_shopping_list (default true), detail (default false) |
set_profile | Stores age and sex for the conversation so assessments use U.S. dietary reference intakes. | age, sex, life_stage, weight_kg, height_cm, activity |
get_profile | The profile in effect and its daily targets. | none |
clear_profile | Deletes the conversation's profile. | none |
database_status | Whether the food database is built and how many foods it holds. | none |
list_retailers | Configured retailers and what each supports. All are product-link only. | none |
prepare_retailer_handoff | Exact product links for the user to open on a retailer's site. No cart is changed and nothing is bought. | retailer_id, original_request, items (1-50), store_id |
Pagination. search_foods and
find_foods_by_nutrient return a pagination object with
offset, limit, returned, and
next_offset. Passing next_offset back as
offset returns the next page; it is null on the last page.
Assessments. Without a profile, totals are compared with the
FDA food-label daily values (basis: fda_label_dv). With one, they
are compared with the U.S. dietary reference intake for that age and sex
(basis: personal_dri). not_reported nutrients are
unknown, not zero.
search_foods returns valid ids.unresolved. That food has
no matching portion. A size word such as medium uses USDA's recorded medium
weight, or the weight of one whole item when USDA did not record a size, as
with eggplant. The entry lists available_portions, and a weight
in grams always works.limit above 50.database_status reports
whether the database is built.Food lookups are answered from the local database and are not sent to USDA. A profile stays in process memory for one conversation and is never written to disk. There are no accounts. The full privacy policy covers what the host logs.
Email vangilder.andrew@gmail.com or open an issue on GitHub. The support page has details.
Results are comparisons with published reference values, not a diagnosis, a prescription, or medical advice. This is an independent project, not produced or endorsed by the U.S. Department of Agriculture.