@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
JavaScript
;
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);
}