A Model Context Protocol (MCP) server that provides comprehensive PostgreSQL database management capabilities for AI assistants
Server has 19 tools with mixed quality. Naming is generally verb-based (pg_get_*, pg_create_*, pg_manage_*), but many tools lack visible input schemas in source code. Only 3 tools (pg_get_indexes, pg_create_index, pg_execute_sql) have complete, inspectable schemas. Most tool descriptions are present but generic (10-50 chars), falling below the 50-200 char LLM-optimized baseline. Critical issue: 16 of 19 tools have no visible schema definitions in provided source, only tool names and brief descriptions. Error handling exists (sanitizeErrorMessage, audit events) but recovery guidance is absent from tool descriptions.
Analyze database structure and performance
Copy data between databases
Create a new index on a table
Debug database issues and performance
Execute INSERT, UPDATE, or DELETE mutation
Execute a SELECT query
Execute arbitrary SQL
Export table data to file
16 of 19 tools lack visible input schemas in source code. Only pg_get_indexes, pg_create_index, and pg_execute_sql have inspectable JSON Schema definitions.
Tool descriptions are generic and under 50 characters (e.g., 'Manage PostgreSQL functions', 'Debug database issues'). LLM-optimized descriptions should be 50-200 chars, explaining WHAT, WHEN, and WHY. Current descriptions lack context for tool selection.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 42 | 2026-07-28+ | v2 |
List indexes with size and usage statistics
Import table data from file
Manage database object comments
Manage database constraints
Manage PostgreSQL functions
Manage and optimize queries
Manage Row Level Security policies
Manage database schemas
Manage database triggers
Manage database users and roles
Monitor database performance and health
No parameter descriptions visible for 16 tools. Even pg_create_index's 'where' parameter lacks guidance on structured vs raw SQL. LLMs cannot infer parameter meaning from names alone, every param needs a description explaining format, constraints, and valid values.
pg_execute_sql accepts arbitrary SQL with no input validation visible. Tool description does not warn of destructive risk or require confirmation. Irreversible operations should support dry-run or confirmation patterns.
Tool descriptions do not indicate which tools are read-only vs destructive. LLMs need explicit state-change warnings. E.g., 'Modifies database' or 'Read-only' should appear in descriptions for tools marked WRITE/DESTRUCTIVE.