Integraciones de bases de datos
Guida puede conectarse a bases de datos externas, clústeres de búsqueda y almacenamiento de objetos directamente desde scripts. Las credenciales de conexión se almacenan como credenciales de acceso cifradas: usted pasa el nombre de la credencial como parámetro conn, y Guida resuelve la cadena de conexión en tiempo de ejecución. Todas las integraciones de bases de datos están bloqueadas para scripts originados por MCP, con el mismo modelo de seguridad que g.secrets.getSecret().
Patrón de conexión
Sección titulada «Patrón de conexión»Cada método de base de datos toma un parámetro conn: el nombre de una credencial que contiene la cadena de conexión. Esto mantiene las credenciales fuera de sus scripts:
// Secret "my-pg" contains: Host=localhost;Database=mydb;Username=user;Password=passconst rows = await g.postgres.query("my-pg", "SELECT * FROM products WHERE price < $1", [20.00]);Las conexiones se agrupan y reutilizan automáticamente entre llamadas dentro de un script.
Pasos de configuración:
- Abra el panel Secrets
- Haga clic en el botón dedicado: Add S3 Connection, Add MongoDB o Add PostgreSQL; cada uno abre un diálogo tipado con los campos adecuados
- Use el nombre de la credencial en sus scripts

Los diálogos de conexión a bases de datos almacenan cadenas de conexión como credenciales cifradas que los scripts usan por nombre.
Almacenamiento de objetos compatible con S3
Sección titulada «Almacenamiento de objetos compatible con S3»g.s3.* se conecta a cualquier servicio compatible con S3: AWS S3, MinIO, DigitalOcean Spaces, Backblaze B2, etc.
Formato de cadena de conexión:
endpoint=s3.amazonaws.com;accessKey=AKIA...;secretKey=...;region=us-east-1;secure=truePara MinIO ejecutándose localmente:
endpoint=127.0.0.1:9000;accessKey=minioadmin;secretKey=minioadmin;secure=falseCasos de uso:
- Respaldar datos extraídos en almacenamiento en la nube
- Almacenar capturas de pantalla y capturas de página completa
- Generar enlaces de descarga prefirmados para compartir resultados
- Mover archivos entre buckets como parte de una canalización
Ejemplo
Sección titulada «Ejemplo»async function main() { // Upload scraped data as JSON const data = { products: [{ name: "Widget", price: 9.99 }] }; await g.s3.putObjectText( "my-s3", "scraping-results", "exports/products.json", JSON.stringify(data, null, 2), "application/json" );
// Generate a shareable download link (24 hours) const url = await g.s3.getPresignedUrl("my-s3", "scraping-results", "exports/products.json", { expiry: 86400 }); g.log("Download: " + url);}12 métodos en total; vea la Referencia de API para la lista completa.
MongoDB
Sección titulada «MongoDB»g.mongodb.* se conecta a MongoDB para almacenamiento de documentos, consultas y agregación.
Formato de cadena de conexión mediante URI estándar de MongoDB:
mongodb://user:password@localhost:27017Para MongoDB Atlas:
mongodb+srv://user:[email protected]Casos de uso:
- Almacenar documentos extraídos con esquemas flexibles
- Ejecutar canalizaciones de agregación para análisis
- Insertar/actualizar por lotes con
insertManyybulkWrite - Indexar campos para búsquedas rápidas
Ejemplo
Sección titulada «Ejemplo»async function main() { const conn = "my-mongo";
// Insert scraped products const result = await g.mongodb.insertMany(conn, "scraping", "products", [ { name: "Widget A", price: 9.99, category: "tools" }, { name: "Widget B", price: 14.99, category: "tools" }, { name: "Gadget C", price: 29.99, category: "electronics" } ]); g.log("Inserted " + result.insertedCount + " documents");
// Query with filter and sort const docs = await g.mongodb.find(conn, "scraping", "products", { price: { $lt: 20 } }, { sort: { price: 1 } } ); g.log("Cheap products: " + docs.length);
// Aggregate by category const stats = await g.mongodb.aggregate(conn, "scraping", "products", [ { $group: { _id: "$category", count: { $sum: 1 }, avgPrice: { $avg: "$price" } } } ]); for (const s of stats) { g.log(s._id + ": " + s.count + " items, avg $" + s.avgPrice.toFixed(2)); }}17 métodos en total; vea la Referencia de API para la lista completa.
PostgreSQL
Sección titulada «PostgreSQL»g.postgres.* se conecta a PostgreSQL para consultas relacionales, transacciones y operaciones por lotes.
Formato de cadena de conexión estándar Npgsql:
Host=localhost;Database=mydb;Username=user;Password=passTodas las consultas usan parámetros posicionales ($1, $2, …). Guida nunca interpola valores en cadenas SQL, lo que evita inyección SQL.
Casos de uso:
- Almacenar datos estructurados con integridad relacional
- Envolver operaciones de varios pasos en transacciones
- Importar datos por lotes con
copyFrommediante protocolo COPY, mucho más rápido que INSERT fila por fila - Inspeccionar esquemas, tablas, índices y restricciones
Ejemplo
Sección titulada «Ejemplo»async function main() { const conn = "my-pg";
// Query with parameters try { const rows = await g.postgres.query(conn, "SELECT id, name, price FROM products WHERE category = $1 ORDER BY price", ["electronics"] );
// Transaction: insert order + update stock atomically const result = await g.postgres.transaction(conn, async (tx) => { await tx.execute( "INSERT INTO orders (product_id, qty) VALUES ($1, $2)", [42, 3] ); await tx.execute( "UPDATE products SET stock = stock - $1 WHERE id = $2", [3, 42] ); return await tx.scalar("SELECT count(*) FROM orders"); }); g.log("Total orders: " + result);
// Bulk import via COPY (fast) const copyResult = await g.postgres.copyFrom(conn, "products", [ ["Widget A", 9.99, 100], ["Widget B", 14.99, 50] ], { columns: ["name", "price", "stock"] }); g.log("Imported " + copyResult.rowsCopied + " rows"); } catch (e) { g.log("Error: " + e.message); }}14 métodos en total; vea la Referencia de API para la lista completa.
Seguridad
Sección titulada «Seguridad»Todas las integraciones de bases de datos siguen el mismo modelo de seguridad que las credenciales de acceso:
- Los scripts originados por MCP están bloqueados. Cuando un agente de IA ejecuta un script mediante MCP, todas las llamadas
g.s3.*,g.mongodb.*yg.postgres.*devuelven un error. Esto impide que la IA acceda a bases externas mediante automatización con scripts. - Los procesos de trabajo heredan el origen de su lanzador. Si MCP inicia un pool de procesos, esos procesos también quedan bloqueados para acceso a bases de datos.
- Los scripts iniciados por el usuario tienen acceso completo. Los scripts ejecutados con F5, disparadores de eventos y procesadores de cola pueden usar todos los métodos de base de datos.
Las cadenas de conexión nunca se exponen mediante herramientas MCP: la IA solo ve el nombre de la credencial, no las credenciales.
Siguientes pasos
Sección titulada «Siguientes pasos»- Referencia de API — firmas completas e interfaces para almacenamiento compatible con S3, MongoDB y PostgreSQL
- Credenciales de acceso — gestionar credenciales de conexión cifradas
- Espacios de trabajo — almacenamiento y configuración limitados al espacio de trabajo
- Extraer y almacenar datos de una página — empezar con almacenamiento local al espacio de trabajo antes de añadir bases externas