The full upstream README, mirrored here for reference. Install config, tool schemas, adoption signals, and an original overview live on the MCP Percona Pg listing page.
A Model Context Protocol server for the Percona Operator for PostgreSQL. It lets an MCP-capable client (Claude Desktop, Claude Code, Cursor, …) operate PostgreSQL + PgBouncer clusters on Kubernetes — topology, connection pooling, tuning, backups/PITR, DR, extensions, and lifecycle — with behaviour controlled entirely by flags.
It drives the operator's custom resources (PerconaPGCluster, PerconaPGBackup, PerconaPGRestore, PerconaPGUpgrade) through your kube-config, so the model works the way you already do: "scale dev-pg to 3 replicas", "switch pooling to transaction mode", "restore prod-pg to 12:00 UTC".
Safe by default: it starts read-only, can be scoped to an allowlist of namespaces and clusters, protects critical clusters from mutation, gates restore / upgrade / delete behind separate opt-ins, and requires typed confirmation for high-impact actions. It never reads or returns database credentials.
.status (Patroni members, PostgreSQL/PgBouncer readiness), connection endpoints, backups and restores.pool_mode and the global pool tunables (default_pool_size, max_client_conn, …).spec.patroni.dynamicConfiguration (the only Patroni-safe path).| Layer | Flag | Effect |
|---|---|---|
| Access mode | PERCONA_MODE | read-only → read-write → admin; over-privileged tools are never registered |
| Namespace/cluster allowlists | PERCONA_NAMESPACE_ALLOWLIST, PERCONA_CLUSTER_ALLOWLIST | scope what the agent can touch |
| Protected clusters | PERCONA_PROTECTED_CLUSTERS | readable, never mutated/restored/deleted |
| Restore / upgrade / delete | PERCONA_ALLOW_RESTORE, PERCONA_ALLOW_UPGRADE, PERCONA_ALLOW_DELETE | separate opt-ins on top of admin mode |
| Confirmation | PERCONA_REQUIRE_CONFIRMATION | high-impact ops require echoing the cluster name |
| Dry-run / audit | PERCONA_DRY_RUN, PERCONA_AUDIT_LOG | validate-only; JSON audit line per guarded op |
Read (read-only+): list_contexts, list_clusters, get_cluster, get_cluster_status, get_connection_info, get_pgbouncer_config, get_pg_parameters, list_backups, list_restores
Write (read-write+): scale_cluster, set_pgbouncer_config, set_pg_parameters, pause_cluster, toggle_builtin_extension, create_backup
Admin (admin): restore_cluster (needs PERCONA_ALLOW_RESTORE), upgrade_cluster (needs PERCONA_ALLOW_UPGRADE), promote_standby, delete_backup / delete_cluster (need PERCONA_ALLOW_DELETE)
Published on npm as @dockndevai/mcp-percona-pg. No clone or build needed — your MCP client runs it on demand with npx. Start in read-only mode; see .env.example for every variable and docs/CLIENTS.md for the full per-client guide.
Claude Code (CLI)
Claude Desktop · Cursor · Windsurf — same block in claude_desktop_config.json, .cursor/mcp.json, or ~/.codeium/windsurf/mcp_config.json:
OpenAI Codex CLI — in ~/.codex/config.toml:
dev-pg."dev-pg using, and how big is the default pool?" → get_pgbouncer_configdev-pg PgBouncer to transaction pooling with default_pool_size 25." (needs read-write)shared_buffers to 512MB on dev-pg." (needs read-write)dev-pg to repo1." (needs read-write)dev-pg to 2026-08-30 12:00:00+00." (needs admin + PERCONA_ALLOW_RESTORE + confirmation)pgv2.percona.com/v2).pgv2.percona.com resources you want the agent to see.Prefer the published package above. To run from a clone:
This server ships a server.json for the official MCP registry and an mcpName for npm ownership validation. See PUBLISHING.md.
MIT