UNPKG

firewalla-mcp-server

Version:

Model Context Protocol (MCP) server for Firewalla MSP API - Provides real-time network monitoring, security analysis, and firewall management through 28 specialized tools compatible with any MCP client

60 lines 2.79 kB
/** * Bulk alarm management tool handlers */ import { BaseToolHandler } from './base.js'; import { createErrorResponse, ErrorType, } from '../../validation/error-handler.js'; import { BulkOperationManager, validateBulkOperationArgs, } from '../../utils/bulk-operation-manager.js'; import { withToolTimeout } from '../../utils/timeout-manager.js'; /** * Bulk delete multiple alarms */ export class BulkDeleteAlarmsHandler extends BaseToolHandler { constructor() { super({ enableGeoEnrichment: false, // No IP fields in bulk operation results enableFieldNormalization: true, additionalMeta: { data_source: 'bulk_alarms', entity_type: 'bulk_alarm_deletion', supports_geographic_enrichment: false, supports_field_normalization: true, standardization_version: '2.0.0', }, }); this.name = 'bulk_delete_alarms'; this.description = 'Delete multiple security alarms in a single operation. Requires array of alarm IDs. Use with caution as this permanently removes alarms.'; this.category = 'security'; } async execute(args, firewalla) { // Validate bulk operation arguments const validation = validateBulkOperationArgs(args); if (!validation.isValid) { return createErrorResponse(this.name, 'Parameter validation failed', ErrorType.VALIDATION_ERROR, undefined, validation.errors); } const { ids } = validation.sanitizedArgs; const manager = BulkOperationManager.forAlarms(); // Validate the IDs array const bulkValidation = manager.validateBulkParams(ids); if (!bulkValidation.isValid) { return createErrorResponse(this.name, 'Bulk operation validation failed', ErrorType.VALIDATION_ERROR, undefined, bulkValidation.errors); } // Define the delete operation for individual alarms const deleteOperation = async (alarmId) => { return withToolTimeout(async () => firewalla.deleteAlarm(alarmId), `${this.name}_item`, 5000 // 5 second timeout per alarm ); }; // Execute the bulk operation const startTime = Date.now(); const result = await manager.executeBulkOperation(bulkValidation.sanitizedIds, deleteOperation, firewalla, 'delete_alarms'); const unifiedResponseData = { operation: this.name, bulk_operation_result: result, timestamp: new Date().toISOString(), }; const executionTime = Date.now() - startTime; return this.createUnifiedResponse(unifiedResponseData, { executionTimeMs: executionTime, }); } } //# sourceMappingURL=bulk-alarms.js.map