Demo MCP server with weather and utility tools
Four tools with basic definitions and schemas present, but significant gaps in parameter descriptions and output documentation. Tool names follow verb_noun convention (convert_temperature, add, get_alerts, get_forecast), which is good. However, parameter descriptions are minimal (e.g., 'Temperature in Celsius' is adequate but lacks context on valid ranges). No output schemas documented, LLMs cannot predict return structure. Error handling is absent; tools return plain strings with no guidance on failure recovery. Resources feature is implemented (greeting resource), but tools lack the structured output and error classification patterns expected in production tools.
Add two numbers
Convert Celsius to Fahrenheit
Get active weather alerts for a given US state (e.g., 'CA').
Get the weather forecast for a given latitude and longitude.
No output schemas documented for any tool. LLMs cannot predict return structure (string vs object vs array) or plan downstream tool calls. Pattern:tool requires documented return types.
No error handling or recovery guidance. Tools return plain strings on failure (e.g., 'No active alerts found') with no actionable next steps. Pattern:recovery-guide requires error responses to tell LLMs what to do next.
Parameter descriptions lack constraints and ranges. 'Temperature in Celsius' does not specify valid range (e.g., -273.15 to 1000). 'US state abbreviation' lacks enum constraint. Pattern:constrained-input requires enums for known value sets.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 50 | 2026-07-28+ | v2 |
Tool descriptions are generic and lack context on when to use them. 'Get active weather alerts for a given US state' does not explain prerequisites (e.g., state must be valid US abbreviation) or what the response contains. Pattern:tool-description requires WHAT, WHEN, and prerequisites.
No pagination or result limits documented. get_alerts and get_forecast may return large unstructured strings that blow context windows. Pattern:paginated-result requires limit/offset and total count for list-like results.