update_task
Update any property of an existing ClickUp task including name, description, assignees, status, priority, and dates.
Instructions
Update an existing ClickUp task's properties including name, description, assignees, status, and dates.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes | The ID of the task to update | |
| name | No | The new name of the task | |
| description | No | The new description of the task | |
| assignees | No | The IDs of the users to assign to the task | |
| status | No | The new status of the task | |
| priority | No | The new priority of the task (1-4) | |
| due_date | No | The new due date of the task (Unix timestamp) | |
| due_date_time | No | Whether the due date includes a time | |
| time_estimate | No | The new time estimate for the task (in milliseconds) | |
| start_date | No | The new start date of the task (Unix timestamp) | |
| start_date_time | No | Whether the start date includes a time | |
| notify_all | No | Whether to notify all assignees |
Implementation Reference
- src/tools/task-tools.ts:144-175 (handler)MCP tool handler for 'update_task'. Defines the tool on the MCP server with Zod schema for input validation (task_id required, other fields optional), and executes via tasksClient.updateTask() on the ClickUp API.
server.tool( 'update_task', 'Update an existing ClickUp task\'s properties including name, description, assignees, status, and dates.', { task_id: z.string().describe('The ID of the task to update'), name: z.string().optional().describe('The new name of the task'), description: z.string().optional().describe('The new description of the task'), assignees: z.array(z.number()).optional().describe('The IDs of the users to assign to the task'), status: z.string().optional().describe('The new status of the task'), priority: z.number().optional().describe('The new priority of the task (1-4)'), due_date: z.number().optional().describe('The new due date of the task (Unix timestamp)'), due_date_time: z.boolean().optional().describe('Whether the due date includes a time'), time_estimate: z.number().optional().describe('The new time estimate for the task (in milliseconds)'), start_date: z.number().optional().describe('The new start date of the task (Unix timestamp)'), start_date_time: z.boolean().optional().describe('Whether the start date includes a time'), notify_all: z.boolean().optional().describe('Whether to notify all assignees') }, async ({ task_id, ...taskParams }) => { try { const result = await tasksClient.updateTask(task_id, taskParams as UpdateTaskParams); return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }] }; } catch (error: any) { console.error('Error updating task:', error); return { content: [{ type: 'text', text: `Error updating task: ${error.message}` }], isError: true }; } } ); - src/clickup-client/tasks.ts:74-91 (schema)TypeScript interface defining the schema for update_task parameters. All fields are optional since update is partial.
export interface UpdateTaskParams { name?: string; description?: string; assignees?: number[]; status?: string; priority?: number; due_date?: number; due_date_time?: boolean; time_estimate?: number; start_date?: number; start_date_time?: boolean; notify_all?: boolean; parent?: string; custom_fields?: Array<{ id: string; value: any; }>; } - src/index.ts:42-42 (registration)Registration call: setupTaskTools is invoked from ClickUpServer.setupTools() with the MCP server instance, which registers the 'update_task' tool.
setupTaskTools(this.server); - src/tools/task-tools.ts:16-16 (registration)Export of setupTaskTools function that registers all task tools (including 'update_task') on the MCP server.
export function setupTaskTools(server: McpServer): void { - src/clickup-client/tasks.ts:159-161 (helper)TasksClient.updateTask method that performs the actual HTTP PUT request to the ClickUp API endpoint /task/{taskId}.
async updateTask(taskId: string, params: UpdateTaskParams): Promise<Task> { return this.client.put(`/task/${taskId}`, params); }