All reports

@yawlabs/postgres-mcp

io.github.YawLabs/postgres-mcp · version 0.13.10 · 2,184 weekly npm downloads · audited 2026-11-03

MCPVetter badge Notes

Findings

No hidden-instruction or invisible-character findings in any tool, prompt, or resource description.

Claude Connectors Directory readiness

Checks the directory's published tool requirements that are visible from tools/list. Passing them does not guarantee acceptance.

What this server's tools can do

Not a vulnerability by itself. It tells you what an injected prompt could ask this server to do, so you can decide which tools need approval.

Supply chain

Tools (23)

NameTitleHintDescription
pg_readonlyRun read-only SQLread-onlyRun a SQL statement with no persistent data changes. Always executes inside a `BEGIN READ ONLY` transaction regardless of `ALLOW_WRITES`, so postgres itself rejects any INSERT/UPDATE/DELETE/DDL and the transaction is alw…
pg_queryRun SQL querydestructiveRun a SQL query against the configured PostgreSQL database. Postgres itself is the primary safety gate: the role in `DATABASE_URL` enforces what queries can succeed. The recommended posture is a least-privileged role (e.…
pg_list_schemasList schemasread-onlyList non-system schemas in the database. Excludes `pg_catalog`, `information_schema`, and other `pg_*` internals.
pg_list_tablesList tables in a schemaread-onlyList tables (and optionally views) in a schema. Returns name, type (table/view/materialized view/foreign), and estimated row count (from `reltuples`; null = no ANALYZE yet on PG 14+; 0 may mean empty or unanalyzed on PG …
pg_describe_tableDescribe tableread-onlyDescribe a relation: kind (table / view / materialized_view / partitioned_table / foreign_table), columns (name, type, nullable, default, `generated`, `identity`), primary key, foreign keys (outgoing), `referenced_by` (o…
pg_list_viewsList views with definitionsread-onlyList views and materialized views in a schema with their SQL definitions. Use this over `pg_list_tables` with `includeViews: true` when you want the view body, not just names.
pg_list_functionsList functions and proceduresread-onlyList functions, procedures, and aggregates in a schema. Returns name, arguments, return type, kind (function/procedure/aggregate/window), and implementation language.
pg_list_extensionsList installed extensionsread-onlyList installed PostgreSQL extensions. Returns name, version, schema, and description. Useful to check for pgvector, postgis, pg_stat_statements, uuid-ossp, etc. before writing queries that rely on them.
pg_search_columnsSearch columns by nameread-onlySearch for columns by name across all user schemas. Supports SQL LIKE patterns (`%` matches any substring, `_` matches one character). Case-insensitive. Use this instead of iterating `pg_describe_table` when the user ask…
pg_explainExplain query plandestructiveGet the query plan for a SQL statement. By default, this uses plain EXPLAIN (no execution). Set `analyze: true` to run the query with EXPLAIN ANALYZE - for non-SELECT statements, ALLOW_WRITES=1 is required (since ANALYZE…
pg_index_advisorRecommend indexes for a workloadread-onlyRecommend indexes for a workload, and prove each one pays for itself before recommending it. Give it `statements` (the SQL you care about) or let it take the top N from `pg_stat_statements`; it plans each statement, gene…
pg_healthDatabase health snapshotread-onlyQuick health snapshot: server version, database size, connection counts measured against `max_connections`, active queries with their wait events, a pg_stat_database rollup, and table count. Useful as a connection sanity…
pg_top_queriesTop queries by execution timeread-onlyTop N queries by total or mean execution time. Requires the `pg_stat_statements` extension to be installed and enabled (most managed Postgres providers have it on by default). Returns `{rows, stats_reset, stats_reset_age…
pg_seq_scan_tablesFind tables with heavy sequential scansread-onlyTables with high sequential-scan counts relative to index scans - the first place to look for missing-index candidates. Returns `{rows, stats_reset, stats_reset_age_seconds}`: each row has seq_scans, idx_scans, live tupl…
pg_unused_indexesFind unused indexesread-onlyIndexes that have never been scanned or have very low usage, largest first. Each unused index costs write amplification (every INSERT/UPDATE maintains it) and disk space, so before adding a new index, check whether the f…
pg_io_statsI/O statistics and in-flight async I/Oread-onlyI/O observability: cumulative per-backend-type I/O from `pg_stat_io` (PostgreSQL 16+), plus in-flight asynchronous I/O handles from `pg_aios` (PostgreSQL 18+). This is the layer underneath `pg_top_queries` and `pg_health…
pg_inspect_locksInspect blocking locksread-onlyShow current lock contention: which sessions are blocked and who is blocking them. Returns blocked PID, blocking PID, lock types, relation being contested, and the queries involved. Use this first when a tool call hangs …
pg_list_rolesList rolesread-onlyList database roles (users and groups) with their login/superuser/createdb/createrole attributes and inherited role memberships. Use this to answer 'who has access to this database?' without needing to read `pg_authid` d…
pg_table_privilegesShow table privilegesread-onlyShow which roles have which privileges (SELECT, INSERT, UPDATE, DELETE, TRUNCATE, REFERENCES, TRIGGER) on a table or on every table in a schema. If `table` is omitted, the result spans every table in `schema`, ordered by…
pg_killCancel or terminate a backenddestructiveCancel a running query (SIGINT-equivalent) or terminate a backend connection (SIGTERM-equivalent) by PID. Find the PID via `pg_health` active_queries or `pg_inspect_locks`. Requires ALLOW_WRITES=1 since this changes data…
pg_replication_statusReplication statusread-onlyReplication overview: configured replication slots, connected replicas (from `pg_stat_replication`), and current WAL position. Use on primary to spot lagging or disconnected replicas, on replicas to see upstream status. …
pg_advisorDatabase advisor (DBA lints)read-onlyRolled-up DBA lint pass. One call returns four categories of findings: - sequence_exhaustion: SERIAL / BIGSERIAL / IDENTITY sequences whose `last_value` is above `seqExhaustionThreshold` of `max_value`. The classic incid…
pg_table_bloatEstimate table bloatread-onlyEstimate table bloat (dead tuples + free space) for tables in a schema. Returns live tuples, dead tuples, dead-tuple ratio, last_vacuum / last_autovacuum timestamps, and total relation size. A high dead_ratio with a stal…

Check your own setup

npx mcpvetter scan --live

Badge

Add this to a README:

[![MCPVetter](https://mcpvetter.com/badge/yawlabs-postgres-mcp.svg)](https://mcpvetter.com/servers/yawlabs-postgres-mcp)

Publish this server?

Get the MCPVetter verified badge, a re-audit within 24 hours of every npm release, and an email whenever tools, findings, or Claude directory readiness change. $29 per server per month. You prove ownership first, free.