PG Bloat Detective
Überblick
Beschreibung vom Entwickler (englisches Original)
Read-only Postgres bloat verdicts: blockers, timelines, REINDEX proof.
Die drei Säulen von PopNx MCP
Diese drei werden nie zu einer Punktzahl zusammengefasst: Meinungen, Messungen und Beliebtheit sind verschiedene Dinge.
- Stimmen der NutzeriNoch keine BewertungenBewertungen starten in einem späteren Schritt zusammen mit Benutzerkonten
- Unsere Basischecksi1 von 1 bestandenAnhand öffentlicher Informationen geprüft; Code noch nicht gescannt
- NutzungiGanz neu↓ 30/Wo. · ★ –
Was du damit machen kannst
Für diesen Server haben wir noch keine Zusammenfassung in einfacher Sprache geschrieben. Unten stehen die Fakten, die wir aus der Registry gelesen haben.
- Verbindung: Läuft auf deinem Computer
- Transport: stdio
- Kategorie: Datenbanken & Datensätze
Installation
Wähle die KI-App, die du nutzt, und kopiere die Einstellungen.
Bevor du installierst
- Basischecks: 1 von 1 bestanden
- Läuft auf deinem Computer mit den Rechten deines Benutzerkontos (Dateien, Netzwerk, Apps).
- Das trägst du selbst ein:
BLOAT_DSN,BLOAT_DB
Du brauchst
- PyPIuv für Python installiert (für den Befehl uvx)
Welche App nutzt du?
Wähle oben deine App. Wir merken sie uns, damit der Button beim nächsten Mal „In … installieren“ anzeigt.
Öffne Claude Desktop → Settings → Developer → Edit Config und füge dies in claude_desktop_config.json ein
{
"mcpServers": {
"pg-bloat-detective": {
"command": "uvx",
"args": [
"pg-bloat-detective"
],
"env": {
"BLOAT_DSN": "your-value",
"BLOAT_DB": "your-value"
}
}
}
}Führe das in deinem Terminal aus
claude mcp add pg-bloat-detective --env BLOAT_DSN=your-value --env BLOAT_DB=your-value -- uvx pg-bloat-detectiveTrag die leeren Werte ein, bevor du ihn startest.
Oder kopier die Einstellungen selbst
In .cursor/mcp.json in deinem Projekt oder in ~/.cursor/mcp.json einfügen
{
"mcpServers": {
"pg-bloat-detective": {
"command": "uvx",
"args": [
"pg-bloat-detective"
],
"env": {
"BLOAT_DSN": "your-value",
"BLOAT_DB": "your-value"
}
}
}
}Dein Browser fragt, ob er die App öffnen darf, dann zeigt die App die Einstellungen und bittet dich um Bestätigung. Schlüsselwerte bleiben leer, damit du sie selbst einträgst.
Oder kopier die Einstellungen selbst
In .vscode/mcp.json in deinem Projekt einfügen
{
"servers": {
"pg-bloat-detective": {
"type": "stdio",
"command": "uvx",
"args": [
"pg-bloat-detective"
],
"env": {
"BLOAT_DSN": "your-value",
"BLOAT_DB": "your-value"
}
}
}
}Dein Browser fragt, ob er die App öffnen darf, dann zeigt die App die Einstellungen und bittet dich um Bestätigung. Schlüsselwerte bleiben leer, damit du sie selbst einträgst.
Dieser Server läuft auf deinem Computer, und ChatGPT kann sich nur mit Servern im Internet verbinden. Wähle eine andere App.
Deine Auswahl bleibt in einem Cookie auf diesem Gerät; kein Konto nötig.
Werte, die du selbst einträgst
BLOAT_DSNenvPostgres DSN (read-only enforced: 5s statement timeout, read-only tx)BLOAT_DBenvSQLite timeline file written by bloatdetective collect
Diese Einstellungen werden aus dem Registry-Eintrag des Entwicklers erzeugt. Wenn in der README etwas anderes steht, folge der README.
Was er kann
Läuft auf deinem Computer; die Tool-Liste erscheint nach der Installation in deiner KI-App.
Basischecksi
Wir prüfen Informationen, die jeder sehen kann; den Code haben wir nicht gelesen. Checks, die nicht zutreffen, werden nicht mitgezählt. · Geprüft am 8. Nov. 2026
- ✓ Bestanden
Entwickler passt zum Repo
Der Registry-Name wurde mit dem GitHub-Konto r69shabh bestätigt, dem das Repo gehört
- … Noch nicht geprüft
Wird noch gepflegt
Dieses Repo haben wir noch nicht von GitHub gelesen
- … Noch nicht geprüft
Hat eine Lizenz
Dieses Repo haben wir noch nicht von GitHub gelesen
- – Nicht zutreffend
Endpunkt antwortet
Dieser Server läuft auf deinem Computer; es gibt keinen Endpunkt im Internet
- – Nicht zutreffend
Anmeldung mit OAuth
Läuft auf deinem Computer und nutzt stattdessen lokale Einstellungen
- … Noch nicht geprüft
Keine versteckten Anweisungen in Tool-Beschreibungen
Läuft auf deinem Computer; Tool-Listen können wir nur von Endpunkten im Internet lesen
Im Vergleich mit anderen in Datenbanken & Datensätzei
- Mehr Sterne als 0 % der anderen 1144 Server in dieser Kategorie
- Neuer in der Registry veröffentlicht als 64 % der anderen 1144 Server in dieser Kategorie
- Basischecks gleich gut wie oder besser als bei 100 % der anderen 1144 Server in dieser Kategorie
Verglichen mit allen aktiven Servern dieser Kategorie in der Registry. Sterne zählen nur, wenn dem Herausgeber das Repo gehört.
Häufige Fragen
Ist PG Bloat Detective sicher?
Er hat 1 von 1 zutreffenden Basischecks bestanden. Den Code haben wir nicht gelesen. Bevor du einen Schlüssel oder Token hinzufügst, sieh nach, welche Zugriffe der Server verlangt, und nutze einen Schlüssel, der nur die Berechtigungen hat, die du brauchst.
Welche Schlüssel oder Codes braucht er?
Die Registry nennt keinen erforderlichen Schlüssel, manche Server bitten dich aber bei der ersten Nutzung, dich anzumelden.
Läuft er auf meinem Computer oder in der Cloud?
Er läuft auf deinem Computer. Deine KI-App startet ihn bei Bedarf, und die Daten laufen nicht über die Server des Entwicklers (außer der Server ruft selbst einen Onlinedienst auf).
Wird er noch gepflegt?
Das GitHub-Repo wurde zuletzt – geändert, und die neueste Version (0.1.6) kam vor 27 Tagen in die Registry.
Welche Apps können ihn nutzen?
Apps, die MCP unterstützen, etwa Claude Desktop, Claude Code, Cursor und VS Code. Außerdem brauchst du Python (uv) auf deinem Computer.
Was kann ich stattdessen nutzen?
In derselben Kategorie: Supabase, MongoDB MCP Server, Elasticsearch MCP Server
Alternativen
Server derselben Kategorie von anderen Entwicklern, sortiert nach Sternen.
So liest du eine Karte:↓ Downloads pro Wochei★ GitHub-SterneiDrei Säulen: Bewertungen · Checks · NutzungiAktualisiert = neueste Version in der Registry veröffentlichti
README vom Entwickler
README öffnen
Unverändert aus dem Repo des Entwicklers übernommen. PopNx MCP hat den Inhalt weder geprüft noch empfiehlt es ihn. HTML, Bilder und Skripte wurden entfernt. Links führen von dieser Website weg.
pg-bloat-detective — PostgreSQL Bloat Checker, Vacuum Blocker Finder & Index Bloat Detector
Find why your Postgres database is bloated, who is blocking VACUUM, and which indexes need REINDEX — read-only, with proof.
vacuum-starved·blocked-by-idle-xact·needs-rewrite·index-bloated·index-unused— one verdict per table/index, with PID + query evidence.
mcp-name: io.github.r69shabh/pg-bloat-detective
pip install pg-bloat-detective · Docker ready · MCP server for Claude/Cursor · Prometheus + Grafana · Next.js dashboard
pip install pg-bloat-detective # or: pip install -e ".[dev]" from source
python -m bloatdetective collect --db timeline.db # read-only snapshot (5s timeout) python -m bloatdetective analyze --db timeline.db # verdicts + evidence python -m bloatdetective report --db timeline.db --html --out report.html bloat-mcp # MCP server (stdio) for Claude Desktop / Cursor
What this is
A PostgreSQL bloat analysis tool that answers three questions other tools leave open:
- Is this table bloated, and why? — dead-tuple timeline (
pg_stat_user_tables) + exactpgstattuple_approxconfirmation. Verdicts:normal(leave it alone),vacuum-starved(autovacuum losing),blocked-by-idle-xact|slot|prepared|active-xact(named PID + query holdingbackend_xmin),needs-rewrite(approx dead% >30%, VACUUM can't reclaim).
- Who is blocking VACUUM / autovacuum? — oldest
backend_xminholder tracked per snapshot: PID, transaction age, query text, stale replication slots, prepared transactions. Priority: prepared-xact > stale-slot > idle-in-transaction. Kill one, VACUUM, done. - **Is the *index* bloated? (VACUUM never fixes this)** — exact
pgstatindexon indexes under a 1GB cost guard (tunable--max-bytes, override--allow-large), metric100 − avg_leaf_density. Over 30% →index-bloated, scheduleREINDEX. Zero scans across all snapshots →index-unused, DROP candidate. This is the gap pganalyze admits to — our differentiator, proven live: 83.7% → 9.9% after REINDEX while VACUUM did nothing.
One SQLite file = full timeline. One static page = the whole incident. No agents on prod, no writes (read-only transactions, statement timeout 5s), works on RDS / Neon / Supabase / self-hosted PG 12–17.
Quickstart (60-second demo)
docker compose up -d
pip install -e ".[dev]" python -m bloatdetective collect --db timeline.db # snapshot prod (read-only) python workload/churn.py --mode idle-xact --secs 60 & # create the failure python -m bloatdetective collect --db timeline.db python -m bloatdetective report --db timeline.db --html --out report.html python -m bloatdetective serve --db timeline.db & # :9187/metrics for Prometheus pytest bash scripts/benchmark.sh # full before/after proof -> REPORT.md
Verdicts (read them as instructions)
Heap: normal (steady-state, leave alone) · vacuum-starved → run VACUUM / tune autovacuum · blocked-by-idle-xact|slot|prepared|active-xact → end the named session, then VACUUM · needs-rewrite → pg_repack / VACUUM FULL. Index: index-bloated (pgstatindex bloat >30% → needs REINDEX, VACUUM can't fix it) · index-unused (idx_scan=0 across snapshots → DROP candidate, verify with pg_stat_statements first).
Index bloat is the differentiator (pganalyze admits the gap): collect runs exact pgstatindex only on indexes under the 1GB cost guard (--max-bytes tunes it, --allow-large overrides), metric = 100 − avg_leaf_density. Exported as pgbloat_index_bloat_pct / pgbloat_index_scans, charted in the shadcn dashboard, Graphed in Grafana.
Benchmark (measured 2026-10-05, local PG16 — heap + index, live run just now)
30s churn, no blocker (autovacuum simply lost) → VACUUM ANALYZE + REINDEX:
| moment | pg_stat dead | approx dead% | index bloat% (density) | verdict |
|---|---|---|---|---|
| before fix | 5,108,201 | — (single-snapshot lag) | 41.9% | vacuum-starved + index-bloated churn_pkey |
| after fix | 0 | 0.0% | 9.9% | normal — steady state, leave alone |
Earlier hole, now closed: an index at 83.7% bloat (density 16.3) dropped to 9.9% (density 90.1) after REINDEX — VACUUM alone never touches that. Full log in REPORT.md, visual in report.html.
See PLAN.md for the detailed 3-week plan + competitor gap.
MCP server (Claude Desktop / Cursor / any MCP client)
5 tools, read-only on Postgres (5s statement timeout, read-only tx). bloat_check returns verdict + evidence + fix per table/index; bloat_live_diagnose snapshots a throwaway DB so your timeline file is never touched — safest for prod DSNs.
pip install pg-bloat-detective # pulls mcp + psycopg
bloat-mcp # stdio transport (also: docker run -i pg-bloat-detective)
Claude Desktop (~/Library/Application Support/Claude/claude_desktop_config.json):
{"mcpServers": {"bloat-detective": {
"command": "/abs/path/pg-bloat-detective/.venv/bin/python", "args": ["-m", "bloatdetective.mcp_server"], "env": {"BLOAT_DSN": "dbname=bloatdemo user=postgres host=localhost port=5433", "BLOAT_DB": "/abs/path/pg-bloat-detective/timeline.db"}}}}
| tool | what the agent gets |
|---|---|
bloat_check | verdicts + evidence + action per table/index |
bloat_collect | snapshot timeline, return fresh verdicts |
bloat_timeline | dead/approx/index-bloat series — when it started |
bloat_blockers | pid + query + xmin age + slot — who to kill |
bloat_live_diagnose | one-shot throwaway snapshot, diagnose, discard |
Public listing: official MCP Registry (io.github.r69shabh/pg-bloat-detective) · mcp.so · awesome-mcp-servers (Databases).
Interfaces
- CLI —
collect | analyze | report [--html|--json] | serve [--port](this README's quickstart). - Dashboard — Next.js single-incident card at
dashboard/(report --jsonfeedsdata.json): verdict banner, dead-tuple + index-bloat charts, blockers + findings tables. - Prometheus + Grafana —
serveexposes:9187/metrics(pgbloat_dead_tuples,pgbloat_approx_dead_pct,pgbloat_index_bloat_pct,pgbloat_index_scans,pgbloat_xmin_holder_age_seconds);grafana/has dashboard JSON + provisioning,docker-compose.ymlwires pg → exporter → Prometheus → Grafana. - Docker —
Dockerfileruns the MCP server over stdio (docker run -i); compose adds the demo DB + observability stack.
FAQ (how people actually search for this)
- "postgres table bloated how to check" →
collecttwice,analyzeprints the verdict + dead/live + evidence.needs-rewritemeans pg_repack/VACUUM FULL; anything else tells you the cheaper fix first. - "postgres autovacuum not keeping up / dead tuples growing" →
vacuum-starved(threshold50 + 0.2×livefrom your livepg_settings) vsblocked-by-*(a session pinning xmin). The timeline chart shows whether dead is rising (losing) or spiked-then-zero (blocked-then-freed). - "postgres vacuum blocked by idle in transaction" → we name the PID, query, and xmin age.
SELECT pg_terminate_backend(pid)(or let it finish), thenVACUUM table. - "postgres index bloat check / reindex needed" →
index-bloatedwith exactpgstatindex% — VACUUM cannot fix it, only REINDEX/pg_repack. Stalepg_statcounters are cross-checked againstpgstattuple_approxso you don't chase ghosts. - "postgres unused indexes find / drop" →
index-unused(idx_scan=0 across every snapshot) with size in bytes. Confirm with pg_stat_statements, then DROP. - "rds / neon / supabase bloat" → read-only by design; needs only
pg_stat_*views + optionalpgstattupleextension. No superuser, no agent install. - "pg_bloat_check vs pgstattuple vs pganalyze vs pghero" → one-shot estimators give you a %; we give you the timeline + the blocker + the fix + the before/after proof, heap *and* index, in one open-source tool. See PLAN.md competitor table.
Keywords
postgresql bloat · postgres bloat check · pg_bloat_check alternative · vacuum blocked · autovacuum tuning · dead tuples · pgstattuple_approx · index bloat · pgstatindex · reindex needed · unused indexes · idle in transaction · backend_xmin · replication slot lag · prepared transaction · table bloat estimation · postgres dba tools · postgres monitoring prometheus grafana · MCP server postgres · Claude postgres DBA