Provides comprehensive tools for interacting with ClickUp's API, enabling automated management of tasks, lists, folders, and spaces, as well as support for custom fields, subtasks, and workspace hierarchy navigation.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@ClickUp MCP Servercreate a high priority task 'Finalize budget' in the Finance list"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
clickup-mcp-server: A ClickUp MCP Server
Overview
A Model Context Protocol server for ClickUp API interaction and automation. This server provides tools for AI systems to read, create, and update tasks, lists, and spaces in ClickUp.
This MCP server enables AI tools like Claude to interact with your ClickUp workspace, helping automate task management, project planning, and other workflows.
Features
This MCP server provides comprehensive integration with ClickUp, offering the following capabilities:
Task Management
Create, update, and delete tasks
Move and duplicate tasks between lists and boards
Set task properties including due dates, priorities, and tags
Create, view, and manage subtasks
Add comments and attachments to tasks
Support for both single and bulk task operations
Task grouping and filtering by status
Workspace Organization
Navigate and manage workspaces, spaces, folders, and lists
Create, update, and delete spaces and folders
Organize lists within spaces and folders
View comprehensive workspace hierarchy
Navigate efficiently through workspace using path notation
Create lists in spaces or inside folders
Formatting and Display
Full markdown support for task descriptions and comments
HTML conversion for proper rendering in ClickUp
Formatted display of task details, lists, and hierarchies
Enhanced display of complex project structures
Developer Experience
Comprehensive error handling and validation
Clear, consistent API responses
Detailed documentation for all tools
Easy integration with Claude and other AI systems
Tools
The server provides the following tools for interacting with ClickUp:
Workspace/Team Tools
get_workspacesGets all workspaces/teams
Input: None
Returns: List of workspaces with IDs and names
navigate_workspaceNavigates through workspace hierarchy using path notation
Input:
path(string): Path through workspace hierarchy (team_id/space_name/folder_name/list_name)
Returns: Details of the target entity and its full path
Space Tools
get_spacesGets all spaces in a workspace
Input:
workspace_id(string): ID of the workspace/team
Returns: List of spaces with IDs and names
create_spaceCreates a new space in a workspace
Inputs:
workspace_id(string): ID of the workspace/teamname(string): Name of the new space
Returns: Details of the created space
get_space_hierarchyGets the full hierarchy of a space including folders and lists
Input:
space_id(string): ID of the space
Returns: Complete hierarchical structure of the space
Folder Tools
get_foldersGets all folders in a space
Input:
space_id(string): ID of the space
Returns: List of folders with IDs and names
create_folderCreates a new folder in a space
Inputs:
space_id(string): ID of the spacename(string): Name of the new folder
Returns: Details of the created folder
update_folderUpdates a folder's name
Inputs:
folder_id(string): ID of the folder to updatename(string): New name for the folder
Returns: Updated folder details
delete_folderDeletes a folder
Input:
folder_id(string): ID of the folder to delete
Returns: Confirmation of deletion
List/Board Tools
get_listsGets all lists/boards in a space
Input:
space_id(string): ID of the space
Returns: List of lists/boards with IDs and names
create_listCreates a new list/board in a space or folder
Inputs:
space_id(string): ID of the spacename(string): Name of the new list/boardfolder_id(string, optional): ID of the folder (if creating list in a folder)
Returns: Details of the created list/board
organize_listsOrganizes lists by their location (in space or in folders)
Inputs:
space_id(string): ID of the spacefolder_id(string, optional): ID of a specific folder
Returns: Lists organized by their containing folder
Task Tools
get_tasks
Gets all tasks in a list/board
Input:
list_id(string): ID of the list/board
Returns: List of tasks with IDs, names, and other details
get_tasks_by_statusGets tasks with a specific status in a list/board
Inputs:
list_id(string): ID of the list/boardstatus(string): Status to filter tasks by
Returns: List of tasks with the specified status
create_taskCreates a new task in a list/board
Inputs:
list_id(string): ID of the list/boardname(string): Name of the taskdescription(string, optional): Task descriptionpriority(number, optional): Task priority (1-4)due_date(number, optional): Task due date in millisecondstags(string[], optional): List of tag names to add to task
Returns: Details of the created task
get_taskGets details of a specific task
Input:
task_id(string): ID of the task
Returns: Full details of the task including description, status, etc.
update_taskUpdates a task's properties
Inputs:
task_id(string): ID of the taskname(string, optional): New task namedescription(string, optional): New task descriptionpriority(number, optional): New task priority (1-4)due_date(number, optional): New due date in millisecondstags(string[], optional): New list of tag names
Returns: Updated task details
update_task_statusUpdates a task's status
Inputs:
task_id(string): ID of the taskstatus(string): New status for the task
Returns: Updated task details
assign_taskAssigns users to a task
Inputs:
task_id(string): ID of the taskassignee_ids(string[]): List of user IDs to assign to the task
Returns: Confirmation of assignment
get_task_subtasksGets subtasks for a task
Input:
task_id(string): ID of the task
Returns: List of subtasks with their details
delete_taskDeletes a task
Input:
task_id(string): ID of the task to delete
Returns: Confirmation of deletion
move_taskMoves a task to a different list/board
Inputs:
task_id(string): ID of the task to movelist_id(string): ID of the destination list/board
Returns: Updated task details
duplicate_taskDuplicates a task, optionally to a different list/board
Inputs:
task_id(string): ID of the task to duplicatelist_id(string, optional): ID of the destination list/board
Returns: Details of the duplicated task
create_subtaskCreates a subtask for a parent task
Inputs:
parent_task_id(string): ID of the parent taskname(string): Name of the subtaskdescription(string, optional): Subtask descriptionpriority(number, optional): Subtask priority (1-4)due_date(number, optional): Subtask due date in millisecondstags(string[], optional): List of tag names for the subtask
Returns: Details of the created subtask
add_commentAdds a comment to a task
Inputs:
task_id(string): ID of the taskcomment_text(string): Text content of the comment
Returns: Details of the added comment
add_attachmentAdds an attachment to a task by URL
Inputs:
task_id(string): ID of the taskattachment_url(string): URL of the attachment to add
Returns: Details of the added attachment
bulk_update_tasksUpdates multiple tasks in a list at once
Inputs:
list_id(string): ID of the list/board containing the taskstask_ids(string[]): List of task IDs to updatename(string, optional): New task name for all tasksdescription(string, optional): New task description for all tasksstatus(string, optional): New status for all taskspriority(number, optional): New priority for all tasks (1-4)due_date(number, optional): New due date for all tasks in millisecondstags(string[], optional): New list of tag names for all tasks
Returns: Confirmation of bulk update
bulk_delete_tasksDeletes multiple tasks at once
Input:
task_ids(string[]): List of task IDs to delete
Returns: Confirmation of bulk deletion
Custom Field Tools
get_custom_fieldsGets all custom fields for a list/board
Input:
list_id(string): ID of the list/board
Returns: List of custom fields with their IDs, names, types, and configuration
set_custom_field_valueSets a custom field value for a task using field ID
Inputs:
task_id(string): ID of the taskfield_id(string): ID of the custom fieldvalue(any): Value to set for the custom field
Returns: Confirmation of custom field update
set_custom_field_value_by_nameSets a custom field value for a task using field name
Inputs:
task_id(string): ID of the tasklist_id(string): ID of the list (needed to find custom field by name)field_name(string): Name of the custom fieldvalue(any): Value to set for the custom field
Returns: Confirmation of custom field update
remove_custom_field_valueRemoves a custom field value from a task
Inputs:
task_id(string): ID of the taskfield_id(string): ID of the custom field
Returns: Confirmation of custom field removal
Installation
Prerequisites
Python 3.10 or higher
A ClickUp account with an API key
Using uv (recommended)
When using uv no specific installation is needed. We will use uvx to directly run clickup-mcp-server.
Or use a .env file (see Configuration section).
Using PIP
Alternatively, you can install clickup-mcp-server via pip:
After installation, you can run it as a script using:
Configuration
API Key
You need a ClickUp API key to use this server. You can get one from ClickUp API Settings.
The API key can be provided in two ways:
Command-line argument:
--api-key YOUR_API_KEYEnvironment variable in a
.envfile:CLICKUP_API_KEY=your_api_key_here
Usage with Claude Desktop
Add this to your claude_desktop_config.json:
Usage with VS Code
For manual installation, add the following JSON block to your User Settings (JSON) file in VS Code. You can do this by pressing Ctrl + Shift + P and typing Preferences: Open Settings (JSON).
Optionally, you can add it to a file called .vscode/mcp.json in your workspace. This will allow you to share the configuration with others.
Note that the
mcpkey is not needed in the.vscode/mcp.jsonfile.
For Docker installation:
Usage with Zed
Add to your Zed settings.json:
Example Usage Scenarios
Task Management with Claude
Claude can help you manage your ClickUp tasks:
Creating a Task Plan: Ask Claude to create a plan based on a specific task in ClickUp. Claude will:
Find the task by name or ID
Analyze its description and subtasks
Generate a structured plan for completing the task
Task Automation: For a task containing code-related instructions, Claude can:
Get the task details from ClickUp
Update the task status to "In Progress"
Implement the code according to the task requirements
Check off subtasks as they're completed
Update the status to "Ready for Review" when finished
Task Reporting: Ask Claude to generate summaries of tasks with specific statuses:
Get all tasks marked "In Progress"
Compile a status report with completion estimates
Create new tasks for blockers or dependencies
Custom Field Management: Claude can work with custom fields to enhance your workflow:
List all custom fields in a project to see available metadata
Set custom field values like "GitHub Pull Request URL" when creating PRs
Update project tracking fields like "Sprint", "Story Points", or "Priority"
Example: "Create a PR for this branch and add the GitHub URL to the 'GitHub Pull Request URL' custom field in the related ClickUp task"
Debugging
Run your server with the -v or -vv flag for increased verbosity:
You can use the MCP inspector to debug the server:
Development
Setting Up Development Environment
Clone the repository:
git clone https://github.com/yourusername/clickup-mcp-server.git cd clickup-mcp-serverInstall development dependencies:
uv pip install -e ".[dev]"Run tests:
pytest
Docker Build
Build the Docker image:
Implementation Status
This MCP server implements the majority of essential ClickUp features. Below is a detailed breakdown of implemented features and those planned for future implementation.
Task Management ✅
All core task management features have been implemented:
Feature | Status | Description |
Create tasks | ✅ | Create new tasks in any list or board |
Update tasks | ✅ | Modify task properties including name, description, and more |
Delete tasks | ✅ | Remove tasks from ClickUp |
Move tasks | ✅ | Relocate tasks between different lists and boards |
Duplicate tasks | ✅ | Create copies of tasks, optionally in different locations |
Set dates | ✅ | Set start and due dates for tasks |
View subtasks | ✅ | Retrieve subtasks for any parent task |
Create subtasks | ✅ | Add subtasks to existing tasks |
Manage subtasks | ✅ | Update and delete subtasks |
Add comments | ✅ | Add comments to tasks with markdown support |
Add attachments | ✅ | Attach files via URL to tasks |
Single operations | ✅ | Perform actions on individual tasks |
Bulk operations | ✅ | Perform actions on multiple tasks simultaneously |
Workspace Organization ✅
All workspace organization features have been implemented:
Feature | Status | Description |
Navigate spaces | ✅ | Browse and select spaces in workspaces |
Navigate folders | ✅ | Browse and select folders within spaces |
Navigate lists | ✅ | Browse and select lists in spaces or folders |
Create spaces | ✅ | Create new spaces in workspaces |
Create lists | ✅ | Create new lists in spaces or folders |
Create folders | ✅ | Create new folders within spaces |
Organize lists | ✅ | Group and organize lists by location |
Lists in folders | ✅ | Create and manage lists inside folders |
View hierarchy | ✅ | See the complete workspace structure |
Path navigation | ✅ | Navigate efficiently using path notation |
Miscellaneous Features 🔧
Some advanced features are implemented, with others planned for future releases:
Feature | Status | Description |
Global lookups | 🔄 | Find items by name or ID across workspaces (planned) |
Case-insensitive | 🔄 | Match names regardless of capitalization (planned) |
Basic markdown | ✅ | Support for basic markdown in descriptions |
Enhanced markdown | ✅ | Advanced markdown with proper rendering in ClickUp |
Rate limiting | 🔄 | Built-in handling of API rate limits (planned) |
Error handling | ✅ | Comprehensive error detection and reporting |
Input validation | ✅ | Validation of all inputs before API submission |
API coverage | 🔄 | Support for additional ClickUp API features (in progress) |
Legend:
✅ Implemented
🔄 Planned or in progress
License
This MCP server is licensed under the MIT License. This means you are free to use, modify, and distribute the software, subject to the terms and conditions of the MIT License. For more details, please see the LICENSE file in the project repository. EOF < /dev/null