UNPKG

rework-mcp-server

Version:

Rework MCP Server - Integrate rework tasks with AI through Model Context Protocol

114 lines (113 loc) 5.26 kB
/** * SPDX-FileCopyrightText: © 2025 Talib Kareem <taazkareem@icloud.com> * SPDX-License-Identifier: MIT * * Configuration handling for ClickUp API credentials and application settings * * The required environment variables (REWORK_API_KEY and REWORK_TEAM_ID) are passed * securely to this file when running the hosted server at smithery.ai. Optionally, * they can be parsed via command line arguments when running the server locally. * * The document support is optional and can be passed via command line arguments. * The default value is 'false' (string), which means document support will be disabled if * no parameter is passed. Pass it as 'true' (string) to enable it. */ // Parse any command line environment arguments const args = process.argv.slice(2); const envArgs = {}; for (let i = 0; i < args.length; i++) { if (args[i] === '--env' && i + 1 < args.length) { const [key, value] = args[i + 1].split('='); if (key === 'REWORK_PROJECT_ACCESS_TOKEN') envArgs.reworkProjectAccessToken = value; if (key === 'REWORK_PROJECT_PASSWORD') envArgs.reworkProjectPassword = value; if (key === 'REWORK_ACCOUNT_ACCESS_TOKEN') envArgs.reworkAccountAccessToken = value; if (key === 'REWORK_ACCOUNT_PASSWORD') envArgs.reworkAccountPassword = value; if (key === 'REWORK_WORKFLOW_ACCESS_TOKEN') envArgs.reworkWorkflowAccessToken = value; if (key === 'REWORK_WORKFLOW_PASSWORD') envArgs.reworkWorkflowPassword = value; if (key === 'DOCUMENT_SUPPORT') envArgs.documentSupport = value; if (key === 'DOCUMENT_MODEL') envArgs.documentSupport = value; // Backward compatibility if (key === 'DOCUMENT_MODULE') envArgs.documentSupport = value; // Backward compatibility if (key === 'LOG_LEVEL') envArgs.logLevel = value; if (key === 'DISABLED_TOOLS') envArgs.disabledTools = value; if (key === 'DISABLED_COMMANDS') envArgs.disabledTools = value; // Backward compatibility if (key === 'ENABLE_SSE') envArgs.enableSSE = value; if (key === 'PORT') envArgs.port = value; i++; } } // Log levels enum export var LogLevel; (function (LogLevel) { LogLevel[LogLevel["TRACE"] = 0] = "TRACE"; LogLevel[LogLevel["DEBUG"] = 1] = "DEBUG"; LogLevel[LogLevel["INFO"] = 2] = "INFO"; LogLevel[LogLevel["WARN"] = 3] = "WARN"; LogLevel[LogLevel["ERROR"] = 4] = "ERROR"; })(LogLevel || (LogLevel = {})); // Parse LOG_LEVEL string to LogLevel enum export const parseLogLevel = (levelStr) => { if (!levelStr) return LogLevel.ERROR; // Default to ERROR if not specified switch (levelStr.toUpperCase()) { case 'TRACE': return LogLevel.TRACE; case 'DEBUG': return LogLevel.DEBUG; case 'INFO': return LogLevel.INFO; case 'WARN': return LogLevel.WARN; case 'ERROR': return LogLevel.ERROR; default: // Don't use console.error as it interferes with JSON-RPC communication return LogLevel.ERROR; } }; console.log(process.env); // Load configuration from command line args or environment variables const configuration = { reworkProjectAccessToken: envArgs.reworkProjectAccessToken || process.env.REWORK_PROJECT_ACCESS_TOKEN || '', reworkProjectPassword: envArgs.reworkProjectPassword || process.env.REWORK_PROJECT_PASSWORD || '', reworkAccountAccessToken: envArgs.reworkAccountAccessToken || process.env.REWORK_ACCOUNT_ACCESS_TOKEN || '', reworkAccountPassword: envArgs.reworkAccountPassword || process.env.REWORK_ACCOUNT_PASSWORD || '', reworkWorkflowAccessToken: envArgs.reworkWorkflowAccessToken || process.env.REWORK_WORKFLOW_ACCESS_TOKEN || '', reworkWorkflowPassword: envArgs.reworkWorkflowPassword || process.env.REWORK_WORKFLOW_PASSWORD || '', enableSponsorMessage: process.env.ENABLE_SPONSOR_MESSAGE !== 'false', documentSupport: envArgs.documentSupport || process.env.DOCUMENT_SUPPORT || process.env.DOCUMENT_MODULE || process.env.DOCUMENT_MODEL || 'false', logLevel: parseLogLevel(envArgs.logLevel || process.env.LOG_LEVEL), disabledTools: (envArgs.disabledTools || process.env.DISABLED_TOOLS || process.env.DISABLED_COMMANDS) ?.split(',') .map(cmd => cmd.trim()) .filter(cmd => cmd !== '') || [], enableSSE: envArgs.enableSSE === 'true' || process.env.ENABLE_SSE === 'true' || false, port: envArgs.port || process.env.PORT || '3231', }; // Don't log to console as it interferes with JSON-RPC communication // Validate only the required variables are present const requiredVars = ['reworkProjectAccessToken', 'reworkProjectPassword', 'reworkAccountAccessToken', 'reworkAccountPassword', 'reworkWorkflowAccessToken', 'reworkWorkflowPassword']; const missingEnvVars = requiredVars .filter(key => !configuration[key]) .map(key => key); if (missingEnvVars.length > 0) { throw new Error(`Missing required environment variables: ${missingEnvVars.join(', ')}`); } export default configuration;