En esta página
MCP y bases de datos
Especificación MCP 2026-07-28 · revisada el 2 de octubre de 2026
nortia-pedidos sobre PostgreSQL real: tools con parámetros en lugar de SQL libre, rol de solo lectura, aislamiento por inquilino con seguridad a nivel de fila, límites, auditoría y pool; y el mismo servidor en Cloudflare Workers con Hyperdrive o D1.
Qué aprenderás
- Decidir qué preguntas sobre una base de datos se exponen como tools con parámetros y justificar por qué no una tool de SQL libre
- Aislar inquilinos con un rol de solo lectura y seguridad a nivel de fila, fijando el inquilino por transacción a partir de la identidad autenticada
- Acotar cada consulta con límite de filas, paginación por cursor y timeout de sentencia, y dejar registro de auditoría de cada llamada
- Gestionar el ciclo de vida de las conexiones: pool por proceso en Node y Python, cliente por petición con Hyperdrive en Workers
- Elegir entre PostgreSQL con Hyperdrive y D1 sabiendo qué garantías cambian
Contenido de la lección
- 01 El problema
- 02 Por qué no una tool de SQL libre
- 03 El rol y las filas: lo que PostgreSQL garantiza
- 04 Tools con parámetros: validación, límites y cursor
- 05 Esquema y catálogos como resources
- 06 Auditoría y ciclo de vida del pool
- 07 El mismo servidor en Workers: Hyperdrive y D1
- 08 En producción
Además: quiz de comprobación y desafío práctico.
Extracto
Hasta ahora nortia-pedidos respondía desde memoria, detrás de una interfaz de repositorio. Tenía tres pedidos en el nivel Básico y 144 en la lección 1. Ahora se conecta a la base PostgreSQL de Nortia, con 6.000 pedidos, 400 clientes con email y teléfono, y España y México en las mismas tablas. La autorización de la lección anterior ya dice quién llama. Falta decidir qué puede leer.
La primera propuesta que llega al equipo es la más corta: una tool ejecutar_sql y que el modelo escriba la consulta. Seguridad pregunta tres cosas. Qué impide que un agente de España lea pedidos de México. Qué impide que una pregunta mal acotada recorra tablas enteras o devuelva los emails de todos los clientes. Y cómo se demuestra, seis meses después, quién consultó qué. Con SQL libre las tres respuestas son «depende de lo que escriba el modelo».
Fin del extracto · la lección sigue con 7 secciones más
Artículos relacionados
- MCP Guías
Preguntas frecuentes
¿Es buena idea dar a un agente una tool que ejecute SQL libre?
Cuando la base tiene datos personales o de varios clientes, en general no: con SQL libre, lo que se lee depende por completo de la consulta que escriba el modelo. Eso deja sin garantía quién puede ver los datos de cada país, cuántas filas o correos salen en una sola respuesta y cómo se reconstruye meses después qué consultó cada persona. En la lección se argumenta la alternativa de exponer preguntas concretas como tools con parámetros.
¿Cómo se aísla a cada inquilino (multi-tenant) en un servidor MCP con PostgreSQL?
Apoyándose en las garantías de la propia base de datos y no en lo que pida el modelo: un rol que no puede escribir y políticas de seguridad por filas (RLS) que filtran por inquilino según la identidad ya autenticada. La ventaja es que el límite lo impone PostgreSQL, y así una agente española no recibe pedidos de México aunque la consulta que llega esté mal planteada. En la lección se monta ese aislamiento sobre la base de Nortia, junto con la auditoría de cada llamada.
¿Puede un servidor MCP en Cloudflare Workers usar PostgreSQL?
Sí: puede conectarse a una base PostgreSQL existente a través de Hyperdrive o, si se prefiere una base gestionada por Cloudflare, usar D1, que es SQLite. Elegir entre las dos no es solo cuestión de comodidad, porque cambian la forma de manejar las conexiones y lo que ofrece cada motor. En la lección se lleva el mismo servidor a Workers con ambas opciones y se compara qué se gana y qué se pierde.