NestDaddy

pgops

io.github.arzharch/pgops-mcp · v0.1.9

Safe, audited PostgreSQL operations for AI agents: queries, migrations, EXPLAIN, containers

Connect Runs on your machine

Terminal
claude mcp add pgops-mcp -e PGOPS_DSN=<PGOPS_DSN> -e PGOPS_READONLY_DSN=<PGOPS_READONLY_DSN> -e PGOPS_READ_ONLY=<PGOPS_READ_ONLY> -e PGOPS_APPROVAL_MODE=<PGOPS_APPROVAL_MODE> -e PGOPS_AUDIT_LOG=<PGOPS_AUDIT_LOG> -e PGOPS_DEFAULT_TIMEOUT_MS=<PGOPS_DEFAULT_TIMEOUT_MS> -e PGOPS_MAX_TIMEOUT_MS=<PGOPS_MAX_TIMEOUT_MS> -e PGOPS_DEFAULT_ROW_LIMIT=<PGOPS_DEFAULT_ROW_LIMIT> -- uvx pgops-mcp==0.1.9
claude_desktop_config.json
{
  "mcpServers": {
    "pgops-mcp": {
      "command": "uvx",
      "args": [
        "pgops-mcp==0.1.9"
      ],
      "env": {
        "PGOPS_DSN": "<PGOPS_DSN>",
        "PGOPS_READONLY_DSN": "<PGOPS_READONLY_DSN>",
        "PGOPS_READ_ONLY": "<PGOPS_READ_ONLY>",
        "PGOPS_APPROVAL_MODE": "<PGOPS_APPROVAL_MODE>",
        "PGOPS_AUDIT_LOG": "<PGOPS_AUDIT_LOG>",
        "PGOPS_DEFAULT_TIMEOUT_MS": "<PGOPS_DEFAULT_TIMEOUT_MS>",
        "PGOPS_MAX_TIMEOUT_MS": "<PGOPS_MAX_TIMEOUT_MS>",
        "PGOPS_DEFAULT_ROW_LIMIT": "<PGOPS_DEFAULT_ROW_LIMIT>"
      }
    }
  }
}
~/.cursor/mcp.json
{
  "mcpServers": {
    "pgops-mcp": {
      "command": "uvx",
      "args": [
        "pgops-mcp==0.1.9"
      ],
      "env": {
        "PGOPS_DSN": "<PGOPS_DSN>",
        "PGOPS_READONLY_DSN": "<PGOPS_READONLY_DSN>",
        "PGOPS_READ_ONLY": "<PGOPS_READ_ONLY>",
        "PGOPS_APPROVAL_MODE": "<PGOPS_APPROVAL_MODE>",
        "PGOPS_AUDIT_LOG": "<PGOPS_AUDIT_LOG>",
        "PGOPS_DEFAULT_TIMEOUT_MS": "<PGOPS_DEFAULT_TIMEOUT_MS>",
        "PGOPS_MAX_TIMEOUT_MS": "<PGOPS_MAX_TIMEOUT_MS>",
        "PGOPS_DEFAULT_ROW_LIMIT": "<PGOPS_DEFAULT_ROW_LIMIT>"
      }
    }
  }
}
.vscode/mcp.json
{
  "servers": {
    "pgops-mcp": {
      "type": "stdio",
      "command": "uvx",
      "args": [
        "pgops-mcp==0.1.9"
      ],
      "env": {
        "PGOPS_DSN": "<PGOPS_DSN>",
        "PGOPS_READONLY_DSN": "<PGOPS_READONLY_DSN>",
        "PGOPS_READ_ONLY": "<PGOPS_READ_ONLY>",
        "PGOPS_APPROVAL_MODE": "<PGOPS_APPROVAL_MODE>",
        "PGOPS_AUDIT_LOG": "<PGOPS_AUDIT_LOG>",
        "PGOPS_DEFAULT_TIMEOUT_MS": "<PGOPS_DEFAULT_TIMEOUT_MS>",
        "PGOPS_MAX_TIMEOUT_MS": "<PGOPS_MAX_TIMEOUT_MS>",
        "PGOPS_DEFAULT_ROW_LIMIT": "<PGOPS_DEFAULT_ROW_LIMIT>"
      }
    }
  }
}

Replace the values in angle brackets with your own. Keys stay on your machine; we never see them.

Tools

This server runs locally, so its tools are listed by your MCP client once it starts.

Environment variables

NameDescription
PGOPS_DSN
Required, secret
PostgreSQL connection string for the database to operate on.
PGOPS_READONLY_DSN
Optional, secret
Optional separate DSN for the read-only pool. Use a role with no write grants to enforce read-only at the database rather than only in the server.
PGOPS_READ_ONLY
Optional
Set to 1 to withhold every mutating tool. Write tools are not registered at all, so an agent cannot call them.
PGOPS_APPROVAL_MODE
Optional
Set to 1 to register container.restart and container.exec. Off by default: Docker socket access is root-equivalent on the host.
PGOPS_AUDIT_LOG
Optional
Path to the append-only JSONL audit log.
PGOPS_DEFAULT_TIMEOUT_MS
Optional
Statement timeout applied to every query unless a tool call overrides it.
PGOPS_MAX_TIMEOUT_MS
Optional
Ceiling a caller-supplied timeout is clamped to.
PGOPS_DEFAULT_ROW_LIMIT
Optional
Rows returned by query.read when the caller does not specify a limit.

Details

Package[email protected] (PYPI, stdio)
Packageghcr.io/arzharch/pgops-mcp:0.1.9 (OCI, stdio)
First published1 Sep 2026
Last updated1 Sep 2026
Registry nameio.github.arzharch/pgops-mcp

More databases servers See all

Listing data from the official MCP registry. Status and tools from NestDaddy's daily check. Browse all MCP servers.