An MCP server for managing daily habits with tracking and streak calculation capabilities
Six tools with basic schemas and descriptions, but significant gaps in parameter documentation, output schema clarity, and error handling. All tools have names starting with action verbs (add_, list_, complete_, delete_, get_) which is good. Descriptions are present but brief (10-50 chars), below the 50-200 char baseline for LLM-optimized descriptions. Input schemas visible for all tools with type definitions, but parameter descriptions are minimal. Output schemas are not documented, LLMs cannot predict return structure. No error handling guidance, no recovery paths, no validation messaging. No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear risk levels. Composition is reasonable (single responsibility per tool), but chaining support is weak, list_habits returns rows but no clear field names for downstream use.
Add a new habit to the database
Mark a habit as completed for today
Delete a habit from the database
Return the current consecutive-day streak for the given habit
List all habit completions ordered by completion date
List all habits from the database
Output schemas not documented. Tools return raw database rows (tuples) with no field names or types specified. LLMs cannot predict structure or chain results to downstream tools.
Parameter descriptions are minimal or missing context. 'habit_id' lacks guidance on how to obtain it (e.g., 'from list_habits() result'). No format constraints or ranges specified.
No error handling or recovery guidance. delete_habit silently succeeds even if habit_id does not exist. complete_habit returns a message on missing habit but no guidance on how to recover. No actionable error messages.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 51 | 2026-07-28+ | v2 |
Tool descriptions are too brief (10-50 chars). Below 50-200 char baseline for LLM-optimized descriptions. Missing context on WHEN to use each tool and what it returns.
No tool annotations despite clear risk levels. delete_habit is destructive but lacks destructiveHint. list_habits and list_completions are read-only but lack readOnlyHint. get_current_streak is idempotent but lacks idempotentHint.