Ir al contenido

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().

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=pass
const 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:

  1. Abra el panel Secrets
  2. 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
  3. Use el nombre de la credencial en sus scripts

Diálogo Add PostgreSQL Connection en el panel Secrets, con campos Name, Connection String con marcador de ejemplo y Description

Los diálogos de conexión a bases de datos almacenan cadenas de conexión como credenciales cifradas que los scripts usan por nombre.


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=true

Para MinIO ejecutándose localmente:

endpoint=127.0.0.1:9000;accessKey=minioadmin;secretKey=minioadmin;secure=false

Casos 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
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.


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:27017

Para 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 insertMany y bulkWrite
  • Indexar campos para búsquedas rápidas
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.


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=pass

Todas 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 copyFrom mediante protocolo COPY, mucho más rápido que INSERT fila por fila
  • Inspeccionar esquemas, tablas, índices y restricciones
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.


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.* y g.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.