Connects Claude directly to PostgreSQL databases through the Model Context Protocol, exposing read and write operations via SQL queries. You get table schema inspection, sample data retrieval, and direct query execution against any Postgres instance. Configure with a standard DATABASE_URL connection string and optionally enable write operations. Built for data analysis workflows where you need Claude to examine table structures, run SELECT queries, or perform database operations without switching contexts. Supports both stdio and HTTP transports, includes Docker setup with sample data, and handles SSL connections for cloud databases like AWS RDS.
A Model Context Protocol server for PostgreSQL databases. Enables LLMs to query and analyze PostgreSQL databases through a controlled interface.
https://github.com/user-attachments/assets/6571c20c-91c9-4a6e-8332-13b587b79fbf
Add to your MCP client settings:
{
"mcpServers": {
"postgres": {
"command": "npx",
"args": ["--yes", "pg-mcp-server", "--transport", "stdio"],
"env": {
"DATABASE_URL": "postgresql://postgres:postgres@localhost:5432/postgres"
}
}
}
}
DATABASE_URL - PostgreSQL connection string (required)DANGEROUSLY_ALLOW_WRITE_OPS - Enable writes (default: false)DEBUG - Enable debug logging (default: false)PG_SSL_ROOT_CERT - Optional path to a TLS CA bundle (e.g., AWS RDS global bundle)--transport flag./mcp on PORT (default 3000).http://localhost:3000/mcp.Start commands:
# stdio transport (default, via installed CLI)
pg-mcp-server --transport=stdio
# http transport
pg-mcp-server --transport=http
query - Execute SQL queries
{ "sql": "SELECT * FROM users WHERE active = true LIMIT 10" }
postgres://tables - List all tablespostgres://table/{schema}/{table} - Get table schema and sample dataHere's an example prompt to test if your MCP server is working:
Show me the first 5 users from the database
For data analysis and exploration, I've added a Cursor rule for using the MCP server together with notebooks in .cursor/rules/notebooks.mdc:
# Start PostgreSQL with sample data
bun run db:start
# Test with MCP Inspector
bun run inspector
# Stop PostgreSQL
bun run db:stop
Sample tables included: users, products, orders, order_items
# Clone and install
git clone https://github.com/ericzakariasson/pg-mcp-server.git
cd pg-mcp-server
bun install
# Run (stdio transport)
bun run index.ts -- --transport=stdio
DEBUG=true bun run index.ts -- --transport=stdio
# Run (http transport)
bun run index.ts -- --transport=http
DEBUG=true bun run index.ts -- --transport=http
bun test # Run tests
Use local build in MCP client settings:
bun run build:js
{
"mcpServers": {
"postgres": {
"command": "node",
"args": ["/absolute/path/to/pg-mcp-server/lib/index.js", "--transport", "stdio"],
"env": {
"DATABASE_URL": "postgresql://postgres:postgres@localhost:5432/postgres"
}
}
}
}
This repo auto-creates a GitHub Release when you push a tag that matches the version in package.json:
CHANGELOG.md and bump the version in package.json.main (or your release branch).VERSION=$(jq -r .version package.json)
git tag v"$VERSION"
git push origin v"$VERSION"
The GitHub Actions workflow will validate that the tag (e.g. v0.1.0) matches package.json, then use gh to create a release with generated notes, and publish to npm.
MIT - see LICENSE
hovecapital/read-only-local-postgres-mcp-server
cocaxcode/database-mcp
io.github.infoinlet-marketplace/mcp-mysql
io.github.cybeleri/database-admin
io.github.yash-0620/postgres-mcp-secured