Minimal MCP server template in TypeScript using the official SDK.
Three simple tools with basic descriptions and schemas. All tools have explicit registrations with Zod schemas and descriptions visible in source. However, descriptions are minimal (10-20 chars baseline), parameter descriptions lack depth, and no output schemas are documented. No error handling guidance, no parameter constraints (enums, ranges), and no composition patterns. Naming is acceptable but generic. This is a starter template, not production-grade.
Return the current time in ISO 8601 format (UTC).
Echo back the provided message. Use this to verify the MCP server is reachable.
Count characters, words, and lines in a string of text. Useful for checking content length.
Tool descriptions are too brief (10-20 chars). Rubric baseline is 194 chars average; these lack context for LLM selection and when to use each tool.
No output schemas documented. LLMs cannot plan downstream calls or extract structured data without knowing response field names and types.
Parameter descriptions lack actionable detail. 'The message to echo back' and 'The text to analyze' do not explain format, constraints, or length limits.
No error handling guidance. Tools do not document what happens on invalid input, timeouts, or edge cases (e.g., empty string for word_count).
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 59 | 2026-07-28+ | v2 |
No parameter constraints. String parameters lack length limits, regex patterns, or enum values. LLMs may pass arbitrarily large or malformed input.