write_query
Execute INSERT, UPDATE, or DELETE queries on DBeaver database connections to modify data across 200+ database types without additional configuration.
Instructions
Execute INSERT, UPDATE, or DELETE queries on a specific DBeaver connection
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| connectionId | Yes | The ID or name of the DBeaver connection to use | |
| query | Yes | The SQL query to execute (INSERT, UPDATE, DELETE) |
Implementation Reference
- src/index.ts:671-712 (handler)Main handler function that validates the query (ensures it's INSERT/UPDATE/DELETE, not SELECT), sanitizes connection ID, fetches the connection, executes the query using DBeaver client, and returns a JSON response with execution details including affected rows.private async handleWriteQuery(args: { connectionId: string; query: string }) { const connectionId = sanitizeConnectionId(args.connectionId); const query = args.query.trim(); // Validate query type const lowerQuery = query.toLowerCase(); if (lowerQuery.startsWith('select')) { throw new McpError(ErrorCode.InvalidParams, 'Use execute_query for SELECT operations'); } if (!(lowerQuery.startsWith('insert') || lowerQuery.startsWith('update') || lowerQuery.startsWith('delete'))) { throw new McpError(ErrorCode.InvalidParams, 'Only INSERT, UPDATE, or DELETE operations are allowed with write_query'); } // Additional validation const validationError = validateQuery(query); if (validationError) { throw new McpError(ErrorCode.InvalidParams, validationError); } const connection = await this.configParser.getConnection(connectionId); if (!connection) { throw new McpError(ErrorCode.InvalidParams, `Connection not found: ${connectionId}`); } const result = await this.dbeaverClient.executeQuery(connection, query); const response = { query: query, connection: connection.name, executionTime: result.executionTime, affectedRows: result.rowCount, success: true }; return { content: [{ type: 'text' as const, text: JSON.stringify(response, null, 2), }], }; }
- src/index.ts:244-261 (schema)Input schema definition for the write_query tool in the list of tools, defining required parameters: connectionId (string) and query (string), with descriptions.{ name: 'write_query', description: 'Execute INSERT, UPDATE, or DELETE queries on a specific DBeaver connection', inputSchema: { type: 'object', properties: { connectionId: { type: 'string', description: 'The ID or name of the DBeaver connection to use', }, query: { type: 'string', description: 'The SQL query to execute (INSERT, UPDATE, DELETE)', }, }, required: ['connectionId', 'query'], }, },
- src/index.ts:494-498 (registration)Switch case in CallToolRequest handler that routes 'write_query' calls to the handleWriteQuery method, casting arguments to the expected type.case 'write_query': return await this.handleWriteQuery(args as { connectionId: string; query: string; });