A Spring Boot MCP server that provides tools for querying employee and department information from a relational database, including employee details, reporting hierarchies, salaries, and department employee listings.
All 5 tools have basic verb-noun naming (get_*) and descriptions present, but quality is severely limited. Descriptions are extremely terse (15-50 chars, well below the 194-char baseline), providing minimal context for LLM tool selection. Input schemas are present but minimal, only 'id' parameter with type 'integer' and basic description. No output schemas documented anywhere. No parameter constraints (enums, ranges, formats). No error handling guidance. No indication of idempotency, side effects, or prerequisites. Tool descriptions lack WHEN/WHY context that LLMs need for selection. The getSalary description contains a typo ('reposting' instead of 'reporting'). No tool annotations (readOnlyHint present in metadata but not in schema). Overall, definitions are skeletal, functional but far below production quality.
Get the Employee details and related Department details
Get the Employees of the department
Get the Reporting Hierarchy of the employee by manager id
Get the reporting manager details of the employee
Get the Salary of the reposting employee
Descriptions critically underdeveloped. All 5 tools have descriptions under 50 chars (baseline 194 chars). Descriptions lack WHAT/WHEN/WHY context. LLMs cannot distinguish when to call getEmployeeDetails vs getReportingManagerDetails vs getReportingHierarchy without richer context.
No output schemas documented. LLMs cannot plan downstream calls or extract required fields (e.g., does getEmployeeDetails return department_id for chaining to getEmployeesByDepartment?). Violates pattern:tool requirement.
Input parameter descriptions are minimal (e.g., 'id of the employee'). No constraints, ranges, or format guidance. Parameter 'id' is ambiguous, is it employee_id or manager_id? Naming should be explicit (employee_id, department_id).
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 39 | 2026-07-28+ | v2 |
No error handling guidance. If an employee_id does not exist, what does the tool return? An empty object? A 404? An error message? LLMs need recovery hints (e.g., 'If employee not found, try search_employees() with partial name').
getSalary description contains typo: 'Get the Salary of the reposting employee' (should be 'reporting'). Typos reduce clarity and professionalism.