PostgreSQL (hardened, read-only) runs on your own machine — the client starts it, so there is no endpoint to ping. 159 installs a week from npm. Last commit 5 Sep 2026.
Read-only PostgreSQL over MCP. Writes refused at the parsed SQL, plus a READ ONLY transaction.
We read the source, 21 h ago · rules 3dff92dd89df
Things with no honest explanation: a promise that contradicts the code, code that runs at install time while hiding what it does, data leaving the machine.
const child = spawn(bin, process.argv.slice(2), { stdio: 'inherit' });
What this server is able to do. For an MCP server this is often the job itself — a terminal server runs commands because that is what it is for. Listed so you know what you are plugging in, not as an accusation.
postinstall: node scripts/postinstall.js
этот файл ставится пользователю, но в репозитории его нет
const child = spawn(bin, process.argv.slice(2), { stdio: 'inherit' });
return path.join(__dirname, '..', 'vendor', exe);
Is this your server and something here is wrong? Tell us — corrections are free and do not require a plan.
Code changes quietly between releases, and nobody reads the diff of a dependency. We do, on every release — watch PostgreSQL (hardened, read-only) and you get told the day something new turns up.
This server runs on your own machine — install it with the package manager and the client starts it for you. Package name taken from the official registry entry.
claude mcp add postgres-mcp-hardened -- npx -y postgres-mcp-hardened
{
"mcpServers": {
"postgres-mcp-hardened": {
"args": [
"-y",
"postgres-mcp-hardened"
],
"command": "npx"
}
}
}
[mcp_servers.postgres-mcp-hardened]
command = "npx"
args = ["-y", "postgres-mcp-hardened"]
{
"mcpServers": {
"postgres-mcp-hardened": {
"args": [
"-y",
"postgres-mcp-hardened"
],
"command": "npx"
}
}
}
{
"mcpServers": {
"postgres-mcp-hardened": {
"args": [
"-y",
"postgres-mcp-hardened"
],
"command": "npx"
}
}
}
This one needs environment variables set before it will start:
DATABASE_URL (Connection 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_TIMEOUT (Server-side statement timeout, e.g. `5s`. A question that would pin the database is cancelled by PostgreSQL, not by hope.), MCP_ALLOW_TABLES (Comma-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_LOG (Path 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.).
The author declared them in the registry entry; get the values from the project itself.
Read-only SQL querying + schema introspection over Postgres & SQLite, with a gated write mode.
PostgreSQL, MySQL, and SQL Server in one session. 26 read-only MCP tools for AI agents.
PostgreSQL MCP wrapper with .env credential mapping, tool selection, and safe read-only defaults.
Fail-closed, read-only PostgreSQL and MongoDB access for AI agents over MCP.
Generate, fix, explain and run read-only SQL on PostgreSQL, MySQL and SQL Server
Database MCP server for MySQL, MariaDB, PostgreSQL & SQLite with PII redaction and write-prevention
Production-grade PostgreSQL MCP server — 254 tools for query, tuning & ops, read-only by default.
MCP server for one MySQL database: schema, read-only queries and guarded writes.
Answers built from our own checks of this server.