A local security proxy MCP server for Neon's serverless Postgres API — default-deny, policy-enforced AI branch access.
Six tools with clear verb-noun naming (list_*, create_*, delete_*, reset_*, get_*) and detailed descriptions (100-200 chars each). All tools have input schemas with typed parameters and descriptions. Security-focused design with guard helpers and provenance tracking. Gaps: no output schemas documented, no pagination support, no error recovery guidance, no tool annotations (readOnlyHint/destructiveHint). Per-tool average: 72.
Create an isolated TEST branch off the enforced parent branch. The branch name is the configured prefix plus the validated suffix. Data is schema-only or full per policy, and the branch may carry an expiry. Subject to the configured per-project branch cap. Returns the new branch id, name, readiness, parent name, data mode, and expiry.
Delete a guard-created test branch (soft delete by default). Only branches created by this proxy may be deleted. The default branch and protected branches cannot be deleted. Returns the operation details.
Mint a connection URI for a guard-created branch. The URI embeds a live password and is a secret; it is never logged. Returns the full postgresql:// URI ready to use.
List branches of an allowed project with their guard provenance. Each entry reports id, name, parent_id, default, protected, and created_by_guard (whether this proxy created the branch).
List the Neon projects this proxy is permitted to operate on. Returns each allowed project's id and name (the intersection of the configured allow-list with the projects visible to the API key).
No output schemas documented. LLMs cannot infer response structure (fields, types, nesting). Clients must guess what list_safe_projects returns.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). LLMs cannot distinguish safe reads from destructive writes without parsing descriptions.
No pagination support. list_safe_projects and list_safe_branches lack limit/offset/cursor parameters and total_count in responses. Large result sets will blow context.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 58 | <=2025-11-25 | v2 |
Reset a guard-created test branch to the state of the enforced parent. Only branches created by this proxy may be reset. Returns the operation details.
Error handling lacks recovery guidance. ToolError messages are generic ('project is not allowed', 'branch not found'). No hints on next steps or available alternatives.
Parameter descriptions lack format/constraint details. 'name_suffix' says 'will be prefixed and validated' but does not state the regex pattern or length limits in the description itself.