A Spring Boot MCP server example demonstrating tool registration and book service management using Spring AI's MCP server framework
This server has critical definition gaps. Both tools lack meaningful descriptions (identical generic text: 'Get the total of books for children'), parameter descriptions are absent, and output schemas are undocumented. Tool names are verb-prefixed (get_*) but descriptions do not explain WHEN to use each tool or what distinguishes them. The first tool (get_books) accepts no parameters, yet its purpose is unclear, does it return all books, a count, or a filtered list? The second tool (get_books_by_title) accepts a 'title' parameter with a description, but the tool description itself is identical to the first, creating ambiguity. No output schema is visible in the source, and error handling is absent. This server would not pass code review for production use.
Get the total of books for children
Get the total of books for children
Both tools have identical, generic descriptions ('Get the total of books for children'). Descriptions do not explain WHEN to use each tool, what distinguishes them, or what they return. LLMs cannot determine which tool to call.
No output schema is documented or visible in source code. LLMs cannot plan downstream calls or extract required fields (e.g., book IDs for further operations).
get_books accepts no parameters but its purpose is ambiguous. Does it return all books, a count, or a default filtered list? Description does not clarify.
No error handling guidance. If a title is not found or the service fails, the LLM has no recovery path.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 27 | 2026-07-28+ | v2 |
Tool definitions are inferred from BookService.java annotations (not explicitly visible in source). Actual schema registration and tool metadata are hidden in Spring AI framework internals.