Skip to main content
Glama

firewalla-mcp-server

bulk-alarms.ts2.91 kB
/** * Bulk alarm management tool handlers */ import { BaseToolHandler, type ToolArgs, type ToolResponse } from './base.js'; import type { FirewallaClient } from '../../firewalla/client.js'; import { createErrorResponse, ErrorType, } from '../../validation/error-handler.js'; import { BulkOperationManager, validateBulkOperationArgs, type BulkOperationFunction, } from '../../utils/bulk-operation-manager.js'; import { withToolTimeout } from '../../utils/timeout-manager.js'; /** * Bulk delete multiple alarms */ export class BulkDeleteAlarmsHandler extends BaseToolHandler { name = 'bulk_delete_alarms'; description = 'Delete multiple security alarms in a single operation. Requires array of alarm IDs. Use with caution as this permanently removes alarms.'; category = 'security' as const; 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', }, }); } async execute( args: ToolArgs, firewalla: FirewallaClient ): Promise<ToolResponse> { // 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: BulkOperationFunction = async (alarmId: string) => { 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, }); } }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/amittell/firewalla-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server