A Rust-based MCP server implementing weather agent tools with dynamic resources and multimodal support
This server has critical structural issues. Naming is verb-forward (weather_report, city_location) but lacks specificity, multiple tools share identical names across files (weather_report appears twice, weather_with_image twice, etc.), creating ambiguity for LLM tool selection. Descriptions are present but generic (10-50 chars), below the 50-200 char baseline for A+ tools. Parameter descriptions exist for tools 1-5 but are minimal. Tools 6-9 have zero parameters, making them resource-like but registered as tools. No output schemas documented. No error handling guidance. No security considerations visible. The golem-rust framework appears to auto-generate tool definitions from trait methods, but the resulting definitions lack production-grade polish.
Get location details for a specific city
Unstructured raw weather data for dynamic resource
Get unstructured raw weather data for a specific city
Snowfall image data for dynamic resource
Get snowfall image data
Weather report for dynamic resource (no parameters)
Get a weather report for a specific city
Weather report with multimodal content for dynamic resource
Tools 6-9 have empty input schemas ({}). These should either be registered as resources, not tools, or accept parameters.
Duplicate tool names across the server (weather_report, weather_with_image, raw_weather_data, snowfall_image appear twice). LLMs cannot disambiguate between tools with identical names. Rename dynamic resource variants (e.g. weather_report_dynamic, weather_report_template) or consolidate into a single tool with a mode parameter.
Descriptions are too short (10-50 chars, below 50-200 char baseline). E.g. 'Get a weather report for a specific city' (45 chars) lacks context on when to use this vs weather_with_image, what format is returned, or any prerequisites. Expand to explain WHAT, WHEN, and WHAT IS RETURNED.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 38 | <=2025-11-25 | v2 |
Get weather report with multimodal content including image
No output schemas documented. Tools return String, Multimodal, UnstructuredText, UnstructuredBinary, and LocationDetails, but the MCP tool definitions do not declare these return types. LLMs cannot plan downstream calls or extract fields without knowing the response structure.
No error handling guidance. Tools do not document what happens if a city is invalid, if the weather service is unavailable, or if multimodal content fails to load. Agents have no recovery path.