clickup_create_task
Create new tasks in ClickUp with name, description, priority, due dates, tags, and custom fields to organize and track work efficiently.
Instructions
Create a new task in ClickUp
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| assignees | No | Array of user IDs to assign to the task | |
| custom_fields | No | Custom fields to set on task creation | |
| due_date | No | Due date as Unix timestamp in milliseconds | |
| list_id | Yes | ClickUp list ID | |
| markdown_description | No | Task description in markdown format | |
| name | Yes | Task name | |
| parent | No | Parent task ID to create this task as a subtask | |
| priority | No | Task priority (1-4): 1=Urgent, 2=High, 3=Normal, 4=Low | |
| tags | No | Array of tag names to add to the task | |
| time_estimate | No | Time estimate in milliseconds |
Implementation Reference
- The tool handler that processes input parameters, maps them to CreateTaskParams, calls taskService.createTask, and returns formatted JSON response.handler: async (input): Promise<any> => { const taskParams: CreateTaskParams = { name: input.name, list_id: input.list_id, markdown_description: input.markdown_description, priority: input.priority, due_date: input.due_date, tags: input.tags, time_estimate: input.time_estimate, assignees: input.assignees, custom_fields: input.custom_fields, parent: input.parent, }; const response = await taskService.createTask(taskParams); return { content: [{ type: "text", text: JSON.stringify(response) }], }; },
- Zod input schema defining parameters for the clickup_create_task tool.inputSchema: { name: z.string().describe("Task name"), markdown_description: z .string() .optional() .describe("Task description in markdown format"), list_id: z.string().describe("ClickUp list ID"), priority: z .number() .optional() .describe("Task priority (1-4): 1=Urgent, 2=High, 3=Normal, 4=Low"), due_date: z .number() .optional() .describe("Due date as Unix timestamp in milliseconds"), tags: z .array(z.string()) .optional() .describe("Array of tag names to add to the task"), time_estimate: z .number() .optional() .describe("Time estimate in milliseconds"), assignees: z .array(z.number()) .optional() .describe("Array of user IDs to assign to the task"), custom_fields: z .array( z.object({ id: z.string().describe("Custom field ID"), value: z .union([ z.string(), z.number(), z.boolean(), z.array(z.unknown()), z.record(z.unknown()), ]) .describe("Value for the custom field"), }) ) .optional() .describe("Custom fields to set on task creation"), parent: z .string() .optional() .describe("Parent task ID to create this task as a subtask"), },
- src/index.ts:89-91 (registration)Registers the clickup_create_task tool to the MCP server via server.tool() call in loop over imported tools (included at line 33).tools.forEach((tool) => { server.tool(tool.name, tool.description, tool.inputSchema, tool.handler); });
- src/services/task.service.ts:46-53 (helper)Helper service method implementing the ClickUp API call to create a new task.async createTask(params: CreateTaskParams): Promise<ClickUpTask> { const { list_id, ...taskData } = params; return this.request<ClickUpTask>(`/list/${list_id}/task`, { method: "POST", body: JSON.stringify(taskData), }); }