MCP server for Azure Database for PostgreSQL - Flexible Server. Exposes tools for database management, querying, schema inspection, and server configuration.
Server has 8 tools with basic schemas and descriptions, but significant quality gaps. All tools have descriptions (10-60 chars, mostly short), and input schemas are present with type definitions. However, descriptions are generic and lack actionable context for LLM selection. No output schemas documented. Error handling returns empty strings on failure with no recovery guidance. No parameter validation constraints (enums, ranges). Tool names are clear (verb_noun pattern), but descriptions don't explain WHEN to use each tool or what distinguishes similar operations (e.g., update_values vs create_table). No tool annotations (readOnlyHint, destructiveHint). Security concern: SQL injection risk, tools accept raw SQL strings without sanitization or validation.
Creates a table in a database.
Drops a table in a database.
Gets the list of all the databases in a server instance.
Gets schemas of all the tables.
Gets the configuration of a server instance. [Available with Microsoft EntraID]
Gets the value of a server parameter. [Available with Microsoft EntraID]
No output schemas documented. Tools return JSON strings with 'columns' and 'rows' fields, but LLMs cannot plan downstream calls without knowing the structure. Missing documented return types violates pattern:tool.
SQL injection vulnerability. Tools accept raw SQL strings (dbname, s parameters) without validation, sanitization, or parameterized queries. LLMs can be tricked into passing malicious SQL. Violates pattern:tool-gateway.
Error handling returns empty strings on exception. No recovery guidance, error classification, or actionable messages. LLMs cannot determine if error is retryable, user-fixable, or fatal. Violates pattern:recovery-guide.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 52 | <=2025-11-25 | v2 |
Runs read queries on a database.
Updates or inserts values into a table.
Destructive operations (drop_table, update_values) lack confirmation or dry-run support. No tool annotations (destructiveHint). Agents can accidentally drop tables without safeguards. Violates pattern:confirmation-request.
Descriptions are too short (25-40 chars) and lack context. 'Updates or inserts values into a table' doesn't explain when to use update_values vs create_table, or what SQL syntax is expected. Violates pattern:tool-description baseline (10-1024 chars, optimal 50-200).