ClickUp MCP Server

ClickUp MCP servers enable AI models to interact with ClickUp workspaces, providing capabilities for task management, project tracking, time tracking, and team collaboration workflows.

GitHub starsnpm versionnpm downloads

Overview

The MCP ClickUp Server enables AI models to interact with ClickUp, the all-in-one productivity platform that combines task management, docs, goals, and time tracking. ClickUp is widely used by teams for project management, workflow automation, and collaboration.

Third-Party Integration:

ClickUp MCP integration enables programmatic access to tasks, lists, spaces, and team workflows.

Key Features

Task Management

Create, update, and manage tasks with custom fields and statuses

📋

Workspace Organization

Manage spaces, folders, and lists in hierarchical structure

⏱️

Time Tracking

Track time entries, generate reports, and monitor productivity

👥

Team Collaboration

Assign tasks, add comments, and manage team member workflows

Available Tools

Quick Reference

ToolPurposeCategory
create_taskCreate new taskTasks
get_taskRetrieve task detailsTasks
update_taskModify task propertiesTasks
list_tasksQuery tasks by filtersTasks
add_commentAdd task commentComments
get_listsRetrieve listsOrganization
get_spacesRetrieve spacesOrganization
get_teamsGet team informationTeams
track_timeCreate time entryTime Tracking
get_time_entriesRetrieve time logsTime Tracking

Detailed Usage

create_task

Create a new task with customizable properties.

// Create simple task
use_mcp_tool({
  server_name: "clickup",
  tool_name: "create_task",
  arguments: {
    list_id: "123456789",
    name: "Implement user authentication",
    description: "Add JWT-based authentication to the API",
    priority: 2,  // 1=urgent, 2=high, 3=normal, 4=low
    status: "to do"
  }
});

// Create task with assignees and due date
use_mcp_tool({
  server_name: "clickup",
  tool_name: "create_task",
  arguments: {
    list_id: "123456789",
    name: "Design landing page mockups",
    assignees: [12345678, 87654321],
    due_date: 1735689600000,  // Unix timestamp in ms
    tags: ["design", "high-priority"]
  }
});

Returns created task with ID and metadata.

get_task

Retrieve detailed information about a specific task.

use_mcp_tool({
  server_name: "clickup",
  tool_name: "get_task",
  arguments: {
    task_id: "abc123xyz"
  }
});

Returns task details including custom fields, assignees, time tracked, and comments.

update_task

Update task properties including status, assignees, and priority.

// Update task status
use_mcp_tool({
  server_name: "clickup",
  tool_name: "update_task",
  arguments: {
    task_id: "abc123xyz",
    status: "in progress"
  }
});

// Update multiple properties
use_mcp_tool({
  server_name: "clickup",
  tool_name: "update_task",
  arguments: {
    task_id: "abc123xyz",
    name: "Updated task name",
    priority: 1,  // Urgent
    assignees: {
      add: [12345678],
      rem: [87654321]
    }
  }
});

Returns updated task object.

list_tasks

Query tasks with filters for status, assignees, and dates.

// Get all tasks in a list
use_mcp_tool({
  server_name: "clickup",
  tool_name: "list_tasks",
  arguments: {
    list_id: "123456789"
  }
});

// Get tasks with filters
use_mcp_tool({
  server_name: "clickup",
  tool_name: "list_tasks",
  arguments: {
    list_id: "123456789",
    statuses: ["to do", "in progress"],
    assignees: [12345678],
    due_date_gt: 1735689600000,  // Due after date
    order_by: "due_date"
  }
});

Returns array of matching tasks with pagination support.

add_comment

Add comments to tasks for collaboration and updates.

use_mcp_tool({
  server_name: "clickup",
  tool_name: "add_comment",
  arguments: {
    task_id: "abc123xyz",
    comment_text: "Updated the API endpoint to use HTTPS",
    assignee: 12345678,  // Optional: notify specific user
    notify_all: false
  }
});

Returns created comment with ID and timestamp.

get_lists

Retrieve all lists within a folder or space.

// Get lists in a folder
use_mcp_tool({
  server_name: "clickup",
  tool_name: "get_lists",
  arguments: {
    folder_id: "456789123"
  }
});

// Get folderless lists in a space
use_mcp_tool({
  server_name: "clickup",
  tool_name: "get_lists",
  arguments: {
    space_id: "789123456"
  }
});

Returns array of lists with IDs and metadata.

get_spaces

Retrieve all spaces in the team workspace.

use_mcp_tool({
  server_name: "clickup",
  tool_name: "get_spaces",
  arguments: {
    team_id: "123"
  }
});

Returns spaces with folders, lists, and settings.

track_time

Create time entry for a task with duration and description.

// Track time with duration
use_mcp_tool({
  server_name: "clickup",
  tool_name: "track_time",
  arguments: {
    task_id: "abc123xyz",
    duration: 7200000,  // 2 hours in milliseconds
    description: "Implemented authentication logic"
  }
});

// Track time with start/end
use_mcp_tool({
  server_name: "clickup",
  tool_name: "track_time",
  arguments: {
    task_id: "abc123xyz",
    start: 1735689600000,
    end: 1735697200000,
    billable: true
  }
});

Returns time entry with ID and calculated duration.

get_time_entries

Retrieve time entries with filtering by date range and team member.

// Get time entries for a task
use_mcp_tool({
  server_name: "clickup",
  tool_name: "get_time_entries",
  arguments: {
    task_id: "abc123xyz"
  }
});

// Get team time entries for date range
use_mcp_tool({
  server_name: "clickup",
  tool_name: "get_time_entries",
  arguments: {
    team_id: "123",
    start_date: 1735689600000,
    end_date: 1735776000000,
    assignee: 12345678
  }
});

Returns time entries with duration, billable status, and descriptions.

get_teams

Retrieve team information and member details.

use_mcp_tool({
  server_name: "clickup",
  tool_name: "get_teams",
  arguments: {}
});

Returns authorized teams with members and permissions.

Installation

{
  "mcpServers": {
    "clickup": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-clickup"
      ],
      "env": {
        "CLICKUP_API_KEY": "your-clickup-api-key"
      }
    }
  }
}

API Key Required:

You need to generate a ClickUp API token from ClickUp Settings → Apps → API Token.

Setup Guide

1. Generate ClickUp API Token

  1. Log in to your ClickUp workspace
  2. Go to SettingsApps
  3. Click API Token section
  4. Click "Generate" or "Regenerate" if you already have one
  5. Copy the API token immediately (you won't see it again)
  6. Store it securely

2. Find Your Team ID

  1. Go to your ClickUp workspace
  2. Navigate to SettingsWorkspace
  3. Your Team ID appears in the workspace settings
  4. Alternatively, use get_teams tool to retrieve team IDs programmatically

3. Configure MCP Server

Add the API token to your MCP configuration as shown in the Installation section above.

Permission Scopes:

Ensure your API token has appropriate permissions for the operations you need (tasks, time tracking, comments, etc.).

Common Use Cases

1. Sprint Planning and Task Creation

Create tasks for a new development sprint:

// Create sprint tasks
const tasks = [
  { name: "Design user dashboard", priority: 2, tags: ["frontend", "design"] },
  { name: "Implement REST API endpoints", priority: 2, tags: ["backend", "api"] },
  { name: "Write unit tests", priority: 3, tags: ["testing"] }
];

tasks.forEach(task => {
  use_mcp_tool({
    server_name: "clickup",
    tool_name: "create_task",
    arguments: {
      list_id: "sprint-backlog-list-id",
      name: task.name,
      priority: task.priority,
      tags: task.tags,
      status: "to do"
    }
  });
});

2. Daily Standup Report Generation

Get team's tasks for standup meeting:

// Get team member's active tasks
use_mcp_tool({
  server_name: "clickup",
  tool_name: "list_tasks",
  arguments: {
    list_id: "123456789",
    statuses: ["in progress", "to do"],
    assignees: [team_member_id],
    order_by: "priority"
  }
});

// Get yesterday's completed tasks
use_mcp_tool({
  server_name: "clickup",
  tool_name: "list_tasks",
  arguments: {
    list_id: "123456789",
    statuses: ["complete"],
    assignees: [team_member_id],
    date_updated_gt: yesterday_timestamp
  }
});

3. Automated Task Status Updates

Update task status based on workflow triggers:

// Move task to "in progress" when work starts
use_mcp_tool({
  server_name: "clickup",
  tool_name: "update_task",
  arguments: {
    task_id: "abc123xyz",
    status: "in progress"
  }
});

// Add comment documenting the change
use_mcp_tool({
  server_name: "clickup",
  tool_name: "add_comment",
  arguments: {
    task_id: "abc123xyz",
    comment_text: "Started work on this task. ETA: 2 days"
  }
});

// Start time tracking
use_mcp_tool({
  server_name: "clickup",
  tool_name: "track_time",
  arguments: {
    task_id: "abc123xyz",
    start: Date.now(),
    description: "Beginning implementation"
  }
});

4. Time Tracking and Reporting

Generate time reports for billing or productivity analysis:

// Get this week's time entries for a team
use_mcp_tool({
  server_name: "clickup",
  tool_name: "get_time_entries",
  arguments: {
    team_id: "123",
    start_date: week_start_timestamp,
    end_date: week_end_timestamp
  }
});

// Get billable hours for client projects
use_mcp_tool({
  server_name: "clickup",
  tool_name: "get_time_entries",
  arguments: {
    team_id: "123",
    start_date: month_start_timestamp,
    end_date: month_end_timestamp,
    billable: true
  }
});

5. Bulk Task Assignment

Assign tasks to team members based on workload:

// Get task details
use_mcp_tool({
  server_name: "clickup",
  tool_name: "get_task",
  arguments: {
    task_id: "abc123xyz"
  }
});

// Assign to team member
use_mcp_tool({
  server_name: "clickup",
  tool_name: "update_task",
  arguments: {
    task_id: "abc123xyz",
    assignees: {
      add: [engineer_id]
    },
    due_date: next_friday_timestamp,
    priority: 2
  }
});

// Notify via comment
use_mcp_tool({
  server_name: "clickup",
  tool_name: "add_comment",
  arguments: {
    task_id: "abc123xyz",
    comment_text: "@engineer Please review the requirements and start implementation",
    assignee: engineer_id,
    notify_all: false
  }
});

ClickUp Hierarchy

Understanding ClickUp's organizational structure:

Workspace (Team)
└── Space
    ├── Folder (optional)
    │   └── List
    │       └── Task
    │           ├── Subtask
    │           └── Checklist
    └── List (folderless)
        └── Task

Priority Levels

ClickUp priority values:

  • 1 - Urgent (red flag)
  • 2 - High (yellow flag)
  • 3 - Normal (blue flag)
  • 4 - Low (gray flag)

Custom Fields

ClickUp supports custom fields for tasks:

  • Text: Short text input
  • Number: Numeric values
  • Dropdown: Select from predefined options
  • Date: Date picker
  • Checkbox: Boolean flag
  • URL: Link field
  • Email: Email address
  • Phone: Phone number
  • Rating: Star rating (1-5)

Best Practices

  1. Use List IDs Consistently: Always reference tasks by their parent list for better organization
  2. Set Realistic Due Dates: Include due dates to enable priority filtering and calendar views
  3. Track Time Regularly: Log time entries daily for accurate project tracking
  4. Use Tags Effectively: Leverage tags for cross-cutting concerns (priority, category, client)
  5. Comment for Context: Add comments when updating task status to document decisions
  6. Batch Operations: Use filters to query and update multiple tasks efficiently

Rate Limits

ClickUp API has rate limits:

  • 100 requests per minute per API token
  • Burst allowance: Short bursts of up to 200 requests
  • Use pagination for large result sets
  • Implement retry logic with exponential backoff

Sources