Reference implementation of MCP server in multiple languages (TypeScript, Python, Go)
Three tools with minimal descriptions (10-30 chars each) and no parameter descriptions. Schemas present but sparse. 'echo' and 'now' lack meaningful context for LLM selection. 'read_file' has a critical security note in description but no parameter guidance on path validation. No output schemas documented. No error handling guidance. Naming is acceptable (verb-noun pattern) but descriptions fall far short of the 194-char baseline for production tools.
Return the input string unchanged.
Return the current UTC ISO-8601 timestamp.
Read a file from disk (1 MB max, no path traversal).
All tool descriptions are under 30 characters; rubric baseline is 194 chars. Descriptions lack context for LLM selection (WHAT, WHEN, WHY). 'echo' and 'now' are trivial; 'read_file' mentions 1MB limit and path traversal but provides no parameter guidance.
No parameter descriptions. 'read_file' accepts 'path' with no guidance on format, constraints, or validation. LLMs cannot infer whether to pass absolute paths, relative paths, or URIs.
No output schemas documented. LLMs cannot plan downstream calls or extract structured data. 'read_file' returns file contents but format (text, binary, JSON) is unspecified.
No error handling guidance. 'read_file' can fail (file not found, permission denied, size exceeded) but tool provides no recovery hints or error classification.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 46 | 2026-07-28+ | v2 |
Security: 'read_file' description mentions '1 MB max, no path traversal' but these constraints are not enforced in visible schema or parameter validation. LLMs cannot see constraints in descriptions alone.