Postgres MCP
UnclaimedRead-only-by-default MCP server for PostgreSQL. Query, introspect schemas, explain plans, health checks.
Set up this server
01 / Choose your client
02 / Before you connect
Authentication is not specified. Check the project instructions before connecting.
Project instructions03 / Add the configuration
claude mcp add --transport stdio 'yawlabs-postgres-mcp' -- 'npx' '-y' '@yawlabs/postgres-mcp@latest'04 / Check it in your client
Open your client’s MCP settings and confirm the server connects and lists its tools. A copied configuration does not confirm a working connection.
More in Databases
Browse the full directoryUnclaimed listing
Is this your MCP server?
This listing was auto-indexed from the public record. Claim it to edit the page, set compatibility and unlock growth tools. Takes under two minutes.
Claim this serverSecurity profile
Claimed and verified servers get a weekly static scan that shows what the code can reach: external services, environment variables, shell commands, agent configuration folders, plus any dependencies with known advisories. Claim this listing to get one. How the security profile works
23 of 23 tools
Documented tools (23)
From project documentation. A server handshake does not verify each tool’s description or behavior.
pg_advisor
Rolled-up DBA lints in one call: sequence-exhaustion candidates, wraparound risk for both counters (per-database and per-table age(relfrozenxid) against autovacuumfreezemaxage, and mxidage(relminmxid) against autovacuummultixactfreezemaxage -- a lock-heavy workload can exhaust multixacts while xids
pg_describe_table
Kind, columns, PK, outgoing FKs, incoming FKs (referencedby), CHECK / UNIQUE / EXCLUDE constraints, indexes, and partition parent/children for a relation. Generated and identity columns are flagged (generated, identity, generationexpression) so an agent doesn't try to write to them. Constraints carr
pg_explain
EXPLAIN or EXPLAIN ANALYZE for a SQL statement. Text or JSON output. Planner options: buffers (on by default with analyze), settings, verbose, wal, costs, timing, plus genericplan (PG16+, plan a parameterized query with no values) and memory / serialize (PG17+). Optional hypotheticalindexes (require
pg_health
Server version, database size, connections against maxconnections, active queries with wait events and transaction age, pgstatdatabase rollup (deadlocks, temp files, cache hit ratio), table count.
pg_index_advisor
Recommend indexes for a workload and prove each one pays for itself first. Takes statements you pass or the top N from pgstatstatements, harvests candidate columns from what the planner reports as filters / join keys / sort keys (no SQL parser - every token is intersected with the real pgattribute c
pg_inspect_locks
Who is blocking whom right now (blocked PID, blocker PID, lock type, queries).
pg_io_stats
I/O observability: pgstatio read/write/extend/fsync counts, bytes and times per backend type and context (PG16+), plus in-flight async I/O handles from pgaios and the active iomethod (PG18+).
pg_kill
Cancel a running query or terminate a backend connection. Requires ALLOWWRITES=1.
pg_list_extensions
List installed extensions (pgvector, postgis, pgstatstatements, etc.) with versions.
pg_list_functions
List functions, procedures, and aggregates in a schema with signatures and return types.
pg_list_roles
Database roles with login/superuser/createdb flags and group memberships.
pg_list_schemas
List non-system schemas.
pg_list_tables
List tables (and optionally views) in a schema with estimated row counts. Paginated via limit/offset.
pg_list_views
List views and materialized views in a schema, including their SQL definitions.
pg_query
Run a SQL query. Writes gated by the role in DATABASEURL first, ALLOWWRITES second. Supports parameterized queries via params. Result fields include dataTypeName (e.g. int4, jsonb) alongside dataTypeID.
pg_readonly
Run a SQL statement with no persistent data changes - always inside BEGIN READ ONLY, regardless of ALLOWWRITES. The recommended tool for read access, and the one to auto-allow; pair it with a least-privileged role (why).
pg_replication_status
Replication slots, connected replicas, and current WAL position.
pg_search_columns
Find columns by name pattern across all user schemas. Case-insensitive, supports SQL LIKE wildcards.
pg_seq_scan_tables
Tables with heavy sequential scans - missing-index candidates. Returns the statsreset window alongside the rows, since the counters mean nothing without it. lastseqscan / lastidxscan on PG16+.
pg_table_bloat
Tables with high dead-tuple ratios - VACUUM candidates.
pg_table_privileges
Who has SELECT/INSERT/UPDATE/DELETE/etc. on a table or whole schema.
pg_top_queries
Top N queries by total/mean execution time. Requires the pgstatstatements extension. Returns statsreset (from pgstatstatementsinfo, a different clock from the other stats tools) and dealloc on extension 1.9+ - a non-zero dealloc means entries were evicted past pgstatstatements.max, so the ranking is
pg_unused_indexes
Non-unique, non-primary indexes with low scan counts - drop candidates. Also returns statsreset: a recently reset counter makes every index look unused, which is how a load-bearing index gets dropped. lastidxscan on PG16+.
Tool change history
FAQ
Questions about Postgres MCP Server
- How do I connect Postgres MCP Server to Claude?
- Run `claude mcp add yawlabs-postgres-mcp -- npx -y @yawlabs/postgres-mcp@latest` in Claude Code, or add the same command and arguments under mcpServers in Cursor's mcp.json or Claude Desktop's claude_desktop_config.json, then restart the client. The blocks above are ready to paste.
- Is Postgres MCP Server free?
- The listed licence is MIT. Check the upstream terms for permitted use and commercial requirements; a public repository does not by itself mean the software is free or open source. Connected APIs and hosted services may have separate charges.
- What can Postgres MCP Server do?
- Postgres MCP Server documents 23 tools to the agent, including pg_advisor, pg_describe_table, pg_explain. The descriptions above come from project documentation. A live handshake does not test individual tool behavior.