A Model Context Protocol server implementation in DWScript that provides tools for retrieving current time and METAR weather information
The server defines 2 tools with reasonable naming and partial schema definitions. Both tools have descriptions and input schemas present. The tools are functional but fall short of production quality in several key dimensions.
Get the current local date and time
Get a METAR from a station ID
Output schemas are not documented. LLMs cannot see the structure of responses (which fields, types, required fields). Only inline comments in source code document sample responses. This violates the pattern:tool requirement that tools must have documented return types.
Parameter descriptions in metar tool are terse (ICAO code for the weather station (e.g., LFPG, KJFK)). Rubric baseline is 72 chars average; this is ~50 chars. Lacks guidance on valid station ID format (uppercase? case-sensitive? 4-char code only?). Example values in description (LFPG, KJFK) could be reused literally by LLMs instead of adapting to context.
Error handling lacks recovery guidance. The metar tool returns plain text error messages ('Invalid station', 'Request failed with status 500') without actionable context. Per pattern:recovery-guide, errors must tell LLM what to do next (e.g., 'Invalid station ID. Try searching for nearby airports with search_airports() or verify the 4-letter ICAO code.'). Current errors give agent nothing to act on.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-21 | F | 49 | <=2025-11-25 | v2 |
No error classification. The code handles HTTP status codes (200, 204, other) but does not categorize errors as retryable (network timeout), user-fixable (invalid station ID), or fatal (API down). Per pattern:error-classification, LLMs need this guidance to decide next steps.
No parameter validation or constraints documented. The station_id parameter accepts any string; no enum, regex pattern, or length constraint specified. Rubric requires: 'When a parameter has a regex pattern, length limit, or character restriction, state it in the description.' METAR station IDs follow ICAO 4-letter code format, this should be documented.