A Model Context Protocol (MCP) server that provides time-related tools
Server provides 4 read-only tools with complete descriptions and basic input schemas. Tool names follow verb_noun convention (get_*, format_*). Descriptions are adequate (100-200 chars, within baseline 194 avg) and explain purpose clearly. However, schemas lack proper type constraints (no enums for timezone validation, no min/max for timestamp), parameter descriptions are embedded in docstrings rather than schema, and error handling returns plain strings instead of structured responses. Output schemas are undocumented, LLMs cannot predict response structure for chaining. No tool annotations (readOnlyHint present but not declared). Composition is sound: each tool has one responsibility. Security is adequate for read-only operations.
Convert a Unix timestamp to human-readable format. Takes a Unix timestamp (seconds since epoch) and converts it to readable date/time format in both local time and UTC.
Get the current time in a specified timezone. This function retrieves the current date and time for any valid timezone. It uses Python's zoneinfo module for accurate timezone handling.
Get the current time across multiple common timezones simultaneously. This function provides a world clock view showing the current time in major timezones around the globe. Useful for scheduling across time zones or getting a global time perspective.
Get the current time as a Unix timestamp. Returns the current time as seconds since the Unix epoch (January 1, 1970, 00:00:00 UTC). Also provides human-readable equivalent for reference.
No input schema validation or enums for timezone parameter. 'get_current_time' accepts any string; invalid timezones return error strings instead of structured error responses. LLMs cannot predict valid values and will hallucinate timezone names.
Output schemas are completely undocumented. All tools return plain strings; LLMs cannot parse structure or extract fields for downstream chaining. No documented return types violates baseline (100% of A+ tools have documented return types).
Error handling returns plain text error messages instead of structured responses with recovery guidance. 'Error getting time for timezone...' gives LLM no actionable next step. Violates error-classification pattern.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 63 | 2026-07-28+ | v2 |
Parameter descriptions exist only in docstrings, not in JSON Schema. FastMCP should expose parameter descriptions in the input schema so LLMs see constraints at tool-selection time, not buried in prose.
No tool annotations (readOnlyHint, idempotentHint) declared in schema. All tools are read-only and idempotent, declaring this via annotations helps agents reason about retry safety and side effects.