UNPKG

@codesys/mcp-toolkit

Version:

Model Context Protocol (MCP) server for CODESYS automation platform

72 lines (71 loc) 3.38 kB
#!/usr/bin/env node "use strict"; /** * CODESYS MCP Server CLI * Command-line interface for starting the CODESYS MCP server * with configurable CODESYS executable paths and profile names. * * This is the entry point for the MCP toolkit when invoked as a command-line tool. * It handles argument parsing and passes configuration to server.ts via function parameters. */ Object.defineProperty(exports, "__esModule", { value: true }); // Use Commander for initial parsing const commander_1 = require("commander"); // Import the server setup function const server_js_1 = require("./server.js"); // Adjust path if needed console.error(">>> BIN.TS Starting <<<"); // Define version from package.json // Use import assertion for JSON in ES modules if possible, otherwise require is okay for CommonJS let version = 'unknown'; try { // Assuming CommonJS based on package.json type="commonjs" const packageJson = require('../package.json'); version = packageJson.version; } catch (e) { console.error("BIN.TS: Warning - Could not read package.json for version.", e); } commander_1.program .name('codesys-mcp-tool') // Set the command name users will see .description('Model Context Protocol (MCP) server for CODESYS automation platform') .version(version) .option(// Use options consistently '-p, --codesys-path <path>', 'Path to CODESYS executable (can contain spaces, use quotes if needed)', process.env.CODESYS_PATH || 'C:\\Program Files\\CODESYS 3.5.21.0\\CODESYS\\Common\\CODESYS.exe' // Default AFTER reading env var ) .option('-f, --codesys-profile <profile>', // Changed alias to 'f' to avoid conflict if you add other '-p' options 'CODESYS profile name (overrides CODESYS_PROFILE env var)', process.env.CODESYS_PROFILE || 'CODESYS V3.5 SP21' // Default AFTER reading env var ) // Add workspace option if needed, defaults to cwd .option('-w, --workspace <dir>', 'Workspace directory for relative project paths', process.cwd() // Default to current working directory ) .parse(process.argv); // Parse the arguments const options = commander_1.program.opts(); // --- Log the options Commander parsed --- console.error(`========================================`); console.error(`Starting CODESYS MCP Server v${version}`); console.error(`BIN.TS Options: ${JSON.stringify(options)}`); console.error(` CODESYS Path Used: ${options.codesysPath}`); console.error(` CODESYS Profile Used: ${options.codesysProfile}`); console.error(` Workspace Used: ${options.workspace}`); console.error(` Node.js: ${process.version}`); console.error(`========================================`); // --- End Logging --- // --- Prepare Config for Server --- const serverConfig = { codesysPath: options.codesysPath.trim(), profileName: options.codesysProfile.trim(), workspaceDir: options.workspace.trim() // Pass workspace dir }; // --- End Prepare Config --- // --- Call the server setup function --- console.error("BIN.TS: Calling startMcpServer..."); (0, server_js_1.startMcpServer)(serverConfig) .then(() => { console.error("BIN.TS: startMcpServer finished (likely connected and listening)."); // Keep process alive (server handles shutdown) }) .catch(error => { console.error("BIN.TS: FATAL error during server startup:", error); process.exit(1); }); console.error(">>> BIN.TS End of synchronous execution <<<");