A comprehensive MCP server implementation showcasing tools, resources, prompts, progress reporting, and MCP Apps (UI) features. Runs on Cloudflare Workers.
Server implements 9 tools with basic schemas and descriptions. Most tools have input schemas with typed parameters and descriptions, meeting baseline requirements. However, descriptions are often terse (10-50 chars), falling below the 50-200 char LLM-optimized range. Output schemas are not documented. Error handling is minimal, no recovery guidance or actionable error messages. Tool naming follows verb_noun convention (get-*, show-*), which is good. Composition is reasonable: tools are single-purpose. Missing: per-tool error classification, output schema documentation, and richer descriptions that explain WHEN to use each tool vs alternatives.
Echoes back the input message
Returns messages annotated with priority and audience
Returns multiple resource link content blocks
Returns a resource content block for a given type and ID
Returns structured weather data with output schema validation
Calculates the sum of two numbers
Returns a tiny MCP logo PNG image
Descriptions are too terse (10-50 chars). LLM-optimized descriptions should be 50-200 chars and explain WHAT, WHEN, and WHY. E.g., 'get-annotated-message' (40 chars) lacks context on when to use it vs other message tools.
Output schemas are not documented. LLMs cannot plan downstream tool calls or extract fields without knowing the response structure. All 9 tools lack explicit output schema declarations.
No error handling or recovery guidance. Tools do not categorize errors as retryable, user-fixable, or fatal. No actionable error messages to guide LLM recovery.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 57 | 2026-07-28+ | v2 |
Renders an interactive weather dashboard UI app (MCP Apps / SEP-1865)
Simulates a multi-step operation with progress updates
Parameter descriptions are minimal or missing context. E.g., 'get-resource-reference' has 'type' and 'id' params but lacks format/constraint guidance (what are valid types? what ID range is expected?).
No pagination or result-limiting guidance. Tools like 'get-resource-links' and 'get-annotated-message' do not document max result counts or pagination support, risking context window exhaustion.