Como dar ao Claude acesso seguro somente-leitura a um Postgres de produção
Quando usar: Você quer que o Claude responda perguntas sobre um banco de dados real sem uma ferramenta genérica execute_sql que possa fazer DROP TABLE.
Pré-requisitos
- Postgres acessível via URL libpq — Use uma role somente-leitura; nunca o usuário com permissão de escrita da aplicação
- Docker ou Go instalado — O Toolbox vem como binário único; imagem Docker é a forma mais fácil
Fluxo
-
Execute o Toolbox com o perfil postgres pré-configuradoInicie o mcp-toolbox em modo stdio usando
--prebuilt postgrescom POSTGRES_URL apontando para a réplica de leitura.✓ Copiado→ O Toolbox registratools registered: list_tables, describe_table, execute_sql_readonly -
Configure no Claude DesktopAdicione a configuração docker do toolbox ao claude_desktop_config.json em mcpServers, depois reinicie o Claude.✓ Copiado→
/mcplista as ferramentas do toolbox — sem falhas -
Faça uma pergunta realToolbox: liste as tabelas. Depois, para
orders, qual é o valor mediano do pedido nos últimos 7 dias? Mostre o SQL exato que foi executado.✓ Copiado→ O Claude chama list_tables → describe_table → execute_sql_readonly com um SELECT (nunca UPDATE/DELETE)
Resultado: Analytics somente-leitura sobre dados reais com risco zero de mutação e log de auditoria de cada consulta.
Armadilhas
- Apontado para o usuário com permissão de escrita — o Claude eventualmente chama uma ferramenta mutante — Sempre use uma role com apenas
GRANT SELECT; verifique com\duno psql - Connection pool esgotado em chamadas paralelas do agente — Defina
pool.max_open_connsno tools.yaml; o padrão é conservador