An MCP server for managing calorie tracking, food entries, user profiles, and nutritional data with role-based authentication
The server demonstrates solid tool definition practices with complete schemas, consistent naming conventions, and clear descriptions for most tools. All 9 tools are properly registered with Zod schemas and input validation. Naming follows verb_noun patterns (list_entries, add_entry, update_entry, delete_entry, register_user, revoke_user, get_profile, update_profile, get_profile_history). Descriptions range from 42-89 chars, generally adequate but somewhat brief. A primary weakness is the absence of output schema documentation, while input schemas are explicit via Zod, no tool documents what fields agents should expect in responses. Additionally, admin-gated tools (register_user, revoke_user) lack clear permission-checking documentation in descriptions, and error handling recovery guidance is absent from descriptions.
Add a new food entry to the calorie tracker
Delete a food entry
Get current user profile with calculated BMR/TDEE metrics
Get historical profile tracking data with optional date filtering
List food entries for a specific date with pagination. Returns daily calorie intake and nutritional data.
Register a new user (admin only)
No output schemas documented for any tool. Agents cannot know what fields to expect in responses, forcing them to infer structure or make downstream assumptions that may fail.
Admin-gated tools (register_user, revoke_user) lack permission-checking documentation. Descriptions do not state what happens if a non-admin calls them or guide recovery.
No error handling guidance in tool descriptions. Tools lack recovery hints ('If user not found, try search_users()' or 'Invalid entry_id format, use list_entries first').
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-21 | C | 63 | 2026-07-28+ | v2 |
| 2026-03-09 | D | 56 | - | v1 |
Revoke a user (admin only)
Update an existing food entry
Update user profile information and tracking data
Descriptions for add_entry, update_entry, delete_entry are minimal (60 chars). Missing context on destructive side effects, prerequisites, or when to use vs. similar tools.
revoke_user description (50 chars) is too brief to guide agent selection. Missing implications: is this reversible? What happens to the user's data? Does it notify the user?
Optional parameters in add_entry (protein_g, carbs_g, fat_g) and get_profile_history (date, start_date, end_date) lack constraints on mutually exclusive relationships. Documentation does not explain when to use 'date' vs. 'start_date + end_date'.