Minimal Model Context Protocol (MCP) server in TypeScript. Exposes get_time and text_stats tools over stdio.
Four tools with clear verb-noun naming and reasonable descriptions (avg 140 chars). All tools have input schemas with type definitions and parameter descriptions. However, output schemas are undocumented (responses are JSON strings, not structured objects), and error handling lacks recovery guidance. No tool annotations (readOnlyHint, etc.). Parameter constraints are present but could be more explicit (e.g., timezone validation, MPAA rating enum). The server follows basic MCP patterns but lacks production-grade polish in output documentation and error messaging.
Return movies currently in theaters in a given country, optionally filtered by MPAA rating. Uses TMDB. Requires TMDB_API_KEY env var (free signup at themoviedb.org).
Return the current date and time in the requested IANA timezone (e.g. America/New_York). Defaults to UTC.
Return the forecast for a location on a given day. Uses Open-Meteo (no API key required). Day defaults to today.
Return character count, word count, and line count for an input string.
Output schemas undocumented. All tools return JSON strings wrapped in content[].text, but the structure of those JSON objects is not declared. LLMs cannot plan downstream operations or validate responses without knowing the output schema.
No tool annotations. Tools lack readOnlyHint, destructiveHint, or idempotentHint metadata. The MCP spec (2026-07-28) supports tool annotations to help clients understand safety properties, all four tools are read-only and should declare this.
Error messages lack recovery guidance. Errors return raw text (e.g., 'Unknown timezone: UTC', 'Location not found: San Francisco') without suggesting next steps. Per pattern:recovery-guide, errors should guide the LLM toward resolution.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 54 | 2026-07-28+ | v2 |
get_movies_in_theaters: rating parameter accepts free-form strings instead of enum. MPAA ratings are a fixed set (G, PG, PG-13, R, NC-17, NR, etc.). Should be declared as enum to prevent hallucinated values.
get_weather: day parameter lacks format validation. Description says 'ISO date YYYY-MM-DD' but no regex pattern or format constraint in schema. LLMs may pass invalid dates like '2024-13-45'.