UNPKG

@etm-professional-control/winccoa-mcp-server

Version:

MCP Server for WinCC OA with field-specific configurations

78 lines (75 loc) 3.22 kB
/** * Archive Delete Tool * * MCP tool for deleting archive configurations from datapoint elements. */ import { z } from 'zod'; import { createSuccessResponse, createErrorResponse } from '../../utils/helpers.js'; import { DpConfigType } from '../../types/winccoa/constants.js'; /** * Check if an archive configuration exists */ async function hasArchiveConfig(winccoa, dpe) { try { const archiveType = await winccoa.dpGet(`${dpe}:_archive.._type`); return archiveType !== DpConfigType.DPCONFIG_NONE && archiveType !== null && archiveType !== undefined; } catch (error) { return false; } } /** * Register archive delete tools * @param server - MCP server instance * @param context - Server context with winccoa, configs, etc. * @returns Number of tools registered */ export function registerTools(server, context) { const { winccoa } = context; server.tool("archive-delete", `Delete archive configuration from a datapoint element in WinCC OA. This tool removes the archive configuration from the specified datapoint element. Example: { "dpe": "System1:Temperature." } CAUTION: This permanently removes archive configurations. Historical data collection will stop for this element. `, { dpe: z.string().describe('Datapoint element name (e.g., System1:MyTag.)') }, async ({ dpe }) => { try { console.log('========================================'); console.log('Deleting Archive Configuration'); console.log('========================================'); console.log(`DPE: ${dpe}`); // Check if DPE exists if (!winccoa.dpExists(dpe)) { throw new Error(`DPE ${dpe} does not exist in the system`); } // Check if archive configuration exists const hasConfig = await hasArchiveConfig(winccoa, dpe); if (!hasConfig) { return createErrorResponse(`No archive configuration exists for ${dpe}`); } // Delete the configuration by setting type to NONE console.log(`Deleting archive configuration for ${dpe}`); await winccoa.dpSetWait(`${dpe}:_archive.._type`, DpConfigType.DPCONFIG_NONE); console.log('========================================'); console.log('✓ Archive Configuration Deleted'); console.log('========================================'); return createSuccessResponse({ dpe: dpe, message: 'Archive configuration deleted successfully' }); } catch (error) { const errorMessage = error instanceof Error ? error.message : String(error); console.error('========================================'); console.error('✗ Archive Deletion Failed'); console.error('========================================'); console.error(`Error: ${errorMessage}`); return createErrorResponse(`Failed to delete archive configuration: ${errorMessage}`); } }); return 1; // Number of tools registered } //# sourceMappingURL=archive_delete.js.map