01 Cuándo tiene sentido un «cerebro» de datos
Conectar Claude a Gmail, Slack, HubSpot, Calendar y Drive por separado funciona bien para preguntas simples. El problema aparece cuando la pregunta cruza fuentes: «¿qué clientes me han escrito esta semana, tienen una factura pendiente y nadie les ha contestado en el chat?». Claude tiene que llamar a cada conector por turnos, juntar resultados a mano en su contexto y, a menudo, se queda a medias o gasta muchísimos tokens.
La alternativa es una capa de contexto: copias periódicamente los datos de esas herramientas a una sola base de datos Postgres, los normalizas alrededor de una entidad central (el cliente, el proyecto, el paciente…) y le das a Claude acceso de solo lectura mediante un servidor MCP. Una consulta SQL sustituye a diez llamadas.
| Situación | ¿Merece la pena? |
|---|---|
| Tienes 2-3 conectores y preguntas sencillas | No. Usa los conectores directamente. |
| Muchas fuentes y preguntas que cruzan 3 o más | Sí, es el caso ideal. |
| Necesitas el dato del último segundo (stock, pagos en curso) | No para ese dato: pídelo en vivo al conector. |
| Lo que quieres es que Claude actúe (enviar, crear, mover) | No. La base es para leer; las acciones siguen en los conectores. |
| No puedes mantener una sincronización periódica | Todavía no. Una copia desactualizada engaña más de lo que ayuda. |
02 Las piezas de la arquitectura
Base Postgres alojada
Neon, Supabase, Railway o Render sirven. Todos tienen plan gratuito o de entrada para probar; elige según si prefieres pago por uso o precio fijo, y revisa sus tarifas actuales antes de decidir.
Sincronizador
Copia los datos de cada herramienta a la base. Airbyte (open source, cientos de conectores con panel), dlt (librería de Python para pipelines a medida) o n8n (flujos disparados por webhooks).
Modelo de datos por capas
Tablas crudas por fuente, un núcleo limpio con pocas tablas y unas vistas pensadas para que Claude las consulte. Menos objetos y con nombres claros = mejores respuestas.
Servidor MCP de Postgres
El puente entre Claude y la base. Postgres MCP Pro tiene un modo restringido de solo lectura con límite de tiempo de ejecución.
Conectores vivos
Siguen ahí para actuar: enviar un correo, crear una reunión o mover una oportunidad. La base responde, los conectores ejecutan.
03 Paso 1: que Claude diseñe el modelo antes de construir
No empieces por el SQL. Abre Claude Code en una carpeta vacía, cambia a modo plan (pulsa Shift+Tab hasta que la barra de estado diga plan mode on) y pídele un diseño completo para revisarlo antes de que cree ningún archivo.
Quiero montar una base Postgres que actúe como capa de contexto para ti: copiaré ahí los datos de mis herramientas y tú los consultarás en solo lectura.
Antes de proponer nada, hazme preguntas de una en una sobre:
- Qué herramientas uso (correo, CRM, chat, calendario, facturación…).
- Qué 5-10 preguntas de negocio quiero poder responder cruzando fuentes.
- Qué datos necesito al minuto y cuáles me valen con unas horas de retraso.
- Qué proveedor de Postgres usaré.
Después entrégame un plan con:
1. Inventario: por fuente, qué datos trae, cada cuánto cambian y si van a la base o se quedan como conector vivo.
2. Modelo de datos: tablas crudas por fuente, un núcleo pequeño centrado en el cliente y 2-3 vistas para consulta. Cada tabla del núcleo con source_app, source_id, updated_at y synced_at, y unicidad por (source_app, source_id).
3. Orden de carga y frecuencia de sincronización por fuente, con la herramienta recomendada (Airbyte, dlt o n8n).
4. Cómo identificar a la misma persona en varias fuentes (correo como clave y tabla de alias para el resto).
No crees archivos hasta que yo apruebe el plan.
04 Paso 2: cargar y sincronizar las fuentes
Cada fuente necesita su propio ritmo. Sincronizar todo en tiempo real es lo que dispara la factura y la complejidad; la mayoría de datos aguanta perfectamente un lote cada 15-60 minutos. Un reparto razonable:
| Fuente | Frecuencia orientativa | Herramienta típica |
|---|---|---|
| Calendario | Una vez al día | Airbyte o dlt en lote |
| Correo | Cada hora | Airbyte o dlt en lote |
| CRM (cambios de etapa) | Casi en tiempo real | n8n con webhook del CRM |
| Chat de equipo | Cada 15-30 minutos o por evento | Airbyte o n8n |
| Facturación | Cada pocas horas | dlt con un script a medida |
pip install "dlt[postgres]"
05 Paso 3: conectar la base a Claude en solo lectura
Usa Postgres MCP Pro. Además de consultar, incluye chequeos de salud de la base, recomendaciones de índices y análisis de planes de ejecución. Lo importante es arrancarlo con --access-mode=restricted: limita las operaciones a transacciones de solo lectura y corta las consultas demasiado largas.
pipx install postgres-mcp
claude mcp add cerebro \
--env DATABASE_URI="postgresql://claude_lector:CLAVE@HOST:5432/cerebro" \
-- postgres-mcp --access-mode=restricted
claude mcp get cerebro
Si tu base está en Supabase, también puedes usar su servidor MCP oficial, que es remoto. Limítalo a un proyecto y a solo lectura con los parámetros de la URL:
claude mcp add --transport http supabase \
"https://mcp.supabase.com/mcp?project_ref=TU_PROJECT_REF&read_only=true"
No confíes solo en el modo del servidor: crea además un rol de Postgres que únicamente pueda leer las vistas pensadas para Claude, y usa ese rol en la cadena de conexión. Tu usuario propietario nunca debe llegar a Claude.
CREATE ROLE claude_lector LOGIN PASSWORD 'cambia-esto';
REVOKE ALL ON SCHEMA public FROM claude_lector;
CREATE SCHEMA consulta;
-- crea aquí tus vistas: consulta.actividad_cliente, etc.
GRANT CONNECT ON DATABASE cerebro TO claude_lector;
GRANT USAGE ON SCHEMA consulta TO claude_lector;
GRANT SELECT ON ALL TABLES IN SCHEMA consulta TO claude_lector;
06 Paso 4: preguntar al cerebro y mantenerlo fresco
Responde usando solo el servidor MCP «cerebro», sin llamar a los conectores en vivo. Si un dato no está en la base, dilo en lugar de suponerlo.
Pregunta: ¿qué clientes me han escrito por correo en los últimos 7 días, tienen una oportunidad abierta en el CRM y no han recibido respuesta en el chat del equipo?
1. Antes de ejecutar, dime qué vistas vas a consultar y enséñame el SQL.
2. Solo SELECT.
3. Para cada cliente: nombre, empresa, fecha y asunto del último correo, etapa de la oportunidad y fecha del último mensaje en el chat.
4. Indica el synced_at más antiguo que hayas usado para que sepa lo fresco que es el resultado.
5. Termina con una tabla ordenada por prioridad.
- ✓Revisa cada semana el synced_at más antiguo de cada tabla y compáralo con la frecuencia prevista.
- ✓Busca duplicados nuevos de clientes y filas huérfanas sin cliente asociado.
- ✓Controla qué fuente consume más en sincronización y bájale la frecuencia si no aporta.
- ✓Saca de la base lo que nadie consulta y añade lo que Claude echa en falta en sus respuestas.
- ✓Documenta en el CLAUDE.md del proyecto qué vistas existen y qué significa cada columna.
07 Errores típicos
Darle acceso a las tablas crudas
Claude acaba haciendo joins rebuscados sobre datos sin limpiar. Expón solo vistas con nombres que expliquen lo que contienen.
Sincronizar todo en tiempo real
Encarece y complica sin mejorar las respuestas. Reserva el tiempo real para lo que de verdad cambia la decisión.
No guardar el origen de cada fila
Sin source_app, source_id y synced_at duplicarás registros al resincronizar y no sabrás si un dato está viejo.
Usar la base para escribir
Si Claude necesita crear o actualizar algo, que lo haga a través del conector correspondiente, nunca con permisos de escritura en la base.
Preguntas frecuentes
No para empezar: Claude genera el esquema, las vistas y los permisos. Sí conviene que entiendas qué es una tabla, una vista y un rol para poder revisar lo que propone antes de ejecutarlo.
No. La base sirve para leer y cruzar información ya sincronizada. Para enviar correos, crear eventos o actualizar el CRM sigues usando los conectores o servidores MCP de cada herramienta.
Estás copiando datos de clientes a otro sistema, así que aplica el RGPD: elige un proveedor con región en la UE si puedes, sincroniza solo los campos necesarios, documenta el tratamiento y limita quién accede a la base.
Sí. Postgres MCP Pro documenta la configuración para Claude Desktop en su archivo claude_desktop_config.json. Usa los mismos parámetros: la variable DATABASE_URI y --access-mode=restricted.
El patrón es el mismo con otra entidad central: proyectos, inmuebles, pacientes o pedidos. Lo importante es que todas las tablas cuelguen de esa entidad para que cada pregunta sea un join sencillo.
Sobre el autor
Equipo editorial de appyweb
Marketing, SEO y desarrollo con IA
Especialistas de appyweb en SEO, publicidad, desarrollo web y automatización con IA.