PostgreSQL (hardened, read-only)
Read-only PostgreSQL over MCP. Writes refused at the parsed SQL, plus a READ ONLY transaction.
The current version, v0.1.10, was published to the official MCP registry on 2026-09-04. It is distributed as postgres-mcp-hardened on npm and as the Docker image ghcr.io/eszetael/postgres-mcp-hardened:0.1.10, filed under Databases by this index, and declares 5 environment variables. Removals and unreachable sources are measured across every server this index tracks, contract drift across the servers that answer in consecutive snapshots; the index's current counts put this record in context.
Using PostgreSQL (hardened, read-only) in Claude, Cursor, Gemini CLI, Cline, or Zed?
MCP tool contracts can change remotely with no version bump. The mcpindex gate pins each contract and HOLDs the call when it drifts-before your agent acts. Zero credentials. This is not the package install for this server itself (use Install this server for that).
Rewrites your MCP host config so each server launches behind the gate. Inspect first: curl -fsSL https://mcpindex.ai/install.sh | less
uv tool install mcpindex-gate && mcpindex-config-wireSemantic screen found no manipulation pattern in the description. Conformance probe not yet run.
mcpindex.integrity.descriptionpassINFOevidence“Read-only, no writes or data exfiltration mentioned”via static_description
- - Semantic screen only - the deterministic conformance probe has not run on this server
- - Confidence is reported but not yet calibrated (v1)
- - Screen reads the tool description, not the live behavior
- - advisory
- - registry description only no input schema
- - screen model 8b
- - Still current: the description we screened is unchanged, re-checked against the registry
- - The registry listing (version, packages, links) changed after this screen ran - the description we assessed did not
Semantic screen: an LLM judge reads the tool description for hidden instructions (status PARTIAL). A pass means the description is not lying, not that the tool is safe: a high-capability tool with an honest description still warrants caution. The deterministic conformance probe has not been run on this server yet, so the screen here is semantic-only. Posture: advisory. Confidences are reported but not yet calibrated (calibrated=false at v1). Full verdict history is not shown on this page.
Own this server? Screen its description →
That verdict was true at screening time (snapshot 2026-09-24).
Contracts can change after screening, with no version bump. The gate pins PostgreSQL (hardened, read-only)’s tool contracts on first sight and holds any silent change before your agent acts - the check that keeps being true on Tuesday.
See your first HOLD in 2 minutes →
Related: how to trust an MCP server · screen before install · silent contract drift
People vet a server before wiring it in. One line on your project site or docs answers that with an independent record: screening verdict, registry provenance, contract drift history. It stays current as new screens and drift events land.
[Independent trust record for PostgreSQL (hardened, read-only)](https://mcpindex.ai/server/io-github-eszetael-postgres-mcp-hardened) - screening verdict, registry provenance, and contract drift monitoring.<a href="https://mcpindex.ai/server/io-github-eszetael-postgres-mcp-hardened">Independent trust record for PostgreSQL (hardened, read-only)</a> - screening verdict, registry provenance, and contract drift monitoring.A live verdict badge for your README or listing. It reflects the current screen, links back here, and updates when the verdict does.
[](https://mcpindex.ai/server/io-github-eszetael-postgres-mcp-hardened)<a href="https://mcpindex.ai/server/io-github-eszetael-postgres-mcp-hardened"><img src="https://mcpindex.ai/api/v1/badge/io-github-eszetael-postgres-mcp-hardened" alt="mcpindex verdict" height="20" /></a>DATABASE_URLConnection string for the role the server connects as. Use a role that cannot write — the server refuses writes twice, but a read-only role is the layer that does not depend on us being correct. `--print-setup-sql` prints the SQL that creates one.
MCP_STATEMENT_TIMEOUTServer-side statement timeout, e.g. `5s`. A question that would pin the database is cancelled by PostgreSQL, not by hope.
MCP_ALLOW_TABLESComma-separated allowlist. A table off the list is refused by name, and hiding it inside a CTE, a view or a join does not help.
MCP_AUDIT_LOGPath to the tamper-evident audit log. Entries are chained by hash and survive a restart; `--verify-audit` checks the chain against an off-host anchor.
DATABASE_URLConnection string for a role that cannot write.
MCP_ADDRAddress to bind, default 127.0.0.1:8080.
Official Neon MCP server for managing Neon projects and Lakebase Postgres databases.
Provision PostgreSQL, manage Apache Kafka, and deploy apps with Aiven - all from your AI assistant.
PostgreSQL database administrator with serverless query routing.