FoundationFoods MCP Server provides access to the USDA Foundation Foods dataset via an MCP server with support for both stdio (Claude Desktop) and HTTP modes.
Foundation Foods MCP server demonstrates solid tool definition quality with well-structured schemas, clear naming conventions, and comprehensive parameter validation. All three tools follow a verb_noun pattern (search_*) with appropriate input constraints. However, descriptions are moderately detailed but lack depth on error handling, use cases, and recovery guidance. Output schemas are properly typed but response documentation in code comments is minimal. Tool composition is reasonable but shows some redundancy, three tools perform nearly identical searches with only nutrient-inclusion varying, which could confuse LLM tool selection.
Search USDA foundation foods by name and return simplified nutrient information. Returns only essential nutrient data (name, amount, unit) for each food match. This tool is only meant to be used for generic product searches like 'milk', 'eggs', 'Cheese, cheddar', 'Broccoli, raw', etc.
Search USDA foundation foods by name and return simplified nutrient information with a fixed set of default nutrients. Returns only essential nutrient data (name, amount, unit) for each food match using a predefined set of nutrients that cannot be customized. This tool is only meant to be used for generic product searches like 'milk', 'eggs', 'Cheese, cheddar', 'Broccoli, raw', etc.
Search USDA foundation foods by name. This tool is only meant to be used for generic product searches like 'milk', 'eggs', 'Cheese, cheddar', 'Broccoli, raw', etc.
Three near-identical search tools create LLM selection confusion. All three accept 'name' and 'limit' with the same constraints; only the nutrient-inclusion behavior differs. The naming and descriptions do not clearly disambiguate WHEN to choose tool 1 vs 2 vs 3.
Default nutrient list not enumerated. Tools refer to 'DefaultNutrients' but no public documentation states which nutrients are included. LLM cannot predict output without explicit enumeration or discovery.
Error handling and recovery guidance missing. No descriptions clarify what happens when no foods match the search, when limit exceeds 10, or when an invalid nutrient name is provided.
Inferred effective spec: 2026-07-28+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 63 | 2026-07-28+ | v2 |
| 2026-03-09 | D | 50 | - | v1 |
No output schema documentation in visible code. While code references 'query.SearchProductsResponse' and 'query.SimplifiedNutrientResponse', the actual response structure (field names, types, required fields) is not shown. LLM cannot infer chaining opportunities.
Naming uses 'and' in two tools ('search_and_return_nutrients'). This signals multiple responsibilities and violates single-action principle.