Demo project for Spring Boot MCP server with shopping list and wish list generation tools
This server has critical deficiencies across naming, schema documentation, and parameter design. Both tools have trivial descriptions (under 50 chars), zero input schemas, and names that violate verb-noun conventions. The tools are essentially stubs with TODO comments indicating incomplete implementation. No input validation, no structured output documentation, and no error handling guidance. This is a learning/demo project that should not be used in production.
Generates a simple Christmas wish list
Generates a simple shopping list
Both tools have empty input schemas (Input: {}) with no parameter definitions, type information, or constraints. Per HARD SCORING RULES: schema score MUST be 0 when no input schema is present.
Tool names lack action verbs. Both names use the pattern '<Adjective> <Noun> Generator' instead of verb-first naming (generate_shopping_list, generate_christmas_wishlist). Names should start with a verb (get_, create_, list_, generate_) to signal intent.
Descriptions are trivial (19-22 chars, below the 34 char p10 baseline and below the 20-char minimum for basic clarity). 'Generates a simple shopping list' and 'Generates a simple Christmas wish list' provide no context for WHEN to use the tool, what happens on invocation, or what the output structure is.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 27 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 19 | - | v1 |
No output schema documentation. Tools return plain strings ('Milk, Eggs, Bread, Butter') with no indication whether this is a comma-separated list, JSON, or a structured object. LLMs cannot plan downstream tool calls without knowing the output structure. Per HARD SCORING RULES: 100% of A+ tools have documented return types.
No error handling or recovery guidance. Methods return raw strings on success with no explicit error paths, validation, or guidance for the LLM if something fails. No HTTP status codes, no error classifications (retryable vs. user-fixable vs. fatal).
Code contains TODO comments indicating incomplete/stub implementation. Shopping list generation ignores age parameter (TODO mentions this). Christmas wish list ignores price range (TODO). These are not production-ready tools.
No input parameters despite logical need. Both tools return static hardcoded strings with no way for the caller to customize the list (e.g., dietary restrictions, budget, family size for shopping list; age or preferences for wish list).