Simple MCP server providing accurate date and time tools for LLMs
Six well-named tools with clear, action-verb prefixes (get-, parse-, format-, calculate-, add-, generate-). All tools have descriptions (avg 180 chars, within 10-1024 baseline). Input schemas are present and properly typed with enums for constrained values. However, output schemas are completely undocumented, LLMs cannot plan downstream calls or extract structured data. Parameter descriptions are adequate but lack format/range constraints (e.g., timezone examples but no validation rules). No error handling guidance visible in code. Tool composition is sound (each does one thing), but missing pagination/limits for generate-date-list which could return unbounded arrays.
Add or subtract time from a date. Use positive numbers to add time, negative numbers to subtract.
Calculate the difference between two dates. Returns the difference in days, hours, minutes, and seconds.
Format a date according to a specific pattern. Use this to convert dates between different formats.
Generate a list of dates into the future or past. Use positive count for future dates, negative for past dates. Returns an array of dates with formatted strings, day of week, and relative time descriptions.
Get the current date and time. ALWAYS use this tool when you need to know what time or date it is right now. Returns current datetime in multiple formats including ISO 8601, Unix timestamp, and human-readable format.
Parse and validate a date string. Use this to verify if a date string is valid and get it in standardized formats. Returns the parsed date in ISO 8601, Unix timestamp, and human-readable format.
Output schemas completely undocumented. LLMs cannot infer what fields are returned (e.g., does get-current-datetime return {iso, unix, readable} or {timestamp, formatted}?). This breaks tool chaining and forces agents to guess at response structure.
generate-date-list lacks pagination/limit constraints. Requesting 1000 dates could return unbounded arrays, exhausting context windows. No mention of max count or pagination in description.
Parameter descriptions lack format/range constraints. E.g., timezone accepts 'America/New_York' but no validation rules stated; amount in add-time-to-date has no min/max bounds; count in generate-date-list unbounded.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 58 | 2026-07-28+ | v2 |
No error handling guidance in code. If parse-date receives invalid input, what does the tool return? How should the LLM recover? No recovery hints or error categorization visible.
Tool descriptions include example values ('2024-03-15', 'America/New_York') which LLMs may reuse literally in real calls. Should use enum constraints and format declarations instead.