Model Context Protocol server for PostgreSQL database operations
Server has 23 tools with basic schemas and descriptions, but significant gaps limit production readiness. Most tools have descriptions (good), but many are generic or under-specified. Parameter descriptions exist but lack detail on constraints, formats, and valid ranges. No tool annotations (readOnlyHint/destructiveHint) despite clear risk levels. Output schemas are not documented, LLMs cannot predict response structure. Error handling is minimal; no recovery guidance. Naming is generally clear (verb_noun pattern), but some tools like 'execute_raw_query' expose dangerous functionality without adequate safeguards.
Alter table structure (add/drop columns, modify constraints)
Run ANALYZE on a table to update statistics
Check if a column exists in a table
Count rows in a table with optional WHERE clause
Create an index on one or more columns
Create a new table with specified columns and constraints
Delete rows from a table with optional dry_run preview
Output schemas not documented. LLMs cannot predict response structure (fields, types, pagination). Tools like describe_table, get_schema, list_tables return complex nested objects with no schema definition visible in code.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear risk levels. Tools marked DESTRUCTIVE (delete_data) and IRREVERSIBLE (create_table, alter_table) lack machine-readable hints to guide agent behavior.
Parameter descriptions lack constraint details. 'columns' in create_table, 'where' in count_rows, and 'params' in execute_raw_query have minimal guidance on format, structure, or valid values. LLMs cannot validate input without explicit constraints.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 54 | 2026-07-28+ | v2 |
Get detailed information about a table including columns and indexes
Drop an index from a table
Execute a raw SQL query with optional parameters
Get the current database connection status and PostgreSQL version
Get foreign key relationships for a table
Get all indexes for a table
Get the status of the cached AWS RDS certificate
Get the schema definition for a table
Get a sample of rows from a table
Get statistics about a table including row count and size
Insert one or more rows into a table
List all tables in the current database
Execute a SELECT query and return results
Check if a table exists in the database
Update rows in a table with optional dry_run preview
Run VACUUM on a table to reclaim storage
execute_raw_query exposes SQL injection risk. No validation, parameterization guidance, or security warnings in description. Agents can be tricked into passing malicious SQL.
No error recovery guidance. Tools lack descriptions of failure modes, retryability, or next steps. E.g., 'table_exists' returns boolean but no guidance on what to do if false; 'insert_data' has no error message format documented.