全球城市实时天气和预报查询 MCP Server,支持中文,数据源为 Open-Meteo 公开接口(免费无需 Key),网络异常时自动切换 wttr.in 备用通道
Single tool 'query_weather' has a complete input schema with proper types and descriptions, meeting baseline requirements. However, the tool description is overly long (>1024 chars), violates the pattern guideline, and mixes implementation details (data sources, fallback logic) with user-facing intent. No output schema is documented, LLMs cannot predict the response structure. The tool performs a single, well-defined action (query weather), but lacks error handling guidance and does not declare whether it is read-only in the schema itself (only in metadata). Parameter descriptions are adequate but could be more concise.
查询全球城市的实时天气和未来几天预报。 参数: city: 城市名,中文英文均可,例如 "青岛"、"北京"、"Tokyo" days: 预报天数,1 到 7,默认 3 天 返回: 当前天气(天气状况/温度/体感温度/湿度/风向风速) + 每日预报(日期/天气/最高温/最低温/降水概率)。 数据源: Open-Meteo 公开接口(免费无需 Key),网络异常时自动切换 wttr.in。
Tool description exceeds 1024 character limit (currently ~450 chars in Chinese, but includes implementation details like 'Open-Meteo 公开接口' and fallback logic). Descriptions should focus on WHAT the tool does and WHEN to use it, not HOW it works internally.
No output schema documented. LLMs cannot predict the response structure (e.g., nested 'current' and 'forecast' objects, field types, or whether 'data源' is always present). This forces LLMs to guess and risks misuse of returned data.
No error handling guidance. If a city is not found, the code returns None (line 'if not results: return None'), but the tool description does not explain what the LLM should do next (e.g., 'Try a different city name or use English spelling'). Error responses must guide recovery.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 56 | 2026-07-28+ | v2 |
Tool name 'query_weather' is generic and does not clearly distinguish it from similar tools in other weather servers. Consider 'get_weather_forecast' or 'search_weather_by_city' to be more specific about the action and scope.
Parameter 'days' has a default of 3 but no explicit minimum/maximum bounds in the schema. The description states '1 到 7' (1 to 7), but this constraint is not enforced in the JSON Schema (no 'minimum' or 'maximum' fields). LLMs may pass invalid values.