UNPKG

clickup-mcp-server

Version:

A Model Context Protocol (MCP) server that provides a standardized interface for AI assistants to interact with the ClickUp API

139 lines 6.63 kB
import { z } from 'zod'; import { createClickUpClient } from '../clickup-client/index.js'; import { createChecklistsClient } from '../clickup-client/checklists.js'; // Create clients const clickUpClient = createClickUpClient(); const checklistsClient = createChecklistsClient(clickUpClient); export function setupChecklistTools(server) { // Register create_checklist tool server.tool('create_checklist', 'Create a new checklist in a ClickUp task. Returns the created checklist details.', { task_id: z.string().describe('The ID of the task to create the checklist in'), name: z.string().describe('The name of the checklist') }, async ({ task_id, name }) => { try { const checklist = await checklistsClient.createChecklist(task_id, { name }); return { content: [{ type: 'text', text: JSON.stringify(checklist, null, 2) }] }; } catch (error) { console.error('Error creating checklist:', error); return { content: [{ type: 'text', text: `Error creating checklist: ${error.message}` }], isError: true }; } }); // Register update_checklist tool server.tool('update_checklist', 'Update an existing ClickUp checklist\'s name.', { checklist_id: z.string().describe('The ID of the checklist to update'), name: z.string().describe('The new name of the checklist') }, async ({ checklist_id, name }) => { try { const checklist = await checklistsClient.updateChecklist(checklist_id, { name }); return { content: [{ type: 'text', text: JSON.stringify(checklist, null, 2) }] }; } catch (error) { console.error('Error updating checklist:', error); return { content: [{ type: 'text', text: `Error updating checklist: ${error.message}` }], isError: true }; } }); // Register delete_checklist tool server.tool('delete_checklist', 'Delete a checklist from a ClickUp task. Removes the checklist and all its items.', { checklist_id: z.string().describe('The ID of the checklist to delete') }, async ({ checklist_id }) => { try { const result = await checklistsClient.deleteChecklist(checklist_id); return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }] }; } catch (error) { console.error('Error deleting checklist:', error); return { content: [{ type: 'text', text: `Error deleting checklist: ${error.message}` }], isError: true }; } }); // Register create_checklist_item tool server.tool('create_checklist_item', 'Create a new item in a ClickUp checklist. Supports optional assignee and resolved status.', { checklist_id: z.string().describe('The ID of the checklist to create the item in'), name: z.string().describe('The name of the checklist item'), assignee: z.number().optional().describe('The ID of the user to assign to the checklist item'), resolved: z.boolean().optional().describe('Whether the checklist item is resolved') }, async ({ checklist_id, name, assignee, resolved }) => { try { const itemParams = { name }; if (assignee !== undefined) itemParams.assignee = assignee; if (resolved !== undefined) itemParams.resolved = resolved; const checklistItem = await checklistsClient.createChecklistItem(checklist_id, itemParams); return { content: [{ type: 'text', text: JSON.stringify(checklistItem, null, 2) }] }; } catch (error) { console.error('Error creating checklist item:', error); return { content: [{ type: 'text', text: `Error creating checklist item: ${error.message}` }], isError: true }; } }); // Register update_checklist_item tool server.tool('update_checklist_item', 'Update an existing ClickUp checklist item\'s properties including name, assignee, and resolved status.', { checklist_id: z.string().describe('The ID of the checklist containing the item'), checklist_item_id: z.string().describe('The ID of the checklist item to update'), name: z.string().optional().describe('The new name of the checklist item'), assignee: z.number().optional().describe('The ID of the user to assign to the checklist item'), resolved: z.boolean().optional().describe('Whether the checklist item is resolved') }, async ({ checklist_id, checklist_item_id, name, assignee, resolved }) => { try { const itemParams = {}; if (name !== undefined) itemParams.name = name; if (assignee !== undefined) itemParams.assignee = assignee; if (resolved !== undefined) itemParams.resolved = resolved; const checklistItem = await checklistsClient.updateChecklistItem(checklist_id, checklist_item_id, itemParams); return { content: [{ type: 'text', text: JSON.stringify(checklistItem, null, 2) }] }; } catch (error) { console.error('Error updating checklist item:', error); return { content: [{ type: 'text', text: `Error updating checklist item: ${error.message}` }], isError: true }; } }); // Register delete_checklist_item tool server.tool('delete_checklist_item', 'Delete an item from a ClickUp checklist.', { checklist_id: z.string().describe('The ID of the checklist containing the item'), checklist_item_id: z.string().describe('The ID of the checklist item to delete') }, async ({ checklist_id, checklist_item_id }) => { try { const result = await checklistsClient.deleteChecklistItem(checklist_id, checklist_item_id); return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }] }; } catch (error) { console.error('Error deleting checklist item:', error); return { content: [{ type: 'text', text: `Error deleting checklist item: ${error.message}` }], isError: true }; } }); } //# sourceMappingURL=checklist-tools.js.map