Template for building custom Model Context Protocol servers
Single-tool server with basic implementation. Tool name follows verb_noun pattern ('get_square'), but description is minimal (8 words, 34 chars, below the 10-word minimum). Input schema is present with proper type (float) and parameter description ('The number to square'), meeting JSON Schema requirements. However, output schema is NOT documented anywhere in the codebase, tool returns a dict but LLMs have no contract for expected fields. No output documentation violates the 'Document the output schema' critical check. Error handling exists (try/except) but returns unstructured error text without recovery guidance. No pagination, no batching (not applicable here), no idempotent hints. The tool is READ_ONLY and stateless, which is correct, but the definition lacks the depth required for production use.
Calculate the square of a number
Output schema not documented. Tool returns {success, number, square} or {success, error, number} but LLMs have no contract for these fields or their types.
Description too brief (34 chars, 8 words). Below minimum 10-word guideline and does not explain WHAT the tool does with LLM-friendly precision, WHEN to use it, or prerequisites.
Error responses return free-form error text (str(e)) without actionable recovery guidance. LLMs cannot determine if error is retryable, user-fixable, or fatal.
No parameter constraints documented (e.g., numeric range limits, valid values). Parameter description is single phrase; lacks format and constraint specification.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 58 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 40 | - | v1 |