A Model Context Protocol (MCP) server built with Spring AI that exposes product management tools
This server has two tools with extremely minimal documentation. Both tools lack meaningful descriptions and parameter details. The getProducts tool has zero parameters, and getProduct has only a basic string parameter with minimal guidance. No output schemas are documented. No error handling guidance is provided. The tool definitions are visible in the source code (ProductService.java), but the descriptions are generic and unhelpful for LLM selection. According to baseline rubric expectations, A+ tools average 194 chars in description and 100% have parameter annotations, this server provides ~20 chars per tool with minimal parameter context.
Get product by name
Get all products
Tool descriptions are under 20 characters and provide no actionable context for LLM selection. getProducts='Get all products' (18 chars) and getProduct='Get product by name' (20 chars) lack guidance on when to use each tool, what they return, or dependencies.
No input schema visible for getProducts tool. The tool accepts an empty object {} but provides no documentation of return type, pagination behavior, or result limits.
getProduct parameter 'name' has minimal description ('Product name to search for') but lacks guidance on format, length constraints, exact vs fuzzy matching behavior, or what happens on zero/multiple matches.
No output schemas documented. LLMs cannot plan downstream tool calls or extract fields from responses. Tool should document: for getProducts, does it return array of products with fields [id, name, price, description]? For getProduct, single object or array?
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 38 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 11 | - | v1 |
No error handling guidance. What happens if getProduct('nonexistent') is called? Does it return null, empty array, 404 error? Description should state: 'If no match found, returns...' and guide recovery.
No pagination support visible. getProducts has no limit/offset parameters. If product database grows to 1000+ items, returning all results will bloat the context window and degrade LLM reasoning.