insertarDatos
Add new records to database tables by providing an array of data objects. This tool inserts one or multiple rows into specified tables without modifying existing data or table structure.
Instructions
Sigue estas reglas para insertar datos: PROPÓSITO: Insertar uno o varios registros (filas) nuevos en una tabla. REGLA: Solo debe usarse para agregar datos nuevos. No la uses para actualizar registros existentes ni para modificar la estructura de la tabla. FORMATO: Los datos deben ser un array de objetos, donde cada objeto es un registro. EJEMPLO: "Agrega un cliente con nombre Juan a la tabla clientes."
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| datos | Yes | Array de objetos con los datos a insertar | |
| tabla | Yes | Nombre de la tabla |
Implementation Reference
- mcp_server.js:324-354 (handler)Executes the insertion of one or more records into the specified table. Constructs parameterized INSERT SQL dynamically from data objects, supports multiple DB types via placeholders, uses query_runner for execution, and returns success count or error.async ({ tabla, datos }) => { try { if (!datos || !Array.isArray(datos) || datos.length === 0) { return { isError: true, content: [{ type: 'text', text: 'Debes proporcionar un array de datos para insertar.' }] }; } let insertedCount = 0; for (const registro of datos) { const columnas = Object.keys(registro); const valores = Object.values(registro); const placeholders = makePlaceholders(db_type, valores.length).join(', '); const columnasStr = columnas.map(col => quoteIdent(col)).join(', '); const sql = `INSERT INTO ${quoteIdent(tabla)} (${columnasStr}) VALUES (${placeholders})`; await query_runner.runQueryWithParams(sql, valores); insertedCount++; } return { content: [{ type: 'text', text: `Se insertaron ${insertedCount} registro(s) en la tabla '${tabla}' exitosamente.` }] }; } catch (e) { return { isError: true, content: [{ type: 'text', text: 'Error al insertar datos: ' + (e.message || e) }] }; } }
- mcp_server.js:320-323 (schema)Zod input schema defining 'tabla' as string and 'datos' as array of objects for validation.{ tabla: z.string().describe('Nombre de la tabla'), datos: z.array(z.record(z.any())).describe('Array de objetos con los datos a insertar'), },
- mcp_server.js:313-355 (registration)Full registration of the 'insertarDatos' tool using server.tool(), including description, input schema, and inline handler function.server.tool( 'insertarDatos', 'Sigue estas reglas para insertar datos:\n' + 'PROPÓSITO: Insertar uno o varios registros (filas) nuevos en una tabla.\n' + 'REGLA: Solo debe usarse para agregar datos nuevos. No la uses para actualizar registros existentes ni para modificar la estructura de la tabla.\n' + 'FORMATO: Los datos deben ser un array de objetos, donde cada objeto es un registro.\n' + 'EJEMPLO: "Agrega un cliente con nombre Juan a la tabla clientes."', { tabla: z.string().describe('Nombre de la tabla'), datos: z.array(z.record(z.any())).describe('Array de objetos con los datos a insertar'), }, async ({ tabla, datos }) => { try { if (!datos || !Array.isArray(datos) || datos.length === 0) { return { isError: true, content: [{ type: 'text', text: 'Debes proporcionar un array de datos para insertar.' }] }; } let insertedCount = 0; for (const registro of datos) { const columnas = Object.keys(registro); const valores = Object.values(registro); const placeholders = makePlaceholders(db_type, valores.length).join(', '); const columnasStr = columnas.map(col => quoteIdent(col)).join(', '); const sql = `INSERT INTO ${quoteIdent(tabla)} (${columnasStr}) VALUES (${placeholders})`; await query_runner.runQueryWithParams(sql, valores); insertedCount++; } return { content: [{ type: 'text', text: `Se insertaron ${insertedCount} registro(s) en la tabla '${tabla}' exitosamente.` }] }; } catch (e) { return { isError: true, content: [{ type: 'text', text: 'Error al insertar datos: ' + (e.message || e) }] }; } } );