Production-minded Python starter for secure Model Context Protocol servers
Two well-defined tools with complete schemas, clear descriptions, and proper parameter typing. Both tools have enums and constraints (calculate: operation enum, find_catalog: limit bounds 1-20). Descriptions are concise (50-80 chars) and action-oriented. Tool names follow verb_noun pattern (calculate, find_catalog). Security is enforced via require_scope() calls. Main gaps: no error recovery guidance in descriptions, no output schema documentation in docstrings, and missing parameter descriptions in the actual tool signatures (though Pydantic Field provides some via defaults).
Perform deterministic arithmetic with validated structured output.
Search the deterministic local catalog without external network access.
Tool descriptions lack error recovery guidance. 'Perform deterministic arithmetic' does not explain what happens on divide-by-zero or how the LLM should recover.
Output schemas not documented in tool docstrings. LLMs cannot see that calculate returns {operation, value} or find_catalog returns [{id, name, category, description}] without inspecting Pydantic models.
Parameter descriptions missing from function signatures. 'operation', 'left', 'right' in calculate() lack inline descriptions; LLMs infer from names alone.
No tool annotations (readOnlyHint, idempotentHint) declared. Both tools are read-only and idempotent, but this is not signaled to clients.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 68 | <=2025-11-25 | v2 |