UNPKG

@hauptsache.net/clickup-mcp

Version:

Transform your AI assistant into a powerful ClickUp integration for both agentic coding and productivity management. Enables seamless task context sharing, intelligent search, time tracking, and complete project management workflows.

66 lines (65 loc) 3.12 kB
#!/usr/bin/env node "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.serverPromise = exports.server = void 0; const mcp_js_1 = require("@modelcontextprotocol/sdk/server/mcp.js"); const stdio_js_1 = require("@modelcontextprotocol/sdk/server/stdio.js"); const config_1 = require("./shared/config"); const utils_1 = require("./shared/utils"); // Import tool registration functions const task_tools_1 = require("./tools/task-tools"); const task_write_tools_1 = require("./tools/task-write-tools"); const search_tools_1 = require("./tools/search-tools"); const space_tools_1 = require("./tools/space-tools"); const list_tools_1 = require("./tools/list-tools"); const time_tools_1 = require("./tools/time-tools"); // Create an MCP server const server = new mcp_js_1.McpServer({ name: "Clickup MCP", version: require('../package.json').version, }); exports.server = server; // Register tools based on mode with user data for enhanced documentation async function initializeServer() { console.error(`Starting ClickUp MCP in ${config_1.CONFIG.mode} mode`); // Fetch current user for enhanced tool documentation and API health check const userData = await (0, utils_1.getCurrentUser)(); console.error(`Connected as: ${userData.user.username} (${userData.user.email})`); if (config_1.CONFIG.mode === 'read-minimal') { // Core task context tools for AI coding assistance // Only getTaskById and searchTasks (0, task_tools_1.registerTaskToolsRead)(server, userData); (0, search_tools_1.registerSearchTools)(server, userData); } else if (config_1.CONFIG.mode === 'read') { // All read-only tools (0, task_tools_1.registerTaskToolsRead)(server, userData); (0, search_tools_1.registerSearchTools)(server, userData); (0, space_tools_1.registerSpaceTools)(server); (0, list_tools_1.registerListToolsRead)(server); (0, time_tools_1.registerTimeToolsRead)(server); } else if (config_1.CONFIG.mode === 'write') { // All tools (full functionality) (0, task_tools_1.registerTaskToolsRead)(server, userData); (0, task_write_tools_1.registerTaskToolsWrite)(server, userData); (0, search_tools_1.registerSearchTools)(server, userData); (0, space_tools_1.registerSpaceTools)(server); (0, list_tools_1.registerListToolsRead)(server); (0, list_tools_1.registerListToolsWrite)(server); (0, time_tools_1.registerTimeToolsRead)(server); (0, time_tools_1.registerTimeToolsWrite)(server); } return server; } // Initialize server with enhanced documentation and export const serverPromise = initializeServer(); exports.serverPromise = serverPromise; // Only connect to the transport if this file is being run directly (not imported) if (require.main === module) { // Start receiving messages on stdin and sending messages on stdout after initialization serverPromise.then(() => { const transport = new stdio_js_1.StdioServerTransport(); server.connect(transport); }).catch(console.error); }