A collection of MCP (Model Context Protocol) server examples built with Cloudflare Workers, demonstrating authless and OAuth-based remote MCP servers with calculator tools
This workshop repository exhibits severe quality gaps across all definition dimensions. The server registers 5 tools (3x 'add', 2x 'calculate'), creating duplicate tool definitions that indicate incomplete implementation or copy-paste errors. Tool descriptions are minimal (12-50 chars), falling below the 34 char p10 baseline for production tools. While input schemas are present and use Zod validation, parameter descriptions are sparse. No output schema is documented. No error recovery guidance exists. The codebase appears to be an educational example rather than production-grade, with placeholder tool implementations and no domain-specific value beyond basic arithmetic operations.
Simple addition tool
Simple addition tool
Simple addition tool
Calculator tool with multiple operations
Calculator tool with multiple operations
Duplicate tool definitions: 'add' registered 3 times, 'calculate' registered 2 times. This causes tool registry collisions and makes the server non-functional or unpredictable.
Tool descriptions are too short and generic. 'Simple addition tool' (22 chars) and 'Calculator tool with multiple operations' (42 chars) do not explain WHEN to use the tool, WHAT it returns, or any prerequisites. Baselines show avg 194 chars (p10=34). These descriptions are below minimum actionable threshold.
No output schema documented. Tools return content arrays with text fields, but the LLM cannot see the schema structure. This violates the pattern requirement: 'Document the output schema. LLMs need to know what fields to expect so they can plan downstream tool calls and extract the right data.'
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 42 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 0 | - | v1 |
Tool 'calculate': enum constraint exists (operation: 'add'|'subtract'|'multiply'|'divide'), but division by zero returns an error message as plain text rather than structured error response. No error classification (retryable/user-fixable/fatal) and no actionable recovery guidance ('Try different operands' or similar).
Parameter descriptions are minimal or missing context. 'First number to add' and 'Second number to add' are present but lack constraints (range, format, edge cases). No mention of supported numeric types (int vs float), precision, or limits.
No pagination, limits, or result capping patterns. While these tools do not return lists, the absence of structured error responses and result envelopes (e.g., {status, result, error}) prevents future extension and does not follow response-shaper patterns.
Tool names 'add' and 'calculate' lack verb_noun clarity. 'add' could be ambiguous (add what? add to what?). Better names: 'sum_numbers', 'add_two_numbers', 'perform_arithmetic'. Current names score 45-55 due to brevity and lack of object context.