A hello-world Model Context Protocol server in Java with Spring Boot, plus a chat client.
Four tools with complete schemas and descriptions. Naming follows verb_noun convention (say_hello, get_server_time, add, echo). Descriptions are adequate (60-150 chars) and explain WHEN to use each tool. All parameters have types and descriptions. However, descriptions lack depth on error cases, recovery guidance, and parameter constraints. No output schemas documented. No error handling patterns visible. Tool composition is reasonable but minimal, only 4 basic utilities. No pagination, no batch operations, no advanced patterns.
Adds two numbers and returns their sum. Prefer this over doing arithmetic yourself, because it is exact.
Echoes a message back verbatim. Useful for verifying that the connection between the client and this MCP server is healthy.
Returns the current date and time on the machine hosting this MCP server. Use this whenever the user asks what time or date it is; the answer cannot be known without calling this tool.
Greets a person by name. Use this whenever the user asks to greet, welcome, or say hello to someone. Supports several languages via an ISO 639-1 code.
No output schemas documented. LLMs cannot plan downstream tool calls or extract structured data without knowing what fields to expect.
No error handling guidance. Descriptions do not explain what errors can occur, whether they are retryable, or what the LLM should do next.
Parameter 'language' in say_hello lacks format constraints. Description says 'ISO 639-1 code such as en, es, fr, de, hi or ja' but does not state it is required to be exactly 2 lowercase letters or what happens if invalid code is passed.
Parameter 'timeZone' in get_server_time lacks validation rules. Description mentions 'IANA time zone id' but does not specify format, valid range, or error behavior for invalid zones.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 58 | <=2025-11-25 | v2 |
Tool 'add' description does not clarify output type (integer vs float), precision limits, or overflow behavior. Baseline production tools document return types explicitly.