A simple MCP server implementation that exposes hello and goodbye functions
Two simple tools with basic descriptions and schemas. Both tools have clear verb-noun naming (say_hello, say_goodbye) and documented input parameters with types and descriptions. However, descriptions are minimal (10-20 chars), lacking context on WHEN to use each tool or what the LLM should expect. No output schemas documented. No error handling guidance. No parameter constraints (e.g., name length limits). Tools are READ_ONLY but lack explicit risk annotations in the schema. Logging is present but not integrated into tool definitions. Overall structure is functional but falls short of production-grade quality.
Say goodbye to someone.
Say hello to someone.
Minimal tool descriptions (10-20 chars). Descriptions must be 50-200 chars and explain WHAT the tool does, WHEN to use it, and what it returns. Current descriptions lack context for LLM selection.
No output schemas documented. LLMs cannot plan downstream calls or extract return values without knowing the response structure. Both tools return strings but this is not formally declared.
No error handling guidance. Tools lack descriptions of failure modes, invalid inputs, or recovery steps. E.g., what happens if 'name' is empty or exceeds length limits?
Parameter 'name' lacks constraints. No minimum/maximum length, no format specification. LLMs may pass empty strings, extremely long strings, or special characters without guidance.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 49 | <=2025-11-25 | v2 |
Tool annotations missing. Tools are READ_ONLY but lack explicit readOnlyHint in schema. This prevents clients from rendering appropriate UI hints or enforcing safety policies.