Skip to content

ClickUp MCP: update_task assignees parameter schema mismatch causes silent failure #947

@timmatser

Description

@timmatser

Description

The update_task tool's assignees parameter has a schema mismatch that causes assignee updates to silently fail.

Problem

The MCP tool schema defines assignees as an array of user IDs:

"assignees": {
  "type": "array",
  "items": {"type": "number"},
  "description": "The IDs of the users to assign to the task"
}

However, the ClickUp API's Update Task endpoint requires an object with add and rem arrays for updating assignees:

{
  "assignees": {
    "add": [88743496],
    "rem": [68542906]
  }
}

Current Behavior

When calling update_task with assignees: [68542906, 88743496]:

  • The API call succeeds (returns 200)
  • The date_updated field changes
  • But assignees are not modified - the API silently ignores the malformed parameter

Expected Behavior

Assignees should be updated when provided via the MCP tool.

Root Cause

In mcp_servers/clickup/tools/tasks.py, the function signature correctly expects a Dict:

assignees: Optional[Dict[str, Any]] = None,

But in mcp_servers/clickup/server.py, the tool schema exposes it incorrectly and the handler doesn't pass assignees at all:

# Schema doesn't include assignees for update_task
# Handler also doesn't extract/pass assignees:
elif name == "clickup_update_task":
    task_id = arguments.get("task_id")
    name = arguments.get("name")
    description = arguments.get("description")
    status = arguments.get("status")
    priority = arguments.get("priority")
    due_date = arguments.get("due_date")
    result = await update_task(task_id, name, description, status, priority, due_date)
    # ^ assignees not passed!

Suggested Fix

  1. Add assignees to the update_task tool schema in server.py with the correct object format:
"assignees": {
    "type": "object",
    "description": "Object with 'add' and 'rem' arrays of user IDs",
    "properties": {
        "add": {
            "type": "array",
            "items": {"type": "number"},
            "description": "User IDs to add as assignees"
        },
        "rem": {
            "type": "array",
            "items": {"type": "number"},
            "description": "User IDs to remove from assignees"
        }
    }
}
  1. Update the handler to pass assignees to the function:
assignees = arguments.get("assignees")
result = await update_task(task_id, name, description, status, priority, due_date, assignees=assignees)

Environment

  • MCP Server: mcp_servers/clickup
  • ClickUp API version: v2

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions