A Spring Boot-based MCP (Model Context Protocol) server that provides weather forecasting tools and text transformation utilities
Server exposes 6 tools with basic schemas and descriptions, but significant quality gaps limit production readiness. Tool names lack consistent verb-noun structure (e.g., 'getChinajsWeatherForecastByLocation' is verbose and unclear). Descriptions are minimal (10-50 chars) and lack context on when/why to use each tool. Parameter descriptions exist but are generic ('Latitude', 'Longitude'). No output schemas documented. Error handling absent. Tool composition is poor: 4 nearly-identical weather tools should be consolidated into one parameterized tool. The 'toUpperCase' utility tool is out of scope for a weather service and signals unclear domain focus.
Get weather alerts for a US state. Input is Two-letter US state code (e.g. CA, NY)
中国城市的天气
江苏城市的天气
日本城市的天气
Get weather forecast for a specific latitude/longitude
Put the text to upper case
Redundant weather tools: 4 nearly-identical tools (getWeatherForecastByLocation, getJapanWeatherForecastByLocation, getChinaWeatherForecastByLocation, getChinajsWeatherForecastByLocation) should be consolidated into one parameterized tool with a 'region' or 'country' enum parameter. This violates single-responsibility and forces LLMs to reason about which variant to call.
Tool names lack clarity and consistency. 'getChinajsWeatherForecastByLocation' is cryptic (what is 'js'?). Names should follow verb_noun convention (e.g., 'get_weather_forecast'). Current camelCase names are verbose and do not clearly signal intent to LLMs.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 35 | 2026-07-28+ | v2 |
Descriptions are too brief (10-50 chars) and lack context. 'Get weather forecast for a specific latitude/longitude' does not explain when to use this vs. getAlerts, what data is returned, or what format coordinates should be in. Descriptions should be 50-200 chars and answer: what, when, and what's returned.
No output schemas documented. LLMs cannot plan downstream calls or extract data without knowing what fields are returned. Document the structure of weather forecast responses (e.g., temperature, humidity, wind_speed, forecast_period).
Out-of-scope tool: 'toUpperCase' is a utility function unrelated to weather. It signals unclear domain focus and wastes LLM reasoning cycles. Remove it or move to a separate utility service.