A Java Spring Boot implementation of the Model Context Protocol (MCP) server with weather tools and tool context management. Supports SSE and STDIO transport protocols.
This MCP server has three tools with critical structural and documentation deficiencies. Tool definitions are difficult to locate in test files rather than service implementations, and descriptions range from absent to minimal. Input parameters lack proper schema definitions with type constraints. No output schemas are documented. Tool names follow verb_noun convention, but definitions are underdeveloped for production use.
Get weather alerts by state
Get the Model Context Protocol (MCP) Tool Context
Get weather forecast by geographic location (latitude and longitude)
Tool definitions not visible in production code. 'getWeatherForecastByLocation' and 'getAlerts' are identified in test files (McpTestSse.java) rather than service classes. This creates uncertainty about actual implementation and schema.
Input parameters lack type information. 'getWeatherForecastByLocation' has parameters 'latitude' and 'longitude' described only as strings with no format constraints (e.g., numeric range, decimal places). 'getAlerts' parameter 'state' has no enum definition; accepts arbitrary strings, not validated against valid US state abbreviations.
No output schemas documented. None of the three tools declare what they return. LLMs cannot plan downstream tool calls or extract required fields (e.g., does getAlerts return an array? What fields does each alert contain?).
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 35 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 42 | 0.10.0+ | v1 |
Descriptions are minimal and under-informative. 'getToolContext' (49 chars) returns a hardcoded HOME directory, not actual context, misleading name. 'getAlerts' (28 chars) has no WHEN/WHY guidance.
No parameter descriptions. 'latitude' and 'longitude' have descriptions ('Latitude coordinate', 'Longitude coordinate') that do not explain valid ranges, precision, or use context. 'state' parameter has no description at all.
No error handling guidance or recovery paths. No indication of what errors might occur (invalid coordinates, missing state data, timeout) or how the agent should respond. Per pattern:recovery-guide, 'Error responses must tell the LLM what to do next.'
No pagination or result limits documented. If getAlerts returns a large list of states or alerts, context window impact is unknown. No limit parameter, no next_cursor, no total count. Per pattern:paginated-result and mxe:enforce-result-limits.