eliminarClaveForanea
Remove a foreign key constraint from a database table to modify relationships, requiring explicit confirmation to prevent orphaned data and maintain referential integrity.
Instructions
Sigue estas reglas OBLIGATORIAS para eliminar una clave foránea: ADVERTENCIA INICIAL: Informa al usuario que eliminar una clave foránea puede llevar a datos huérfanos y romper la integridad referencial. CONFIRMACIÓN EXPLÍCITA: Para proceder, el usuario DEBE escribir la frase exacta: "Confirmar eliminación de la clave foránea [nombreFK] de la tabla [nombreTabla]". VERIFICACIÓN ESTRICTA: No ejecutes la eliminación si la confirmación no es exacta. USO: Especifica la tabla y el nombre de la clave foránea a eliminar. EJEMPLO: "Elimina la clave foránea fk_cliente de la tabla ventas."
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| nombre | Yes | Nombre de la clave foránea | |
| tabla | Yes | Nombre de la tabla |
Implementation Reference
- mcp_server.js:634-650 (handler)The handler function that validates inputs, constructs the appropriate SQL ALTER TABLE statement to drop the foreign key constraint (depending on MySQL or other DB), executes it via query_runner, and returns success or error messages.async ({ tabla, nombre }) => { try { if (!tabla || !nombre) { return { isError: true, content: [{ type: 'text', text: 'Debes proporcionar la tabla y el nombre de la clave foránea.' }] }; } let sql; if (db_type === 'mysql') { sql = `ALTER TABLE ${quoteIdent(tabla)} DROP FOREIGN KEY ${quoteIdent(nombre)}`; } else { sql = `ALTER TABLE ${quoteIdent(tabla)} DROP CONSTRAINT ${quoteIdent(nombre)}`; } await query_runner.runQuery(sql); return { content: [{ type: 'text', text: 'Clave foránea eliminada exitosamente.' }] }; } catch (e) { return { isError: true, content: [{ type: 'text', text: 'Error al eliminar clave foránea: ' + (e.message || e) }] }; } }
- mcp_server.js:630-633 (schema)Zod schema defining the input parameters: 'tabla' (table name) and 'nombre' (foreign key name).{ tabla: z.string().describe('Nombre de la tabla'), nombre: z.string().describe('Nombre de la clave foránea'), },
- mcp_server.js:622-651 (registration)The server.tool registration call that defines the tool name, detailed description with safety rules and confirmation requirements, schema, and inline handler function.server.tool( 'eliminarClaveForanea', 'Sigue estas reglas OBLIGATORIAS para eliminar una clave foránea:\n' + 'ADVERTENCIA INICIAL: Informa al usuario que eliminar una clave foránea puede llevar a datos huérfanos y romper la integridad referencial.\n' + 'CONFIRMACIÓN EXPLÍCITA: Para proceder, el usuario DEBE escribir la frase exacta: "Confirmar eliminación de la clave foránea [nombreFK] de la tabla [nombreTabla]".\n' + 'VERIFICACIÓN ESTRICTA: No ejecutes la eliminación si la confirmación no es exacta.\n' + 'USO: Especifica la tabla y el nombre de la clave foránea a eliminar.\n' + 'EJEMPLO: "Elimina la clave foránea fk_cliente de la tabla ventas."', { tabla: z.string().describe('Nombre de la tabla'), nombre: z.string().describe('Nombre de la clave foránea'), }, async ({ tabla, nombre }) => { try { if (!tabla || !nombre) { return { isError: true, content: [{ type: 'text', text: 'Debes proporcionar la tabla y el nombre de la clave foránea.' }] }; } let sql; if (db_type === 'mysql') { sql = `ALTER TABLE ${quoteIdent(tabla)} DROP FOREIGN KEY ${quoteIdent(nombre)}`; } else { sql = `ALTER TABLE ${quoteIdent(tabla)} DROP CONSTRAINT ${quoteIdent(nombre)}`; } await query_runner.runQuery(sql); return { content: [{ type: 'text', text: 'Clave foránea eliminada exitosamente.' }] }; } catch (e) { return { isError: true, content: [{ type: 'text', text: 'Error al eliminar clave foránea: ' + (e.message || e) }] }; } } );