Hong Kong Weather MCP Server providing climate and weather data tools
The server provides 19 well-organized read-only tools for Hong Kong climate and weather data. All tools have descriptions and most have proper parameter schemas with types and constraints. However, the descriptions are often quite generic (averaging ~50-70 chars for tool descriptions, well below the optimal 50-200 char range for LLM clarity), and parameter descriptions lack critical guidance on valid ranges, formats, and dependencies. Output schemas are not documented, LLMs cannot see what fields to expect from API responses. Error handling is minimal; no recovery guidance or actionable error messages are evident in the code. Tool names follow the verb_noun pattern correctly (get_*), but several parameter descriptions are perfunctory. The 'options' object in tide and other tools uses an unstructured approach rather than flattened parameters, making schema clarity harder. Security posture is good (read-only, no credentials exposed), but descriptions for multi-language support (lang parameter) could better explain when each language is available. Composition is excellent, single-responsibility tools that chain well via station/year/date patterns.
Get 9-day weather forecast for HK with general situation, daily data.
Get current weather data, warnings, temp, humidity in HK from HKO.
Get daily maximum temperature data for a specific station in Hong Kong
Get daily mean temperature data for a specific station in Hong Kong
Get daily minimum temperature data for a specific station in Hong Kong
Get Gregorian-Lunar calendar conversion data
Get times, heights of astronomical high/low tides for a station in HK.
Tool descriptions are too brief (averaging 50-70 characters) to guide LLM selection effectively. Baseline for A+ tools is 50-200 chars with explicit WHAT/WHEN/WHY context.
Output schemas are not documented. LLMs cannot see what fields they should expect from responses (e.g., get_moon_times returns a dict with 'fields' and 'data' but this is not specified). Without output documentation, agents cannot plan chained calls or extract relevant data reliably.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-21 | C | 64 | 2026-07-28+ | v2 |
| 2026-03-09 | D | 54 | - | v1 |
Get hourly heights of astronomical tides for a station in HK.
Get cloud-to-ground and cloud-to-cloud lightning count data
Get local weather forecast for HK with description, outlook, update.
Get times of moonrise, moon transit and moonset
Get list of weather station codes and names for radiation reports in HK.
Get special weather tips for Hong Kong including tips list and update.
Get times of sunrise, sun transit and sunset for Hong Kong
Get list of tide station codes and names for tide reports in HK.
Get latest 10-minute mean visibility data for Hong Kong
Get weather, radiation report for HK. Date must be YYYYMMDD.
Get detailed weather warning info for HK with statement and update.
Get weather warning summary for HK with messages and update.
Parameter descriptions lack actionable constraints. 'year', 'month', 'day' parameters exist but their descriptions do not specify valid ranges (e.g., 'Year (2018-2024)' in schema but not always in param description). No guidance on what happens if parameters fall outside ranges or are omitted.
The 'options' parameter in get_hourly_tides and get_high_low_tides is an unstructured object with nested properties (month, day, hour, lang). This makes schema clarity harder for LLMs. Flattened parameters (e.g., month, day, hour, lang as top-level optional params) would be clearer.
No error handling or recovery guidance visible in tool code. If an invalid station code is passed to get_hourly_tides or an out-of-range year to get_moon_times, the user gets a raw API error. Tools should return actionable error messages and suggest recovery steps (e.g., 'Invalid station: CCH. Available stations: [list]').
Multi-language support (lang parameter) is not well-documented. Descriptions say 'Language code (en/tc/sc, default: en)' but do not explain when each language is available, whether all tools support all languages, or what happens if an unsupported language is requested.