MCP server providing Taiwan weather forecasts and satellite imagery from the Central Weather Administration (CWA)
The Taiwan Weather API server defines 3 tools with reasonable descriptions and clear use cases for weather forecasting in Taiwan. However, there are significant gaps in schema completeness, parameter validation guidance, and error handling patterns. All three tools have descriptions, but parameter schemas lack type strictness and validation constraints. The descriptions are fairly verbose but include helpful context about valid inputs. No input schema type definitions are visible in the provided code, parameters are declared as string type in the input JSON but lack enum constraints, format specifications, and validation rules that would guide LLM usage. Error handling is minimal; there is no recovery guidance or error categorization. The tools follow the verb_noun naming convention well (get_*, consistent across all 3 tools), and each tool has a single responsibility. Output formatting is environment-aware (terminal vs browser) but not structured for downstream tool chaining.
Get the current weather of the specified city/county in Taiwan. Args: location_name (str): city/county, must be a valid Taiwan city/county name Valid city/county names include: 宜蘭, 花蓮, 臺東, 澎湖, 金門, 連江, 臺北, 新北, 桃園, 臺中, 臺南, 高雄, 基隆, 新竹縣, 新竹市, 苗栗, 彰化, 南投, 雲林, 嘉義縣, 嘉義市, 屏東 So, when using this tool, convert location name into one of the above in tranditional Chinese: for example input "臺北" instead of "Taipei", "花蓮" instead of "Hualien", etc. Returns: A summary of the current weather conditions, including probability of precipitation, outdoor thermal comfort index, and max and min of temperature, of the specified city in Taiwan.
Get the satellite weather image of Taiwan or East Asia. The imagery updates very 10 minutes. Args: region (str): either Taiwan or East Asia wavelength (str): infrared, visible, or radar - The covered region in the Taiwan image includes only Taiwan - The covered regions of East Asia in the image include Beijing, Chongqing, Hanoi, Ho Chi Minh, Singapore, Brunei, Shenzhen, Hong Kong, Manila, Shanghai, Taipei, Seoul, Osaka, Tokyo, and Sapporo. - Infrared weather image is best for thunderstorm monitoring, and nighttime cloud tracking. - Visible-light weather image is best for fog, haze, daytime clouds, and cloud edges detection. - Radar reflectivity weather image is best for live precipitation, storm tracking, and warnings. Returns: Weather image in a preformatted style based on the runtime environment. - If the tool is running in 'terminal' mode, the image is converted to colored ASCII characters and wrapped in a Markdown code block (using triple backticks) to preserve alignment and monospaced formatting. - If running in 'browser' mode, the output is wrapped in HTML-safe base64-encoded <img> tags for direct rendering in web-based interfaces. The LLM does not need to infer the runtime environment. Instead, it should display the output according to the provided format. The tool ensures the output is pre-formatted for the intended environment.
Parameter enums not enforced in schema. 'num_days' accepts 'three' or 'seven' but schema declares it as bare string type with no enum constraint. 'region' should be ['Taiwan', 'East Asia'] and 'wavelength' should be ['infrared', 'visible', 'radar']. LLMs cannot programmatically validate these without enums and will hallucinate invalid values.
No error handling or recovery guidance. Tools validate location names internally (via get_valid_location()) but return no actionable error message if validation fails. An LLM receives a failure but has no guidance on what to try next. Missing pattern: recovery-guide.
Output schemas not documented. Tools return formatted strings (ASCII tables, HTML images) rather than structured objects. Downstream tools cannot extract specific forecast data (e.g., max_temp, wind_speed) from ASCII output. Missing pattern: response-shaper.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 58 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 40 | - | v1 |
Get 3-day or 1-week weather forecast for the specified city/county in Taiwan Args: num_days (str): three or seven location_name (str): city/county, must be a valid Taiwan city/county name Valid city/county names are: 宜蘭, 花蓮, 臺東, 澎湖, 金門, 連江, 臺北, 新北, 桃園, 臺中, 臺南, 高雄, 基隆, 新竹縣, 新竹市, 苗栗, 彰化, 南投, 雲林, 嘉義縣, 嘉義市, 屏東 So, when using this tool, convert location name into one of the above in tranditional Chinese: for example input "臺北" instead of "Taipei", "花蓮" instead of "Hualien", etc. Returns: One of the following tables: - A 3-day weather forecast table listing the predicted ranges of temperature, relative humidity, wind speed (Beaufort scale), and probability of precipitation of the specified city in Taiwan over the current and next 3 days. - A 7-day weather forecast table listing the predicted temperature (avg, max, and min), relative humidity, wind speed (Beaufort scale), probability of precipitation, and UV index of the specified city in Taiwan over a 7-day period.
Parameter descriptions lack format/constraint guidance. 'location_name' description lists valid Chinese city names but provides no machine-readable constraint or regex pattern. An LLM must parse the list from the description text, not from a schema constraint. Should use enum values in schema.
Environment-dependent output formatting (browser vs terminal) is managed via command-line args, not via tool parameters or request metadata. This breaks stateless protocol design, the same tool call produces different output based on server startup state, not client intent. Cannot work reliably in multi-client scenarios.