UNPKG

@rigo-m/clickup-mcp-server

Version:

ClickUp MCP Server - Integrate ClickUp tasks with AI through Model Context Protocol

45 lines (44 loc) 1.76 kB
/** * SPDX-FileCopyrightText: © 2025 Talib Kareem <taazkareem@icloud.com> * SPDX-License-Identifier: MIT * * Shared Services Module * * This module maintains singleton instances of services that should be shared * across the application to ensure consistent state. */ import { createClickUpServices } from './clickup/index.js'; import { getConfig } from '../config.js'; import { Logger } from '../logger.js'; // Logger for service initialization events const logger = new Logger('SharedServices'); /** * Proxy for lazy initialization of ClickUp services */ const _servicesProxyTarget = {}; export const clickUpServices = new Proxy(_servicesProxyTarget, { get(target, prop, receiver) { if (!target._instance) { try { const cfg = getConfig(); logger.info('Creating shared ClickUp services singleton', { teamId: cfg.clickupTeamId }); target._instance = createClickUpServices({ apiKey: cfg.clickupApiKey, teamId: cfg.clickupTeamId }); logger.info('Services initialization complete', { services: Object.keys(target._instance).join(', '), teamId: cfg.clickupTeamId }); } catch (err) { // Configuration not initialized yet; defer initialization throw err; } } const instance = target._instance; return instance[prop]; } }); // Export individual services for convenience export const { list: listService, task: taskService, folder: folderService, workspace: workspaceService, timeTracking: timeTrackingService, document: documentService } = clickUpServices;