MCP server for food tracking and calorie logging using USDA FoodData Central
Food Tracker MCP has clear, well-structured tool definitions with consistent naming (verb_noun pattern) and reasonable descriptions (avg ~120 chars). All 6 tools have input schemas with type definitions and parameter descriptions. However, output schemas are completely undocumented, LLMs cannot predict what fields to expect from responses, breaking downstream tool chaining. Error handling is absent; no guidance on recovery or retryability. Parameter descriptions lack constraints (e.g., date format validation, numeric ranges). The log_food tool accepts optional nutrition fields but doesn't validate that at least one is provided, risking incomplete logging. No pagination support despite potential for large result sets (get_daily_log, get_summary). Schemas are present but minimal, missing field-level documentation and return type specifications.
Delete a food log entry by its ID.
Get all food entries for a specific day with totals and comparison to goals.
Get nutrition summary and averages for a date range or period.
Log a food entry to your daily food diary. Include nutrition info from search or estimate.
Search the USDA FoodData Central database for foods. Returns nutrition information per 100g serving.
Set your daily nutrition goals for calories and macros.
Output schemas completely undocumented. LLMs cannot predict response structure, field names, or types. Breaks tool chaining and forces agents to guess at downstream parameter mappings.
No error handling or recovery guidance. Errors return raw exceptions without actionable next steps. LLMs cannot distinguish retryable failures from user-fixable issues.
Parameter constraints missing. Date format (YYYY-MM-DD) stated in description but not enforced via regex or format constraint. Numeric ranges (calories, protein, etc.) unbounded, LLMs could pass negative or absurdly large values.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 57 | 2026-07-28+ | v2 |
log_food accepts optional nutrition fields (protein_g, carbs_g, fat_g, fiber_g) but does not validate that at least one is provided. Agents could log entries with only calories, producing incomplete nutrition records.
No pagination support. get_daily_log and get_summary could return hundreds of entries without limit or cursor. Large result sets waste tokens and risk context window exhaustion.