A MCP server project providing datetime and note management capabilities
The server defines 3 tools with basic structure but significant quality gaps. All tools have descriptions and input schemas are present with proper JSON Schema structure. However, descriptions are generic and lack the depth needed for LLM decision-making. Parameter descriptions are minimal or absent for critical inputs. The 'add-note' tool exposes state mutation without proper error handling or confirmation patterns. Tool naming follows verb_noun convention appropriately (add-, get-, format-). Output schemas are not explicitly documented. Error messages in the code are generic (e.g., 'Note not found', 'Unknown datetime resource') without recovery guidance. The server lacks annotations for destructive operations despite the 'add-note' tool modifying state.
Add a new note
Format a date string according to the specified format
Get the current time in various formats
Missing output schema documentation. Tools return values but no structured schema is documented for what clients should expect. get-current-time returns strings in multiple formats, format-date returns formatted strings, add-note returns success/failure, all undocumented.
add-note tool lacks destructive operation safeguards. No confirmation step, no dry-run, no explicit error handling for duplicate names or invalid input. Description does not state that this modifies server state. Missing 'destructiveHint' annotation.
Parameter descriptions are insufficient or absent. 'format-date' has 'date' parameter with generic description 'Date string to format (default: today)', no format specification, no error guidance if parse fails. 'get-current-time' 'timezone' param description lacks examples or validation rules (what timezone strings are accepted?).
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 44 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 39 | - | v1 |
Generic, unhelpful error messages. Code shows 'Note not found: {name}' and 'Unknown datetime resource: {path}', these do not guide recovery. Errors should suggest alternatives (e.g., 'Note not found. Available notes: note1, note2') or next steps.
Tool descriptions are too brief and generic. 'Get the current time in various formats' (45 chars) lacks context on WHEN to use this vs format-date, what formats are actually returned, and any prerequisites. Average baseline is 194 chars; these are ~50 chars.
Missing parameter type constraints. 'format-date' accepts 'format' as a free-form string describing Python strftime patterns, no enum, no length limits, no validation guidance. LLMs will guess at invalid formats like '%Q' or 'YYYY-MM-DD' (JavaScript style).
'add-note' exposes internal dict-based state with no persistence, validation, or limits. No max note count, no sanitization, no idempotency handling. If called twice with same name/content, behavior is undefined (overwrites silently?). No recovery path if note is accidentally overwritten.