A Model Context Protocol server that provides tools for interacting with PostgreSQL databases, including schema inspection, table creation/alteration, and SQL query execution.
This server has critical definition gaps. Tool descriptions are present but minimal (10-50 chars, well below the 194-char baseline). Most parameters lack descriptions entirely, only 'name' and 'query' params have any text. No output schemas are documented. Tool naming is inconsistent: 'read_query', 'run_sql_query', and 'write_query' are near-duplicates that confuse intent. No error handling guidance. SQL injection risk is unmitigated, raw query parameters invite prompt injection attacks. The server exposes destructive operations (delete_query) without confirmation or permission gates.
Alter an existing table in the Postgres database. Note: Will not drop existing tables or columns.
Create a new table in the Postgres database
Execute a delete SQL query
Describe the structure of a table
Get the complete schema for all tables in the database, including column details
List all databases in the Postgres database
List all tables in the Postgres database. Optionally filter by name.
Duplicate/overlapping tool names: 'read_query', 'run_sql_query', and 'write_query' all accept arbitrary SQL. LLMs cannot distinguish when to use each. Consolidate into single parameterized tools or clearly document the difference.
No output schemas documented. LLMs cannot plan downstream calls or extract structured data. Every tool must declare what fields it returns.
SQL injection vulnerability: 'query' parameters accept raw SQL strings with no sanitization or parameterization. Agents can be tricked via prompt injection into passing malicious payloads. Use parameterized queries or validate/escape all input.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 44 | 2026-07-28+ | v2 |
Execute a read-only SQL query
Execute a SQL query
Execute an update SQL query
Execute a write SQL query (INSERT)
Destructive operations (delete_query) lack confirmation or permission gates. No dry-run support. Agents can permanently delete data without safeguards.
Minimal parameter descriptions. Only 'name' and 'query' params have any text; others are undescribed. LLMs cannot infer what 'query' should contain or what constraints apply.