Demo MCP server project built with Spring Boot that exposes customer database operations as MCP tools
Spring MCP Server exposes 3 basic customer lookup tools with minimal documentation. Tool names lack action verbs (getAllCustomer, getNumberOfCustomer, getCustomer use camelCase instead of verb_noun convention). Descriptions are present but generic (10-60 chars, below the 50-200 char LLM-optimized baseline). Only getCustomer has a parameter with type info (userId: int), but lacks parameter description. No output schemas documented. No error handling guidance. No pagination support despite tools returning lists. No tool annotations (readOnlyHint, etc.). The codebase shows Spring AI @Tool annotations are used, but the MCP protocol transport is unknown, cannot verify HTTP/SSE/STDIO compliance.
This tool list all the customers in the table
This tool return the customers based on the given id(primary key)
This tool return total number of customers in the table
No output schemas documented. LLMs cannot infer what fields to expect from tool responses, forcing them to guess at downstream field names and breaking tool chaining.
Tool names use camelCase (getAllCustomer) instead of verb_noun convention (list_customers, get_customer_count, get_customer). LLMs rely on consistent naming to parse intent.
Parameter descriptions missing. getCustomer accepts userId but provides no description of what userId represents, valid range, or format. LLMs cannot validate input.
No pagination support. getAllCustomer returns all customers without limit, offset, or page parameters. Large result sets will exhaust context windows.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 24 | 2026-07-28+ | v2 |
No error handling guidance. Tools provide no recovery hints if customer not found, database unavailable, or invalid input supplied. LLMs cannot self-correct.