Model Context Protocol server implementation using MCP Java SDK. Provides Dr.Sum database analysis capabilities including table listing, metadata retrieval, and SQL query execution.
This MCP server provides 3 tools for Dr.Sum database interaction with basic schema and descriptions, but has significant gaps in parameter documentation, error handling guidance, and output schema specification. Tool naming follows verb-first patterns (list_, get_, execute_), which is good. However, parameter descriptions are minimal or absent, output formats are not documented, and error recovery guidance is missing. The source code is incomplete (truncated mid-class), preventing full verification of implementation details.
Execute a SQL query on Dr.Sum database. Connection is established from environment variables. Parameters: sql_query (string, required)
Get table metadata with sample data from Dr.Sum. Parameters: table_name (string, required), sample_rows (integer, optional, default=3)
Get a list of all tables and views in the Dr.Sum database. Returns table names with type information (table or view). Optionally accepts a 'scope' parameter to filter results to only tables/views defined in that scope.
Output schema not documented for any tool. LLMs cannot infer what fields to expect from list_tables, get_metadata, or execute_query responses, forcing them to guess at downstream field names and risk broken chaining.
execute_query accepts free-form SQL with no input validation, sanitization, or constraint documentation. LLMs can pass malicious SQL (injection attacks) or resource-exhausting queries without guidance. Missing: enum constraints, length limits, or validation rules in parameter description.
No error handling guidance. Tools provide no recovery hints. If execute_query fails (e.g. syntax error, permission denied, timeout), LLM has no actionable next step. Description lacks 'What does it return?' and 'What errors can occur?'
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 45 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 36 | - | v1 |
Parameter descriptions are incomplete or vague. 'scope' in list_tables is described adequately, but 'table_name' in get_metadata lacks format/constraint info. 'sql_query' in execute_query has a one-word description, LLMs need 'What dialect? Max length? What tables are available?'
No pagination or result limiting documented. If list_tables or execute_query return large result sets, they risk exhausting context. Missing: limit parameter, offset/cursor, total count, and a description stating 'Results are capped at N items.'
execute_query is marked WRITE risk but lacks destructive operation confirmation or dry-run support. An LLM can invoke DELETE, DROP, or UPDATE without warning. Missing: confirmation_required flag, dry-run parameter, or explicit irreversibility notice.
Database connection credentials injected from environment variables but not documented in tool descriptions. If env vars are missing, users will see cryptic connection errors. Missing: 'Requires env vars: DRSUM_HOST, DRSUM_USER, DRSUM_PASSWORD' in description.
get_metadata's 'sample_rows' parameter defaults to 3 but lacks justification. Minimum/maximum bounds not specified. Can LLMs pass 1000? Missing: '(min=1, max=100, default=3)' in parameter description.