Por qué querrías esto
Imagina preguntarle a Claude: «¿Me escribes una consulta que encuentre a los clientes que no han pedido nada en los últimos seis meses?». En lugar de describir tu esquema y cruzar los dedos, Claude puede recorrer tus tablas reales, entender tu modelo de datos y generar SQL correcto en segundos.
O estás depurando un comportamiento en producción. En lugar de sacar datos a mano y pegarlos en un chat, Claude puede consultar tu base de datos directamente, ver patrones y hacerte preguntas sobre lo que encuentra.
El Model Context Protocol (MCP) hace que esto sea seguro y práctico. Le da a Claude una forma estructurada de consultar tu base de datos sin exponerla a un riesgo sin límites.
La base de la seguridad: acceso de solo lectura
Antes de entrar en la configuración, la regla de oro: Claude solo debe leer datos, nunca modificarlos. No es cuestión de desconfianza — es cuestión de límites. Si algo sale mal (una consulta mal formulada, una interpretación inesperada, un fallo en la conexión), lo peor que pasa es una consulta lenta o un resultado confuso, no una pérdida de datos.
Para imponerlo, PostgreSQL permite crear roles solo con permiso SELECT. Esos roles no pueden hacer INSERT, UPDATE ni DELETE. Ni siquiera pueden crear tablas temporales. Es el principio de mínimo privilegio aplicado con rigor.
En bases de datos de producción, usa una réplica de lectura — una copia sincronizada de tu base de datos que solo atiende consultas de lectura. No es solo una capa de seguridad. También es práctico: las consultas de la IA pueden ser caras y lentas, y no quieres esa carga golpeando tu base de datos principal.
¿Qué es MCP y por qué importa?
MCP es un protocolo abierto que permite a los modelos de IA conectarse a herramientas y bases de datos externas de forma segura y estructurada. En lugar de que Claude abra conexiones SQL en crudo, usa MCP como intermediario.
Here's the flow:
- Ejecutas un servidor MCP (en este caso, el servidor de PostgreSQL de Anthropic) en tu máquina o en tu infraestructura.
- Claude Code (o Claude Desktop) se conecta a ese servidor como cliente MCP.
- Cuando Claude necesita datos, envía peticiones estructuradas a través de MCP, no comandos SQL en crudo.
- El servidor MCP se encarga de inspeccionar el esquema, validar la consulta y ejecutarla.
- Claude ve los resultados y puede razonar sobre tus datos.
Esta estructura crea un límite de seguridad. Claude no escribe sus propias cadenas de conexión ni gestiona credenciales directamente. El servidor MCP es dueño de la conexión, valida las peticiones y aplica los permisos.
Configuración paso a paso de PostgreSQL + Claude Code
1. Requisitos previos
You'll need:
- Node.js 18 o posterior (compruébalo con
node --version) - Una base de datos PostgreSQL a la que puedas conectarte (local o remota)
- Claude Code o Claude Desktop (hace falta suscripción Pro para MCP)
- Una cadena de conexión de PostgreSQL preparada (más abajo si necesitas crear una)
2. Crea un rol de solo lectura en PostgreSQL
Conéctate a tu base de datos PostgreSQL como administrador. Si usas una base de datos local:
psql -U postgres -h localhostDespués ejecuta estos comandos para crear un rol de solo lectura:
-- Create the read-only role
CREATE ROLE claude_readonly WITH LOGIN PASSWORD 'strong_password_here';
-- Grant connection to the database
GRANT CONNECT ON DATABASE your_database TO claude_readonly;
-- Grant usage on schemas (assuming public schema)
GRANT USAGE ON SCHEMA public TO claude_readonly;
-- Grant SELECT on all tables
GRANT SELECT ON ALL TABLES IN SCHEMA public TO claude_readonly;
-- Ensure future tables are also readable
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO claude_readonly;Sustituye your_database por el nombre real de tu base de datos y elige una contraseña fuerte. Este rol ya puede leer todas las tablas, pero no puede escribir, borrar ni modificar nada.
3. Construye tu cadena de conexión
Las cadenas de conexión de PostgreSQL siguen este formato:
postgresql://username:password@host:port/databaseFor example:
postgresql://claude_readonly:strong_password_here@localhost:5432/your_databaseSi tu base de datos es remota (por ejemplo, en Render o Railway), usa la cadena de conexión que te den ellos. Si hace falta SSL, añade ?sslmode=require al final.
4. Configura Claude Code o Claude Desktop
Tienes dos opciones: la de línea de comandos o la configuración manual.
Opción A: usar el comando claude mcp add
Si usas Claude Code, ejecuta:
claude mcp add postgres postgresql://claude_readonly:password@localhost:5432/your_databaseSustituye la cadena de conexión por la tuya. Este comando actualiza tu archivo de configuración automáticamente.
Opción B: configuración manual (Claude Desktop o instalación detallada)
Edita o crea ~/.claude.json (en tu carpeta personal) y añade este bloque:
{
"mcpServers": {
"postgres": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-postgres",
"postgresql://claude_readonly:password@localhost:5432/your_database"
]
}
}
}Guarda el archivo. Reinicia Claude Code o Claude Desktop. La conexión debería iniciarse en el siguiente arranque.
5. Prueba la conexión
Abre Claude Code. En una conversación nueva, pídele a Claude que te muestre las tablas de tu base de datos:
What tables do I have in this database? Can you describe the schema?Si la conexión funciona, Claude listará tus tablas y describirá sus columnas, restricciones y relaciones. Si falla, comprueba:
- Que PostgreSQL está en marcha y es accesible desde tu máquina
- Que la cadena de conexión es correcta (sobre todo la contraseña)
- Que el rol de solo lectura tiene los permisos correctos (vuelve a ejecutar los comandos GRANT de arriba si tienes dudas)
- Si es remota, verifica que tu cortafuegos y tu configuración de red permiten la conexión
El atajo de Supabase
Si quieres algo más rápido, Supabase (un backend gestionado de PostgreSQL) ofrece una integración MCP ya construida. Regístrate en supabase.com, crea un proyecto (que levanta una base de datos PostgreSQL al instante) y conéctalo a Claude con su servidor MCP oficial.
La ventaja: sin crear roles a mano ni preocuparte por la infraestructura. La contrapartida: el servidor MCP de Supabase es solo para desarrollo y pruebas, no para producción. Para un experimento rápido o para aprender, aun así es difícil de superar.
Ejemplos prácticos: qué pedirle a Claude
Una vez conectado, puedes pedirle a Claude que:
- Explore tus datos: «¿Cuántos usuarios hay en la base de datos? ¿Qué rango de fechas cubren los pedidos?»
- Genere consultas: «Escribe una consulta que encuentre a los usuarios que llevan 90 días sin entrar.»
- Detecte patrones: «¿Hay tablas con un número de filas inusualmente alto? ¿Qué puede significar eso?»
- Depure: «¿Por qué esta columna puede tener valores nulos para algunos usuarios?»
- Proponga optimizaciones: «¿Qué consultas es probable que vayan lentas con este esquema?»
Claude verá las formas reales de los datos, las restricciones y las relaciones, lo que hace sus respuestas mucho más útiles que si le hubieras descrito la base de datos con palabras.
Qué puede salir mal (y cómo evitarlo)
Consultas lentas o descontroladas
Si Claude escribe una consulta que recorre millones de filas, tu base de datos lo va a notar. Mitigación: haz que Claude trabaje contra una réplica de lectura, no contra tu base de datos principal. Configura statement_timeout en PostgreSQL para cortar las consultas que duren más de (pongamos) 30 segundos.
ALTER ROLE claude_readonly SET statement_timeout = '30s';Exponer datos sensibles
Si tu base de datos contiene datos personales, contraseñas, claves de API o secretos, Claude los verá si están en columnas legibles. Antes de conectar una IA a tu base de datos, audita qué hay dentro. Enmascara o excluye las columnas sensibles, o excluye tablas enteras del rol de solo lectura:
-- Exclude the secrets table
REVOKE SELECT ON secrets FROM claude_readonly;Credenciales de conexión en el chat
Nunca pegues en Claude una cadena de conexión con una contraseña real. La configuración vive en ~/.claude.json, en tu máquina, no en tus conversaciones. Si alguna vez pegas una contraseña en algún sitio, cámbiala de inmediato.
Exposición de red
Si tu PostgreSQL está en un servidor remoto, asegúrate de que solo acepta conexiones desde tu dirección IP o a través de una VPN. No abras el puerto 5432 a todo internet. Configura pg_hba.conf con rigor.
Preguntas frecuentes
¿Necesito Claude Pro para usar esto?
Sí. El soporte de MCP requiere Claude Desktop (Pro) o Claude Code. Con el plan gratuito no se puede usar MCP.
¿Puede Claude escribir en mi base de datos?
No, si has configurado bien el rol de solo lectura. Los permisos del rol de PostgreSQL bloquearán cualquier intento de INSERT, UPDATE o DELETE. Claude recibirá un error si lo intenta.
¿Es seguro conectar mi base de datos de producción?
Solo si conectas una réplica de lectura y no la principal. Una réplica de lectura es una copia sincronizada que solo atiende lecturas. Así, aunque algo salga mal, tu base de datos principal queda intacta. En sistemas críticos, prueba primero contra una copia de preproducción.
¿Puedo conectar varias bases de datos?
Sí. Añade varias entradas al objeto mcpServers en ~/.claude.json, cada una con un nombre y una cadena de conexión distintos. Claude tendrá acceso a todas ellas en una misma sesión.
¿Y si mi base de datos está detrás de un cortafuegos o una VPN?
El cliente de Claude Code (que corre en tu máquina) gestiona la conexión, así que si tú puedes llegar a la base de datos desde tu máquina, Claude también. No hace falta configuración de red especial más allá de la que ya tienes.
¿Cómo sabe Claude qué tablas y columnas tengo?
El servidor MCP de PostgreSQL inspecciona tu esquema al conectarse. Saca la lista de tablas, los nombres de columna, los tipos, las restricciones y las relaciones directamente de las tablas del sistema de PostgreSQL. Claude ve esa información y la usa para escribir consultas más inteligentes.
Siguientes pasos
Empieza pequeño. Conecta primero una base de datos de desarrollo o de preproducción. Hazle a Claude preguntas exploratorias simples: «Enséñame el esquema». «¿Cuántas filas hay en cada tabla?». Cuando te sientas cómodo, pasa a escribir consultas y resolver problemas.
Para bases de datos más grandes o casos de uso más avanzados, mira el servidor MCP de pgEdge u otras alternativas. Para prototipar rápido, merece la pena probar la opción gestionada de Supabase. El principio no cambia: acceso de solo lectura, MCP como intermediario y límites claros sobre lo que la IA puede hacer.