Cómo dar a Claude acceso seguro de solo lectura a un Postgres de producción
Cuándo usarlo: Quieres que Claude responda preguntas sobre una base de datos real sin una herramienta genérica execute_sql que pueda hacer DROP TABLE.
Requisitos previos
- Postgres accesible via libpq URL — Usa un rol de solo lectura; nunca el usuario escribible de la app
- Docker o Go instalado — Toolbox se distribuye como un único binario; la imagen Docker es la opción más sencilla
Flujo
-
Ejecutar Toolbox con el perfil postgres precompiladoInicia mcp-toolbox en modo stdio usando
--prebuilt postgrescon POSTGRES_URL apuntando a la réplica de lectura.✓ Copiado→ Toolbox registratools registered: list_tables, describe_table, execute_sql_readonly -
Conectarlo a Claude DesktopAñade la configuración Docker de toolbox en claude_desktop_config.json bajo mcpServers, luego reinicia Claude.✓ Copiado→
/mcplista las herramientas de toolbox sin errores -
Hacer una consulta realToolbox: lista las tablas. Para
orders, ¿cuál es el valor mediano de pedido en los últimos 7 días? Muéstrame el SQL exacto que ejecutaste.✓ Copiado→ Claude llama list_tables → describe_table → execute_sql_readonly con un SELECT (nunca UPDATE/DELETE)
Resultado: Analítica de solo lectura sobre datos reales sin riesgo de mutación, con registro de auditoría de cada consulta.
Errores comunes
- Apuntar al usuario escribible — Claude eventualmente llama una herramienta mutante — Usa siempre un rol con
GRANT SELECTúnicamente; verifica con\duen psql - Pool de conexiones agotado bajo llamadas paralelas del agente — Configura
pool.max_open_connsen tools.yaml; el valor por defecto es conservador