UNPKG

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

Version:

MCP Server for WinCC OA with field-specific configurations

45 lines 2.22 kB
import { z } from 'zod'; import { createSuccessResponse, createErrorResponse } from '../../utils/helpers.js'; /** * Register datapoint type management tools * @param {McpServer} server - MCP server instance * @param {Object} context - Server context with winccoa, configs, etc. * @returns {number} Number of tools registered */ export function registerTools(server, context) { const { winccoa } = context; server.tool("dp-type-get", "Get structure of a data point type as a tree of nodes.\n" + "\ndpt: Data point type name to retrieve structure for\n" + "includeSubTypes: Optional flag to include subtypes in the result (default: false)\n" + "\nReturns: WinccoaDpTypeNode structure representing the complete hierarchy of the data point type\n" + "including all elements, their data types, and structural relationships.", { dpType: z.string(), withSubTypes: z.boolean().optional(), }, async ({ dpType, withSubTypes }) => { try { const result = winccoa.dpTypeGet(dpType, withSubTypes); return createSuccessResponse(result); } catch (error) { console.error(`Error getting datapoint type ${dpType}:`, error); return createErrorResponse(`Failed to get datapoint type ${dpType}: ${error.message}`); } }); server.tool("dp-type-name", "Returns the data point type for the given data point name.\n" + "\ndpName: Name of the data point (for example, 'valve.opening')\n" + "\nReturns: DP type as a string, or empty string if data point doesn't exist or error occurs.\n" + "\nExample: dpTypeName('Valve17.opening') might return 'AnalogValve'", { dpName: z.string(), }, async ({ dpName }) => { try { const result = winccoa.dpTypeName(dpName); return createSuccessResponse({ dpName, typeName: result }); } catch (error) { console.error(`Error getting type name for ${dpName}:`, error); return createErrorResponse(`Failed to get type name for ${dpName}: ${error.message}`); } }); return 3; // Number of tools registered } //# sourceMappingURL=dp_types.js.map