Skip to content
Back to skills

Postgres

ASecurity

Consultas, inspeção de schema e mutações seguras (DML/DDL com dry-run) no PostgreSQL via MCP (@soarescbm/postgres-mcp). Use quando o usuário disser "postgres", "postgresql", "banco de dados", "tabela", "query", "SELECT", "índice", "schema", "constraint", "foreign key", "coluna", "DDL", "insert", "update", "delete", "criar tabela", ou pedir para consultar/alterar dados de um banco Postgres.

  • 3 stars
  • 0 votes
  • 0 copies
  • 6 views
  • Added September 9, 2026
databasesgosqldatabase

Works with

  • mcp

Security analysis

A100/100

Scanned September 9, 2026

npx -y skills add pwdev-solucoes/pwdev-claude-marketplace --skill postgres --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Postgres?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Postgres
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/pwdev-solucoes-postgres/badge)](https://www.skillsdirectory.com/skills/pwdev-solucoes-postgres)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: postgres
description: >
  Consultas, inspeção de schema e mutações seguras (DML/DDL com dry-run) no
  PostgreSQL via MCP (@soarescbm/postgres-mcp). Use quando o usuário disser
  "postgres", "postgresql", "banco de dados", "tabela", "query", "SELECT",
  "índice", "schema", "constraint", "foreign key", "coluna", "DDL", "insert",
  "update", "delete", "criar tabela", ou pedir para consultar/alterar dados
  de um banco Postgres.
metadata:
  version: 1.0.0
---

# Postgres

Você opera o PostgreSQL do usuário via servidor MCP `postgres`.

## Pré-requisito e degradação

**Path A — MCP `postgres` conectado**: use as tools diretamente.

**Path B — tools falhando ou MCP ausente**: não simule resultado de banco.
**Sem `DATABASE_URL` este servidor nem sobe** (`exit 1` no boot — não há modo
placeholder): `/mcp` mostrando o servidor com erro significa config ausente
na sessão. Diagnostique com `${CLAUDE_PLUGIN_ROOT}/scripts/check-setup.sh` e
aponte `/pwdev-postgres:init`. Env var nova só vale após reiniciar a sessão.
Não escreva SQL por fora (psql direto) para contornar o MCP — psql é só
diagnóstico do check-setup.

## Mapa de intenção → tool

| Intenção | Tool |
|---|---|
| Consultar dados / EXPLAIN | `run_select` — **sempre com `LIMIT` explícito** |
| Ver estrutura de tabela | `describe_table` (colunas, PK, FKs, constraints, índices) |
| Listar tabelas | `list_tables` (`include_views: true` p/ views) |
| Listar schemas | `list_schemas` |
| Listar índices | `list_indexes` |
| Constraints de uma tabela | `list_constraints` |
| Inserir uma linha | `insert_row` |
| Atualizar linhas | `update_rows` — `set` e `where` obrigatórios |
| Deletar linhas | `delete_rows` — `where` obrigatório |
| Criar tabela | `create_table` |
| Alterar tabela | `alter_table` — UMA ação por chamada |
| Derrubar tabela | `drop_table` |
| Criar índice | `create_index` (só btree) |
| Derrubar índice | `drop_index` |

Parâmetros exatos e pegadinhas: `${CLAUDE_PLUGIN_ROOT}/references/mcp-tools.md`.
Sem prompts nem resources MCP — só as 14 tools.

## Regras de segurança (inegociáveis)

- **Mutação sempre em duas fases.** Toda tool DML/DDL tem dry-run
  obrigatório: chame primeiro com `confirm: false`, mostre ao usuário o
  preview (`sql`, `estimatedRows`, `warnings`) e **só repita com
  `confirm: true` após confirmação explícita dele no chat**. Nunca emende as
  duas chamadas sem a confirmação no meio.
- **`run_select` sempre com `LIMIT`** — o servidor não impõe limite de
  linhas; uma query sem LIMIT pode despejar a tabela inteira no contexto.
- **Nunca contorne as travas do servidor**: `update_rows`/`delete_rows` sem
  `where` são rejeitados por design (anti mutação em massa) — não simule o
  efeito com um `where` tautológico (`{"1":"1"}` etc.).
- **`cascade` é confirmação reforçada**: em `drop_table`/`drop_column` com
  `cascade`, liste os dependentes do preview e confirme nominalmente.
- **Leia `.claude/pwdev-postgres-context.md` antes de qualquer mutação** —
  ambiente (produção?), tabelas críticas e se DDL é permitido. Em produção,
  redobre: proponha, não execute sem confirmação explícita.
- **`alter_table` real**: `add_column` | `drop_column` | `rename_column` |
  `set_default` | `set_nullable` — uma ação por chamada (o README do servidor
  tem drift; estes são os nomes do código).
- Valores sempre via `params`/records — nunca interpole valor do usuário em
  SQL de `run_select`.

## Fluxos recomendados

- **Explorar um banco novo**: `list_schemas` → `list_tables` →
  `describe_table` nas relevantes; panorama completo → `/pwdev-postgres:esquema`.
- **Alterar dados**: `describe_table` (conferir colunas/constraints) →
  preview da mutação → mostrar `sql` + `estimatedRows` → confirmação →
  `confirm: true` → reportar `affectedRows`.
- **Criar/alterar estrutura**: conferir convenção no contexto do projeto →
  preview do DDL → confirmação → executar → `describe_table` para verificar.

## Limites

- Um único banco por instância (o da `DATABASE_URL`); outro banco = outra
  config + reinício de sessão
- Sem transações multi-statement — cada chamada é um statement isolado, sem
  rollback conjunto
- Sem migrations, GRANT/roles, TRUNCATE/COPY, índices não-btree
- `statement_timeout` default 10 s (config via `PG_MCP_STATEMENT_TIMEOUT_MS`)
- BIGINT acima de 2^53 chega como `Number` com warning — cuidado com IDs
  gigantes
- Servidor v1 é **dev/local only** — em banco compartilhado, use usuário de
  privilégios mínimos

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…