Spring Boot-based MCP server providing database query and weather forecast tools
Server has 4 tools with basic schemas and descriptions, but significant gaps prevent production use. All tools have descriptions (10-200 chars range) and input schemas with type definitions. However, descriptions lack actionable context for LLM selection, parameter descriptions are minimal, output schemas are undocumented, and error handling is absent. No tool annotations (readOnlyHint, destructiveHint). Tool naming follows verb_noun convention (getWeatherForecastByLocation, queryBySql, listAllTablesName, getTableSchema) but descriptions are generic. The queryBySql tool is particularly concerning: it accepts arbitrary SQL with only a 4000-char truncation limit and no validation guidance. No evidence of pagination, rate limiting, or recovery guidance in any tool.
Returns schema and relation information for the given table. Includes column name, data type and constraints. This is useful for understanding the structure of a specific table.
Get weather forecast for a specific latitude/longitude
Return all table names in the database separated by comma. This is useful for getting a quick overview of the database structure.
Execute a select SQL query and return results in a readable format. Results will be truncated after 4000 characters. Will throw an exception if the query is not a SELECT statement.
queryBySql lacks input validation and error guidance. Accepts arbitrary SQL with only truncation (4000 chars) as safety. No guidance on what happens with non-SELECT queries, injection risks, or recovery steps.
No output schemas documented for any tool. LLMs cannot plan downstream calls or extract required fields. E.g., queryBySql returns 'results in readable format' but structure is undefined.
Parameter descriptions are minimal or absent. 'latitude' and 'longitude' lack units, precision, or range constraints. 'sql' parameter has no guidance on dialect, timeout, or result limits.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 48 | 2026-07-28+ | v2 |
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). All tools are marked READ_ONLY in metadata but this is not reflected in MCP tool definitions, limiting agent safety reasoning.
No pagination support. listAllTablesName and queryBySql could return large result sets without limit/offset parameters or cursor guidance, risking context window exhaustion.