An MCP server that provides PostgreSQL database access through Server-Sent Events (SSE) transport, enabling real-time communication with language models via LangChain and LangGraph.
Single tool 'list_tables' has a reasonable description (194 chars, within baseline 34-392 range) but CRITICAL flaw: zero input parameters documented in schema. The tool accepts no parameters (Input: {}), yet the description lacks any mention of filtering, pagination, or result limits. No output schema is documented, the return type 'list[tuple]' is mentioned in docstring but not formalized. No error handling guidance. Tool naming is acceptable (verb_noun pattern: 'list_tables'), but lacks pagination support despite returning potentially large result sets. Per-tool score capped at 32 due to missing schema formalization and absent output documentation.
Retrieve all base tables in non-system schemas from the PostgreSQL database. This tool provides a comprehensive list of user-created tables across different schemas, excluding system-level schemas.
No input schema defined. Tool accepts empty input {} but schema is not formally declared in tool registration. Cannot verify parameter types, constraints, or descriptions.
No output schema documented. Return type mentioned in docstring ('list[tuple]') but not formalized. LLM cannot predict response structure or plan downstream operations.
No pagination support. Tool returns all tables without limit or offset parameters. Large databases could return hundreds of tables, exhausting context window. Baseline: paginated tools accept limit/offset and return total_count.
No error handling guidance. Exception caught and logged as empty list []. LLM receives no actionable error message, cannot distinguish 'connection failed' from 'no tables exist'.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 32 | 2026-07-28+ | v2 |
Description lacks filtering/discovery context. Does not explain when to call this tool, what to do with results, or whether filtering by schema is possible. Baseline: 50-200 char descriptions should state WHAT, WHEN, and WHAT TO DO NEXT.