About Postgresql MCP
Postgresql MCP is a PostgreSQL MCP server for AI clients that need database queries, writes, transactions, and schema inspection. It supports standard PostgreSQL connection strings and offers an optional read-only mode.
Key features
- 01Read and write SQL tools
- 02Atomic multi-statement transactions
- 03Table and schema inspection
- 04Optional read-only mode
- 05Standard PostgreSQL connection strings
Use cases
- 01Query PostgreSQL data from an AI client
- 02Apply database changes with SQL
- 03Run grouped updates with rollback on failure
- 04Inspect tables before working with a schema
MCP support
The server exposes query, execute, transaction, schema, and list_tables tools to MCP clients. Read-only mode disables execute and transaction while leaving query and inspection tools available.
Configuration
Local server config is the same for every client. Copy it into your client’s MCP config file.
Tools
5Saved tool list · updated 3w ago
| Parameter | Type | Required | Description |
|---|---|---|---|
| sql | string | Yes | The SQL SELECT query to execute |
Details
From the project READMEpostgresql-mcp
A Model Context Protocol (MCP) server for PostgreSQL with full read-write support, atomic transactions, and schema inspection. Works with Claude Desktop, Cursor, Windsurf, and any MCP-compatible AI client.
Connect any PostgreSQL database — local, Supabase, AWS RDS, or self-hosted — to your AI assistant in seconds.
Features
- Full read-write SQL access (
SELECT,INSERT,UPDATE,DELETE,CREATE,DROP) - Atomic multi-statement transactions with automatic rollback on failure
- Schema inspection: columns, types, nullability, defaults, primary keys
- Optional read-only mode via
?mode=readonly - No cloud lock-in — works with any standard PostgreSQL connection string
- Single file, minimal dependencies
Why this exists
There are two other PostgreSQL MCP servers worth knowing about, and neither fully covers the general-purpose use case:
Anthropic's official @modelcontextprotocol/server-postgres is strictly read-only — it exposes only a single query tool that runs inside a READ ONLY transaction. No writes, no DDL, no transactions. It was also deprecated and archived in July 2025.
Microsoft's azure-postgresql-mcp does support writes and DDL, but it is built specifically for Azure Database for PostgreSQL Flexible Server. While it technically accepts standard PG* environment variables (so a local connection may work), local use is untested and unsupported. Several tools require Microsoft Entra authentication and Azure-specific APIs that won't function outside Azure. It also pulls in Azure SDK dependencies you don't need for a non-Azure setup. It is currently in Preview.
This server is the alternative for everything else: local PostgreSQL, self-hosted, Supabase, RDS, or any standard PostgreSQL instance. It is a single dependency-light file with no cloud lock-in, full read-write support, atomic multi-statement transactions, and an optional ?mode=readonly flag when you want to restrict access.
Requirements
- Node.js 18+
- A running PostgreSQL database
Installation
npm install -g @sarmadparvez/postgresql-mcp
Or run directly without installing (requires npm 7+ / Node.js 18+):
npx @sarmadparvez/postgresql-mcp <postgresql-connection-string>
Usage
postgresql-mcp <postgresql-connection-string>
Examples:
# Read-write access
postgresql-mcp postgresql://user:pass@localhost:5432/mydb
# Read-only mode (disables execute and transaction tools)
postgresql-mcp postgresql://user:pass@localhost:5432/mydb?mode=readonly
Or with npx (requires npm 7+ / Node.js 18+):
npx @sarmadparvez/postgresql-mcp postgresql://user:pass@localhost:5432/mydb
npx @sarmadparvez/postgresql-mcp postgresql://user:pass@localhost:5432/mydb?mode=readonly
Tools
| Tool | Available in | Description |
|---|---|---|
query | Always | Execute a read-only SELECT query. Runs inside a READ ONLY transaction. Returns rows as JSON. |
execute | Read-write mode | Execute a write SQL statement (INSERT, UPDATE, DELETE, CREATE, DROP, etc.). Returns rows affected. |
schema | Always | List columns, types, nullability, defaults, and primary keys for tables in a given schema. Optionally filter to a specific table. |
list_tables | Always | List all base tables in a schema with their disk size. |
transaction | Read-write mode | Execute multiple SQL statements atomically. Rolls back all statements if any one fails. |
Read-Only Mode
Append ?mode=readonly to the connection string to start the server in read-only mode. This disables the execute and transaction tools, leaving only query, schema, and list_tables.
Claude Desktop Configuration
First, install the package globally:
npm install -g @sarmadparvez/postgresql-mcp
Then find the paths to node and the installed script:
which node
# e.g. /usr/local/bin/node
# nvm users: /Users/yourname/.nvm/versions/node/v22.12.0/bin/node
npm root -g
# e.g. /usr/local/lib/node_modules
# nvm users: /Users/yourname/.nvm/versions/node/v22.12.0/lib/node_modules
Add this to your claude_desktop_config.json:
- Replace
commandwith the output ofwhich node - Replace the prefix of the script path with the output of
npm root -g— the suffix/@sarmadparvez/postgresql-mcp/index.jsstays the same
{
"mcpServers": {
"postgres": {
"command": "/usr/local/bin/node",
"args": [
"/usr/local/lib/node_modules/@sarmadparvez/postgresql-mcp/index.js",
"postgresql://user:pass@localhost:5432/mydb"
]
}
}
}
For read-only access, append ?mode=readonly to the connection string:
{
"mcpServers": {
"postgres-readonly": {
"command": "/usr/local/bin/node",
"args": [
"/usr/local/lib/node_modules/@sarmadparvez/postgresql-mcp/index.js",
"postgresql://user:pass@localhost:5432/mydb?mode=readonly"
]
}
}
}
Compatible AI Clients
This MCP server works with any client that supports the Model Context Protocol:
- Claude Desktop (Anthropic)
- Cursor
- Windsurf
- Any other MCP-compatible client
Dependencies
@modelcontextprotocol/sdk— MCP server frameworkpg— PostgreSQL clientzod— Schema validation for tool inputs
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.