A Model Context Protocol (MCP) server for integrating ClickUp tasks with AI applications. This server allows AI agents to interact with ClickUp tasks, spaces, lists, and folders through a standardized protocol.
🚧 Status Update: Working with the ClickUp team... ✨
The server is hosted on Smithery. There, you can preview the available tools or copy the commands to run on your specific client app.
Add this entry to your client's MCP settings JSON file:
{ "mcpServers": { "ClickUp": { "command": "npx", "args": [ "-y", "@taazkareem/clickup-mcp-server@latest" ], "env": { "CLICKUP_API_KEY": "your-api-key", "CLICKUP_TEAM_ID": "your-team-id", "DOCUMENT_SUPPORT": "true" } } } }
Or use this npx command:
npx -y @taazkareem/clickup-mcp-server@latest --env CLICKUP_API_KEY=your-api-key --env CLICKUP_TEAM_ID=your-team-id
Obs: if you don't pass "DOCUMENT_SUPPORT": "true", the default is false and document support will not be active.
You can control which tools are available using two complementary environment variables:
ENABLED_TOOLS (Recommended)Use ENABLED_TOOLS
to specify exactly which tools should be available:
# Environment variable export ENABLED_TOOLS="create_task,get_task,update_task,get_workspace_hierarchy" # Command line argument --env ENABLED_TOOLS=create_task,get_task,update_task,get_workspace_hierarchy
Use DISABLED_TOOLS
to disable specific tools while keeping all others enabled:
# Environment variable export DISABLED_TOOLS="delete_task,delete_bulk_tasks" # Command line argument --env DISABLED_TOOLS=delete_task,delete_bulk_tasks
ENABLED_TOOLS
is specified, only those tools will be available (takes precedence over DISABLED_TOOLS
)DISABLED_TOOLS
is specified, all tools except those listed will be availableExample:
# Only enable task creation and reading tools npx -y @taazkareem/clickup-mcp-server@latest \ --env CLICKUP_API_KEY=your-api-key \ --env CLICKUP_TEAM_ID=your-team-id \ --env ENABLED_TOOLS=create_task,get_task,get_workspace_hierarchy
Please filter tools you don't need if you are having issues with the number of tools or any context limitations.
Running with HTTP Transport SupportThe server supports both modern HTTP Streamable transport (MCP Inspector compatible) and legacy SSE (Server-Sent Events) transport for backwards compatibility.
{ "mcpServers": { "ClickUp": { "command": "npx", "args": [ "-y", "@taazkareem/clickup-mcp-server@latest" ], "env": { "CLICKUP_API_KEY": "your-api-key", "CLICKUP_TEAM_ID": "your-team-id", "ENABLE_SSE": "true", "PORT": "3231" } } } }
Endpoints:
http://127.0.0.1:3231/mcp
(Streamable HTTP)http://127.0.0.1:3231/sse
(SSE for backwards compatibility)npx -y @taazkareem/clickup-mcp-server@latest --env CLICKUP_API_KEY=your-api-key --env CLICKUP_TEAM_ID=your-team-id --env ENABLE_SSE=true --env PORT=3231
Available configuration options:
Option Description DefaultENABLED_TOOLS
Comma-separated list of tools to enable (takes precedence) All tools DISABLED_TOOLS
Comma-separated list of tools to disable None ENABLE_SSE
Enable the HTTP/SSE transport false
PORT
Port for the HTTP server 3231
ENABLE_STDIO
Enable the STDIO transport true
ENABLE_SECURITY_FEATURES
Enable security headers and logging false
ENABLE_HTTPS
Enable HTTPS/TLS encryption false
ENABLE_ORIGIN_VALIDATION
Validate Origin header against whitelist false
ENABLE_RATE_LIMIT
Enable rate limiting protection false
The server includes optional security enhancements for production deployments. All security features are opt-in and disabled by default to maintain backwards compatibility.
Quick security setup:
# Generate SSL certificates for HTTPS ./scripts/generate-ssl-cert.sh # Start with full security ENABLE_SECURITY_FEATURES=true \ ENABLE_HTTPS=true \ ENABLE_ORIGIN_VALIDATION=true \ ENABLE_RATE_LIMIT=true \ SSL_KEY_PATH=./ssl/server.key \ SSL_CERT_PATH=./ssl/server.crt \ npx @taazkareem/clickup-mcp-server@latest --env CLICKUP_API_KEY=your-key --env CLICKUP_TEAM_ID=your-team --env ENABLE_SSE=true
HTTPS Endpoints:
https://127.0.0.1:3443/mcp
(Streamable HTTPS)https://127.0.0.1:3443/sse
(SSE HTTPS for backwards compatibility)https://127.0.0.1:3443/health
(Health check)For detailed security configuration, see Security Features Documentation.
To integrate with n8n:
http://localhost:3231
(or your server address)An example SSE client is provided in the examples
directory. To run it:
# Start the server with SSE enabled ENABLE_SSE=true PORT=3231 npx -y @taazkareem/clickup-mcp-server@latest --env CLICKUP_API_KEY=your-api-key --env CLICKUP_TEAM_ID=your-team-id # In another terminal, run the example client cd examples npm install npm run sse-client📝 Task Management 🏷️ Tag Management • Create, update, and delete tasks
name
, (listId
/listName
) create_bulk_tasks Create multiple tasks tasks[]
update_task Modify task taskId
/taskName
update_bulk_tasks Update multiple tasks tasks[]
with IDs or names get_tasks Get tasks from list listId
/listName
get_task Get single task details taskId
/taskName
(with smart disambiguation) get_workspace_tasks Get tasks with filtering At least one filter (tags, list_ids, space_ids, etc.) get_task_comments Get comments on a task taskId
/taskName
create_task_comment Add a comment to a task commentText
, (taskId
/(taskName
+listName
)) attach_task_file Attach file to a task taskId
/taskName
, (file_data
or file_url
) delete_task Remove task taskId
/taskName
delete_bulk_tasks Remove multiple tasks tasks[]
with IDs or names move_task Move task taskId
/taskName
, listId
/listName
move_bulk_tasks Move multiple tasks tasks[]
with IDs or names, target list duplicate_task Copy task taskId
/taskName
, listId
/listName
create_list Create list in space name
, spaceId
/spaceName
create_folder Create folder name
, spaceId
/spaceName
create_list_in_folder Create list in folder name
, folderId
/folderName
get_folder Get folder details folderId
/folderName
update_folder Update folder properties folderId
/folderName
delete_folder Delete folder folderId
/folderName
get_list Get list details listId
/listName
update_list Update list properties listId
/listName
delete_list Delete list listId
/listName
get_space_tags Get space tags spaceId
/spaceName
create_space_tag Create tag tagName
, spaceId
/spaceName
update_space_tag Update tag tagName
, spaceId
/spaceName
delete_space_tag Delete tag tagName
, spaceId
/spaceName
add_tag_to_task Add tag to task tagName
, taskId
/(taskName
+listName
) remove_tag_from_task Remove tag from task tagName
, taskId
/(taskName
+listName
) get_task_time_entries Get time entries for a task taskId
/taskName
start_time_tracking Start time tracking on a task taskId
/taskName
stop_time_tracking Stop current time tracking None add_time_entry Add manual time entry to a task taskId
/taskName
, start
, duration
delete_time_entry Delete a time entry timeEntryId
get_current_time_entry Get currently running timer None get_workspace_members Get all workspace members None find_member_by_name Find member by name or email nameOrEmail
resolve_assignees Resolve member names to IDs assignees[]
create_document Create a document workspaceId
, name
, parentId
/parentType
, visibility
, create_pages
get_document Get a document workspaceId
/documentId
list_documents List documents workspaceId
, documentId
/creator
/deleted
/archived
/parent_id
/parent_type
/limit
/next_cursor
list_document_pages List document pages documentId
/documentName
get_document_pages Get document pages documentId
/documentName
, pageIds
create_document_pages Create a document page workspaceId
/documentId
, parent_page_id
/name
/sub_title
,content
/content_format
update_document_page Update a document page workspaceId
/documentId
, name
/sub_title
,content
/content_edit_mode
/content_format
See full documentation for optional parameters and advanced usage.
When creating or updating tasks, you can assign users using the assignees
parameter. The parameter accepts an array of user IDs, emails, or usernames:
Creating tasks with assignees:
{ "name": "New Task", "description": "This is a new task.", "assignees": ["jdoe@example.com", "Jane Smith"] // Emails, usernames, or user IDs }
Updating task assignees:
{ "taskId": "abc123", "assignees": ["newuser@example.com"] // Replace existing assignees }
The member management tools help resolve user references when needed.
Not yet implemented and not supported by all client apps. Request a feature for a Prompt implementation that would be most beneficial for your workflow (without it being too specific). Examples:
The server provides clear error messages for:
The LOG_LEVEL
environment variable can be specified to control the verbosity of server logs. Valid values are trace
, debug
, info
, warn
, and error
(default). This can be also be specified on the command line as, e.g. --env LOG_LEVEL=info
.
When using this server, you may occasionally see a small sponsor message with a link to this repository included in tool responses. I hope you can support the project! If you find this project useful, please consider supporting:
Special thanks to ClickUp for their excellent API and services that make this integration possible.
Contributions are welcome! Please read our Contributing Guide for details.
This project is licensed under the MIT License - see the LICENSE file for details.
This software makes use of third-party APIs and may reference trademarks or brands owned by third parties. The use of such APIs or references does not imply any affiliation with or endorsement by the respective companies. All trademarks and brand names are the property of their respective owners. This project is an independent work and is not officially associated with or sponsored by any third-party company mentioned.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4