A Model Context Protocol server starter template demonstrating best practices for server initialization, tool registration, error handling, and resource cleanup
This is a well-structured starter template with clear, purposeful tool definitions. Both tools have proper schemas with Zod validation, comprehensive descriptions, and thoughtful error handling. The calculator tool includes validation for edge cases (division by zero, overflow). The REST API tool demonstrates retry logic and rate limiting awareness. However, the server is intentionally minimal (2 tools only) and lacks some production-grade patterns like pagination support, structured response field mapping, and comprehensive permission documentation. Tool names follow verb_noun convention, descriptions are substantive (119-194 chars), and parameter documentation is thorough. This is appropriate for a starter template, it prioritizes clarity and best practices over feature completeness.
Perform basic arithmetic operations
Fetch user details from JSONPlaceholder API
Output schema not documented. Tools return structured responses but the schema (text content, isError flag, potential pagination fields for fetch_user) is not declared or described for the LLM.
fetch_user lacks pagination support. The tool description does not explain if results are paginated, what limit applies, or whether multiple user records could be returned. Real API usage may require page/limit parameters.
Tool descriptions do not indicate idempotency or state-changing behavior. While both tools are read-only (marked correctly), the descriptions themselves should reinforce this for LLM planning. No explicit note like 'This is a read-only operation' appears in the description text.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 11 | 2026-07-28+ | v2 |
| 2026-03-09 | D | 53 | - | v1 |
fetch_user parameter 'userId' lacks format guidance. Description says 'must be a positive integer' but does not clarify the valid range (1 - 10 for JSONPlaceholder). LLM may guess invalid IDs, causing unnecessary 404 errors.