This is a comprehensive ClickUp integration offering OAuth 2.1 authentication alongside legacy API key support, with 50+ tools covering tasks, time tracking, docs, comments, and chat. Notable features include fuzzy search across workspaces, multi-account session management, and natural language date parsing. It handles bulk operations, custom fields, file attachments via URL or base64, and goals with key results tracking. The implementation emphasizes intelligent ID resolution so you can reference resources by name rather than requiring UUIDs. Reach for this when you need an AI agent to coordinate project management workflows, log time entries, or manage sprint planning directly in ClickUp without manual context switching.
Public tool metadata for what this MCP can expose to an agent.
get_workspace_hierarchyReturns all spaces, folders, and lists in workspace (excludes tasks). Use to browse workspace structure. DO NOT use this tool to find tasks, use get_task.Returns all spaces, folders, and lists in workspace (excludes tasks). Use to browse workspace structure. DO NOT use this tool to find tasks, use get_task.
No parameter schema in public metadata yet.
create_taskCreate a task. Requires: name + (listId or listName). Use create_bulk_tasks for multiple. Supports subtasks via parent, custom_task_type, custom_fields as [{id,value}], assignees as user IDs/emails/names.17 paramsCreate a task. Requires: name + (listId or listName). Use create_bulk_tasks for multiple. Supports subtasks via parent, custom_task_type, custom_fields as [{id,value}], assignees as user IDs/emails/names.
namestringtagsarraylistIdstringparentstringstatusstringdueDatestringlistNamestringprioritynumberassigneesarraystartDatestringparentNamestringdescriptionstringcustom_fieldsarrayparentListNamestringcustom_task_typestringmarkdown_descriptionstringcheck_required_custom_fieldsbooleanget_taskGet detailed task info. If a task name is provided do not lookup the task ID, it will be resolved automatically.4 paramsGet detailed task info. If a task name is provided do not lookup the task ID, it will be resolved automatically.
taskstringlistNamestringsubtasksbooleaninclude_markdown_descriptionbooleanupdate_taskUpdate task properties. Support automatic name resolution: provide the task Name directly to the 'task' argument and it will be resolved to an ID. You do NOT need to search for the ID using other tools.16 paramsUpdate task properties. Support automatic name resolution: provide the task Name directly to the 'task' argument and it will be resolved to an ID. You do NOT need to search for the ID using other tools.
namestringtaskstringparentstringstatusstringdueDatestringlistNamestringpriorityvalueassigneesarraystartDatestringparentNamestringdescriptionstringcustom_fieldsarraytime_estimatestringparentListNamestringcustom_task_typestringmarkdown_descriptionstringmove_taskMove task to different list. If a task name is provided do not lookup the task ID, it will be resolved automatically. Warning: statuses may reset.4 paramsMove task to different list. If a task name is provided do not lookup the task ID, it will be resolved automatically. Warning: statuses may reset.
taskstringlistIdstringlistNamestringsourceListNamestringduplicate_taskDuplicate task. Provide source task Name or ID. Optionally specify target list.4 paramsDuplicate task. Provide source task Name or ID. Optionally specify target list.
taskstringlistIdstringlistNamestringsourceListNamestringdelete_taskPERMANENTLY delete task. If a task name is provided do not lookup the task ID, it will be resolved automatically. Cannot be undone.2 paramsPERMANENTLY delete task. If a task name is provided do not lookup the task ID, it will be resolved automatically. Cannot be undone.
taskstringlistNamestringget_task_commentsGet task comments. If a task name is provided do not lookup the task ID, it will be resolved automatically. Set include_replies=true for threaded replies.5 paramsGet task comments. If a task name is provided do not lookup the task ID, it will be resolved automatically. Set include_replies=true for threaded replies.
taskstringstartnumberstartIdstringlistNamestringinclude_repliesbooleancreate_task_commentCreate task comment. If a task name is provided do not lookup the task ID, it will be resolved automatically. Provide commentText or formattedComment.6 paramsCreate task comment. If a task name is provided do not lookup the task ID, it will be resolved automatically. Provide commentText or formattedComment.
taskstringassigneenumberlistNamestringnotifyAllbooleancommentTextstringformattedCommentarrayattach_task_fileAttach file to task. Supports base64, URL, or local path. Requires taskId (preferred) or taskName.11 paramsAttach file to task. Supports base64, URL, or local path. Requires taskId (preferred) or taskName.
taskIdstringfile_urlstringlistNamestringtaskNamestringfile_datastringfile_namestringauth_headerstringchunk_indexnumberchunk_totalnumberchunk_is_lastbooleanchunk_sessionstringcreate_bulk_tasksCreate multiple tasks in one list. Requires: tasks array + (listId or listName). Each task needs name. Options: batch size, concurrency.4 paramsCreate multiple tasks in one list. Requires: tasks array + (listId or listName). Each task needs name. Options: batch size, concurrency.
tasksarraylistIdstringoptionsvaluelistNamestringupdate_bulk_tasksUpdate multiple tasks. Each task needs: taskId or taskName + listName. Options: batch size, concurrency.2 paramsUpdate multiple tasks. Each task needs: taskId or taskName + listName. Options: batch size, concurrency.
tasksarrayoptionsvaluemove_bulk_tasksMove multiple tasks to one list. Each task needs: taskId or taskName + listName. Target: targetListId or targetListName. Warning: statuses may reset.4 paramsMove multiple tasks to one list. Each task needs: taskId or taskName + listName. Target: targetListId or targetListName. Warning: statuses may reset.
tasksarrayoptionsvaluetargetListIdstringtargetListNamestringdelete_bulk_tasksPERMANENTLY delete multiple tasks. Each task needs: taskId or taskName + listName. Cannot be undone.2 paramsPERMANENTLY delete multiple tasks. Each task needs: taskId or taskName + listName. Cannot be undone.
tasksarrayoptionsvalueget_workspace_tasksRetrieve MULTIPLE tasks from workspace using broad filters. Returns full task details including description. Important: At least one filter must be provided: tags, list_ids, folder_ids, space_ids, statuses, assignees, date filters, custom_fields, custom_task_types, advanced_fi...28 paramsRetrieve MULTIPLE tasks from workspace using broad filters. Returns full task details including description. Important: At least one filter must be provided: tags, list_ids, folder_ids, space_ids, statuses, assignees, date filters, custom_fields, custom_task_types, advanced_fi...
pagenumbertagsarrayreversebooleanarchivedbooleanlist_idsarrayorder_bystringid · created · updated · due_datestatusesarraysubtasksbooleanassigneesarrayspace_idsarrayfolder_idsarraydue_date_gtnumberdue_date_ltnumberdetail_levelstringsummary · detailed · namessearch_querystringcustom_fieldsobjectinclude_closedbooleandate_created_gtnumberdate_created_ltnumberdate_updated_gtnumberdate_updated_ltnumberinclude_subtasksbooleancustom_task_typesarrayadvanced_filteringobjectinclude_closed_listsbooleaninclude_archived_listsbooleaninclude_compact_time_entriesbooleaninclude_markdown_descriptionbooleanget_task_time_entriesGet time entries for a task. Use taskId (preferred) or taskName + optional listName. Optional date/assignee filters.5 paramsGet time entries for a task. Use taskId (preferred) or taskName + optional listName. Optional date/assignee filters.
taskstringendDatestringassigneestringlistNamestringstartDatestringstart_time_trackingStart time tracking on a task. Use taskId (preferred) or taskName + listName. Only one timer can run at a time.5 paramsStart time tracking on a task. Use taskId (preferred) or taskName + listName. Only one timer can run at a time.
tagsarraytaskstringbillablebooleanlistNamestringdescriptionstringstop_time_trackingStop the currently running timer. Returns completed time entry details.2 paramsStop the currently running timer. Returns completed time entry details.
tagsarraydescriptionstringadd_time_entryAdd manual time entry to a task. Requires: start time, duration. Use taskId (preferred) or taskName + listName.7 paramsAdd manual time entry to a task. Requires: start time, duration. Use taskId (preferred) or taskName + listName.
tagsarraytaskstringstartstringbillablebooleandurationstringlistNamestringdescriptionstringdelete_time_entryDelete a time entry. Requires timeEntryId.1 paramsDelete a time entry. Requires timeEntryId.
timeEntryIdstringget_current_time_entryGet the currently running time entry, if any.Get the currently running time entry, if any.
No parameter schema in public metadata yet.
add_task_linkLink two tasks. Requires taskId (preferred) or taskName for both source and target.4 paramsLink two tasks. Requires taskId (preferred) or taskName for both source and target.
taskstringlistNamestringtargetTaskstringtargetListNamestringget_task_linksGet dependencies/links for a task. Requires taskId (preferred) or taskName.2 paramsGet dependencies/links for a task. Requires taskId (preferred) or taskName.
taskstringlistNamestringdelete_task_linkRemove link between tasks. Requires taskId (preferred) and linkId (target task ID).4 paramsRemove link between tasks. Requires taskId (preferred) and linkId (target task ID).
taskstringlinkIdstringlistNamestringtargetListNamestringcreate_listCreate list in space. Requires name + (spaceId or spaceName). Optional: content, dueDate, priority, assignee, status.8 paramsCreate list in space. Requires name + (spaceId or spaceName). Optional: content, dueDate, priority, assignee, status.
namestringstatusstringcontentstringdueDatestringspaceIdstringassigneenumberprioritynumberspaceNamestringcreate_list_in_folderCreate list in folder. Requires name + (folderId or folderName + space info). Optional: content, status.7 paramsCreate list in folder. Requires name + (folderId or folderName + space info). Optional: content, status.
namestringstatusstringcontentstringspaceIdstringfolderIdstringspaceNamestringfolderNamestringget_listGet list details. Requires listId (preferred) or listName.2 paramsGet list details. Requires listId (preferred) or listName.
listIdstringlistNamestringupdate_listUpdate list. Requires listId/listName. Optional: name, content, status.5 paramsUpdate list. Requires listId/listName. Optional: name, content, status.
namestringlistIdstringstatusstringcontentstringlistNamestringdelete_listDelete list. Requires listId (preferred) or listName. WARNING: Permanent.2 paramsDelete list. Requires listId (preferred) or listName. WARNING: Permanent.
listIdstringlistNamestringcreate_folderCreate folder in space. Requires name + (spaceId or spaceName). Optional: override_statuses.4 paramsCreate folder in space. Requires name + (spaceId or spaceName). Optional: override_statuses.
namestringspaceIdstringspaceNamestringoverride_statusesbooleanget_folderGet folder details. Requires folderId (preferred) or folderName + space info.4 paramsGet folder details. Requires folderId (preferred) or folderName + space info.
spaceIdstringfolderIdstringspaceNamestringfolderNamestringupdate_folderUpdate folder. Requires folderId/folderName + space info. Optional: name, override_statuses.6 paramsUpdate folder. Requires folderId/folderName + space info. Optional: name, override_statuses.
namestringspaceIdstringfolderIdstringspaceNamestringfolderNamestringoverride_statusesbooleandelete_folderDelete folder. Requires folderId (preferred) or folderName + space info. WARNING: Permanent.4 paramsDelete folder. Requires folderId (preferred) or folderName + space info. WARNING: Permanent.
spaceIdstringfolderIdstringspaceNamestringfolderNamestringget_space_tagsGets all tags in a ClickUp space. Use spaceId (preferred) or spaceName. Tags are defined at space level - check available tags before adding to tasks.2 paramsGets all tags in a ClickUp space. Use spaceId (preferred) or spaceName. Tags are defined at space level - check available tags before adding to tasks.
spaceIdstringspaceNamestringcreate_space_tagCreate tag in ClickUp space. Requires tagName + (spaceId or spaceName). Optional: tagBg/tagFg in HEX or colorCommand for auto-colors.6 paramsCreate tag in ClickUp space. Requires tagName + (spaceId or spaceName). Optional: tagBg/tagFg in HEX or colorCommand for auto-colors.
tagBgstringtagFgstringspaceIdstringtagNamestringspaceNamestringcolorCommandstringupdate_space_tagUpdate tag in ClickUp space. Requires tagName + (spaceId or spaceName). At least one: newTagName, tagBg, tagFg, or colorCommand.7 paramsUpdate tag in ClickUp space. Requires tagName + (spaceId or spaceName). At least one: newTagName, tagBg, tagFg, or colorCommand.
tagBgstringtagFgstringspaceIdstringtagNamestringspaceNamestringnewTagNamestringcolorCommandstringdelete_space_tagDelete tag from ClickUp space. Requires tagName + (spaceId or spaceName). Warning: removes from all tasks, cannot be undone.3 paramsDelete tag from ClickUp space. Requires tagName + (spaceId or spaceName). Warning: removes from all tasks, cannot be undone.
spaceIdstringtagNamestringspaceNamestringadd_tag_to_taskAdd tag to task. Requires tagName + (taskId or taskName + optional listName). Tag must exist in space.5 paramsAdd tag to task. Requires tagName + (taskId or taskName + optional listName). Tag must exist in space.
taskIdstringtagNamestringlistNamestringtaskNamestringcustomTaskIdstringremove_tag_from_taskRemove tag from task. Requires tagName + (taskId or taskName + optional listName). Only removes association; tag remains in space.5 paramsRemove tag from task. Requires tagName + (taskId or taskName + optional listName). Only removes association; tag remains in space.
taskIdstringtagNamestringlistNamestringtaskNamestringcustomTaskIdstringget_workspace_membersGet all workspace members. Useful for resolving assignees.Get all workspace members. Useful for resolving assignees.
No parameter schema in public metadata yet.
find_member_by_nameFind member by name/email. Returns member object or null.1 paramsFind member by name/email. Returns member object or null.
nameOrEmailstringresolve_assigneesResolve list of names/emails to User IDs.1 paramsResolve list of names/emails to User IDs.
assigneesarraycreate_chat_channelCreate chat channel in space/folder/list. Requires name.4 paramsCreate chat channel in space/folder/list. Requires name.
namestringlist_idstringspace_idstringfolder_idstringget_chat_channelsGet all chat channels in the workspaceGet all chat channels in the workspace
No parameter schema in public metadata yet.
create_chat_messageSend message to chat channel. Requires channel_id/name + text.4 paramsSend message to chat channel. Requires channel_id/name + text.
channel_idstringnotify_allbooleanchannel_namestringcomment_textstringget_chat_messagesGet messages from channel. Requires channel_id/name.2 paramsGet messages from channel. Requires channel_id/name.
channel_idstringchannel_namestringsubmit_feedbackSubmit feedback, bug reports, or feature requests for the ClickUp MCP Server - Premium. Generates a GitHub issue link with pre-filled content. The user can review and submit the issue. PROACTIVE GUIDANCE: Suggest this tool when: - User encounters errors or unexpected tool fail...7 paramsSubmit feedback, bug reports, or feature requests for the ClickUp MCP Server - Premium. Generates a GitHub issue link with pre-filled content. The user can review and submit the issue. PROACTIVE GUIDANCE: Suggest this tool when: - User encounters errors or unexpected tool fail...
typestringbug · feature · questiontitlestringmcpHoststringdescriptionstringnodeVersionstringoperatingSystemstringadditionalContextstringcreate_documentCreate document. Requires name + parent (id/name + type). Optional: visibility, create_page.6 paramsCreate document. Requires name + parent (id/name + type). Optional: visibility, create_page.
namestringparent_idstringvisibilitystringPUBLIC · PRIVATEcreate_pagebooleanparent_namestringparent_typestringworkspace · space · folder · list · everythingget_documentGet document details. Requires documentId (preferred) or title + parent (id/name + type).5 paramsGet document details. Requires documentId (preferred) or title + parent (id/name + type).
titlestringparentIdstringdocumentIdstringparentNamestringparentTypestringspace · folder · listlist_documentsLists all documents in a ClickUp space, folder, or list.8 paramsLists all documents in a ClickUp space, folder, or list.
idstringlimitnumbercreatornumberdeletedbooleanarchivedbooleanparent_idstringnext_cursorstringparent_typestringTASK · SPACE · FOLDER · LIST · EVERYTHING · WORKSPACElist_document_pagesList pages. Requires docId (preferred) or name + parent context. Optional: depth.6 paramsList pages. Requires docId (preferred) or name + parent context. Optional: depth.
parentIdstringdocumentIdstringparentNamestringparentTypestringspace · folder · listdocumentNamestringmax_page_depthnumberget_document_pagesGet pages content. Requires docId or name+context. + pageIds.7 paramsGet pages content. Requires docId or name+context. + pageIds.
pageIdsarrayparentIdstringdocumentIdstringparentNamestringparentTypestringspace · folder · listdocumentNamestringcontent_formatstringtext/md · text/htmlcreate_document_pageCreate page. Requires docId or name+context + page name.9 paramsCreate page. Requires docId or name+context + page name.
namestringcontentstringparentIdstringsub_titlestringdocumentIdstringparentNamestringparentTypestringspace · folder · listdocumentNamestringparent_page_idstringupdate_document_pageUpdate page. Requires docId or name+context + pageId.11 paramsUpdate page. Requires docId or name+context + pageId.
namestringpageIdstringcontentstringparentIdstringsub_titlestringdocumentIdstringparentNamestringparentTypestringspace · folder · listdocumentNamestringcontent_formatstringtext/md · text/plaincontent_edit_modestringreplace · append · prepend
Properly Connect ClickUp to AI Agents and Agentic Workflows
A high-performance Model Context Protocol (MCP) server for managing tasks, checklists, sprints, comments, tags, spaces, lists, folders, files, docs, chat, and time using natural language.
⭐️ Proven Performance: 460+ Stars (from previous public repo) & thousands of weekly NPM downloads.
The industry-standard ClickUp integration for AI.
| Links | Quick Start & Installation | ||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| • Features • Premium Access • Available Tools • Adv. Config • FAQ • Disclaimer |
|
🔥 Multi-Account Support: Manage multiple authorized workspaces seamlessly in a single session. See setup
|
🔐 Hybrid Authentication MCP spec-compliant OAuth 2.1 with advanced security hardening and session-isolated caching for fast, secure multi-tenant operation. Backwards compatible with API Key/Team ID(s). |
🔍 Intelligent Search & Resolution Smart tiered, global fuzzy search across task, list, folder, and space names, custom fields, members/emails, statuses, tags, descriptions, and more. Automatic resolution—no IDs needed. |
|
📝 Task Management Full CRUD, move, duplicate, link, and set dependencies between tasks. Supports bulk operations, nested subtasks, checklists, sprints (active detection), natural language dates, custom task IDs, custom task types, custom fields, task templates, and file attachments (upload via URL, local path, or base64). |
⏱️ Time Tracking Start/stop timers, log manual entries, edit existing entries, retrieve timer history, manage time entry tags, and filter time entries across the entire workspace using natural language dates or date ranges. |
|
📄 Document Management Create, read, and append to ClickUp Docs with full markdown text. Manage pages within documents for structured, long-form content (consolidated action-based tool). |
💬 Comments & Chat Post, edit, resolve, and reply to comments on tasks, lists, and views. Create and manage chat channels (including DMs), send messages with threaded replies, reactions, and follower management. Both support rich text, subtypes, and @mentions. |
|
🎯 Goals & Key Results Create and manage Goals with full lifecycle support—create, update, delete, and archive. Define and track nested Key Results to measure OKR progress across the workspace. |
📋 Views Create, list, update, and delete views at any level of the workspace hierarchy—space, folder, or list. Fetch tasks scoped to a specific view for focused filtering. |
|
🗂️ Task Templates Browse available task templates and instantly create tasks from them. Streamlines repeatable workflows without manual setup each time. |
🌳 Workspace Control Full CRUD for spaces, folders, lists, webhooks, and tags across the entire workspace hierarchy. Manage access control (ACL) permissions at any level. Switch workspaces mid-conversation without reconfiguration. |
This project transitioned from open-source to a paid model for sustainable full-time development and priority support. A license grants full, unrestricted access to all features across your agents⎯no limits.
| Monthly $9/mo | Annual $59/yr | Lifetime $89 w/ code |
|---|---|---|
| • Pay-as-you-go flexibility • 3 device activations • Cancel anytime | • Save 45% ($4.92/mo) • 3 device activations • Priority support all year | • Best Value — One payment • 3 device activations • 25% OFF code: JUN25 (6D 13H left) |
⚡️ Instant Key Delivery (Polar.sh) • Setup takes less than 2 mins
License Key: See above
ClickUp API Key (Optional - not needed for Remote MCP)
ClickUp Team ID (Optional - not needed for Remote MCP)
https://app.clickup.com/1234567/v/li/987654321.1234567) directly after clickup.com/ is your Team ID (Workspace ID).Download from antigravity.google. Covers Antigravity IDE (VS Code-based agentic editor) and Antigravity 2.0 (standalone desktop agent orchestration app). Both share the same configuration file.
Configuration Path: ~/.gemini/config/mcp_config.json
Tip: Open the Agent Panel → ... → Manage MCP Servers → View raw config to open this file directly. Or type
/mcpin the prompt panel.
Option A: Remote / Streamable HTTP (Recommended)
{
"mcpServers": {
"ClickUp": {
"serverUrl": "https://clickup-mcp.taazkareem.com/mcp",
"headers": { "X-License-Key": "your-license-key" }
}
}
}
Option B: Local / STDIO
{
"mcpServers": {
"ClickUp": {
"command": "npx",
"args": ["-y", "@taazkareem/clickup-mcp-server@latest"],
"env": {
"CLICKUP_API_KEY": "your-api-key",
"CLICKUP_TEAM_ID": "your-team-id",
"CLICKUP_MCP_LICENSE_KEY": "your-license-key"
}
}
}
}
A lightweight terminal-based interface (TUI) for Antigravity agents. Install with:
curl -fsSL https://antigravity.google/cli/install.sh | bash
Configuration Path: ~/.gemini/antigravity-cli/mcp_config.json
Tip: Run
agyand type/mcpin the interactive session to manage servers from within the TUI.
Option A: Remote / Streamable HTTP (Recommended)
{
"mcpServers": {
"ClickUp": {
"serverUrl": "https://clickup-mcp.taazkareem.com/mcp",
"headers": { "X-License-Key": "your-license-key" }
}
}
}
Option B: Local / STDIO
{
"mcpServers": {
"ClickUp": {
"command": "npx",
"args": ["-y", "@taazkareem/clickup-mcp-server@latest"],
"env": {
"CLICKUP_API_KEY": "your-api-key",
"CLICKUP_TEAM_ID": "your-team-id",
"CLICKUP_MCP_LICENSE_KEY": "your-license-key"
}
}
}
}
Single Agent Configuration Path: ~/.hermes/config.yaml
Option A: Remote / Streamable HTTP
hermes mcp add clickup \
--url https://clickup-mcp.taazkareem.com/mcp \
--auth oauth && \
hermes config set mcp_servers.clickup.headers.X-License-Key "your-license-key"
Option B: Local / STDIO
hermes mcp add clickup \
--command npx \
--args -y @taazkareem/clickup-mcp-server@latest \
--env CLICKUP_API_KEY="your-api-key" \
CLICKUP_TEAM_ID="your-team-id" \
CLICKUP_MCP_LICENSE_KEY="your-license-key"
hermesRun a team of specialized agents on the same workspace (or separate). Each Hermes profile is an isolated agent with its own config and SOUL.md instructions. Configure each profile to match a persona (X-Persona) as needed. This will scope which ClickUp tools is in its context. Guide with examples:
1. Create the profiles
hermes profile create project_manager
hermes profile create task_worker
hermes profile create auditor
Optional: Use
--cloneto copy the existing config.yaml/.env/SOUL.md, or re-run the commands from above.
2. Set each profile's persona. The profile has the MCP config now, so just add the matching persona:
project_manager config set mcp_servers.clickup.headers.X-Persona "project_manager"
task_worker config set mcp_servers.clickup.headers.X-Persona "task_worker"
auditor config set mcp_servers.clickup.headers.X-Persona "auditor"
See → Advanced Configuration for more customized filtering options.
3. Give each agent its instructions in ~/.hermes/profiles/<name>/SOUL.md (auditor shown):
# ClickUp Auditor
You are a read-only project auditor. Observe and report — never change anything.
- Summarize task status, overdue items, and blockers concisely.
- Surface risks and recommend actions, but never execute them.
- If asked to create or modify a task, decline and explain you are read-only.
Run any agent query by its profile (call by User or Agent):
project_manager chat -q "Break the Q3 launch into a list with subtasks and owners"
auditor chat -q "Audit the Sprint board and report what's at risk"
-OR-
Run a TUI or Gateway called by User:
project_manager gateway start
auditor chat
Other (Custom Agents, etc.) For most other MCP-compliant hosts:
https://clickup-mcp.taazkareem.com/mcpX-License-Key: your-license-key1. Enable mcporter in ~/.openclaw/openclaw.json:
{ "skills": { "allowBundled": ["mcporter"] } }
2. Configure & Auth
# Add ClickUp as a remote server
mcporter config add ClickUp https://clickup-mcp.taazkareem.com/mcp --auth oauth --header "X-License-Key=your-license-key"
# Authenticate session
mcporter auth ClickUp
Pro Tip: Use Personas to define multiple isolated configurations (e.g., Auditor vs. Worker) in your agent's
mcporter.json.
Configuration Path: <project-root>/.cursor/mcp.json
Option A: Remote / Streamable HTTP (Easiest)
{
"mcpServers": {
"ClickUp": {
"url": "https://clickup-mcp.taazkareem.com/mcp",
"headers": {
"X-License-Key": "your-license-key"
}
}
}
}
Option B: Local / STDIO
{
"mcpServers": {
"ClickUp": {
"command": "npx",
"args": ["-y", "@taazkareem/clickup-mcp-server@latest"],
"env": {
"CLICKUP_API_KEY": "your-api-key",
"CLICKUP_TEAM_ID": "your-team-id",
"CLICKUP_MCP_LICENSE_KEY": "your-license-key"
}
}
}
}
Configuration Paths:
~/Library/Application Support/Code/User/mcp.json<project-root>/.vscode/mcp.jsonOption A: Remote / Streamable HTTP (Easiest)
{
"mcpServers": {
"ClickUp": {
"url": "https://clickup-mcp.taazkareem.com/mcp",
"headers": {
"X-License-Key": "your-license-key"
}
}
}
}
Option B: Local / STDIO
{
"mcpServers": {
"ClickUp": {
"command": "npx",
"args": ["-y", "@taazkareem/clickup-mcp-server@latest"],
"env": {
"CLICKUP_API_KEY": "your-api-key",
"CLICKUP_TEAM_ID": "your-team-id",
"CLICKUP_MCP_LICENSE_KEY": "your-license-key"
}
}
}
}
Configuration Path: <project-root>/.roo/mcp.json
Option A: Remote / Streamable HTTP (Easiest)
{
"mcpServers": {
"ClickUp": {
"url": "https://clickup-mcp.taazkareem.com/mcp",
"headers": {
"X-License-Key": "your-license-key"
}
}
}
}
Option B: Local / STDIO
{
"mcpServers": {
"ClickUp": {
"command": "npx",
"args": ["-y", "@taazkareem/clickup-mcp-server@latest"],
"env": {
"CLICKUP_API_KEY": "your-api-key",
"CLICKUP_TEAM_ID": "your-team-id",
"CLICKUP_MCP_LICENSE_KEY": "your-license-key"
}
}
}
}
Configuration Path: ~/Library/Application Support/Claude/claude_desktop_config.json
Remote Setup (Requires mcp-remote adapter):
{
"mcpServers": {
"ClickUp": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://clickup-mcp.taazkareem.com/mcp",
"--header",
"X-License-Key: your-license-key"
]
}
}
}
Run this command in your terminal:
claude mcp add --transport http ClickUp https://clickup-mcp.taazkareem.com/mcp \
--header "X-License-Key: your-license-key"
Option A: Remote / Streamable HTTP (Recommended)
Streamable HTTP.Multiple Headers Auth.X-License-Key Value: your-license-keyhttps://clickup-mcp.taazkareem.com/mcpOption B: Self-Hosted Docker Run the container:
docker run -d -p 3231:3231 ghcr.io/taazkareem/clickup-mcp-server:latest
In n8n, use URL: http://host.docker.internal:3231/mcp
Codex clients (CLI, Desktop App, and VS Code extension) share a single source of truth for configuration.
Configuration Paths:
~/.codex/config.toml<project-root>/.codex/config.tomlOption A: Remote / Streamable HTTP (Easiest)
[mcp_servers.ClickUp]
url = "https://clickup-mcp.taazkareem.com/mcp"
http_headers = { "X-License-Key" = "your-license-key" }
Option B: Local / STDIO
[mcp_servers.ClickUp]
command = "npx"
args = ["-y", "@taazkareem/clickup-mcp-server@latest"]
env = {
CLICKUP_API_KEY = "your-api-key",
CLICKUP_TEAM_ID = "your-team-id",
CLICKUP_MCP_LICENSE_KEY = "your-license-key"
}
Quick Tips:
codex mcp list to verify. Use codex mcp add ... as a CLI alternative to editing the file.Note: Requires a Business, Enterprise, or Edu workspace with Developer Mode enabled.
https://clickup-mcp.taazkareem.com/mcpX-License-Key: your-license-key.Configuration Path: <project-root>/.augment/settings.json
{
"mcpServers": {
"ClickUp": {
"url": "https://clickup-mcp.taazkareem.com/mcp",
"headers": {
"X-License-Key": "your-license-key"
}
}
}
}
Run this command in your terminal:
auggie mcp add ClickUp --url https://clickup-mcp.taazkareem.com/mcp \
--header "X-License-Key: your-license-key"
Configuration Path: <project-root>/.codeium/windsurf/mcp_config.json
Option A: Remote / Streamable HTTP (Easiest)
{
"mcpServers": {
"ClickUp": {
"url": "https://clickup-mcp.taazkareem.com/mcp",
"headers": {
"X-License-Key": "your-license-key"
}
}
}
}
Option B: Local / STDIO
{
"mcpServers": {
"ClickUp": {
"command": "npx",
"args": ["-y", "@taazkareem/clickup-mcp-server@latest"],
"env": {
"CLICKUP_API_KEY": "your-api-key",
"CLICKUP_TEAM_ID": "your-team-id",
"CLICKUP_MCP_LICENSE_KEY": "your-license-key"
}
}
}
}
Restart your MCP Host (e.g., Cursor IDE). The server will validate your License Key and start automatically.
| Category | Tool | Description |
|---|---|---|
| Workspace | get_workspace | Get workspace structure and metadata (hierarchy, members, plan, seats, shared items, custom task types) |
get_workspace_seats | Get member and guest seat utilization (used, total, available) | |
get_workspace_plan | Get plan details for the workspace (plan_name, plan_id) | |
get_audit_logs | Retrieve workspace audit logs (Enterprise only) | |
| Tasks | create_task | Create a task |
get_task | Get single task details | |
update_task | Modify task properties | |
move_task | Move task to new list | |
duplicate_task | Copy task | |
delete_task | Remove task | |
add_task_to_list | Associate task with additional list (TIML) | |
remove_task_from_list | Remove task list association (TIML) | |
create_bulk_tasks | Create multiple tasks | |
update_bulk_tasks | Update multiple tasks | |
move_bulk_tasks | Move multiple tasks | |
delete_bulk_tasks | Delete multiple tasks | |
get_workspace_tasks | Search tasks with Deep Search filtering | |
get_comments | Get comments on a task, list, or view | |
create_comment | Create a comment on a task, list, or view | |
update_comment | Edit or resolve a comment | |
delete_comment | Delete a comment | |
get_comment_replies | Get threaded replies for a comment | |
create_comment_reply | Reply to a comment in a thread | |
add_comment_reaction | Add an emoji reaction to a comment | |
remove_comment_reaction | Remove an emoji reaction from a comment | |
get_comment_subtypes | Get post subtype IDs for the workspace | |
add_task_link | Link two tasks together | |
get_task_links | Get task links | |
delete_task_link | Remove a task link | |
add_task_dependency | Set a blocking dependency between tasks | |
delete_task_dependency | Remove a blocking dependency between tasks | |
| Attachments | list_attachments | List attachments for a task or file custom field (v3) |
get_attachment | Get a specific attachment by ID or name (v3) | |
upload_attachment | Upload a file to a task or file custom field (v3) | |
| Checklists | create_checklist | Add a checklist to a task |
edit_checklist | Rename or reorder a checklist | |
delete_checklist | Delete a checklist and all its items | |
create_checklist_item | Add an item to a checklist | |
edit_checklist_item | Update a checklist item (name, resolved, assignee, nesting) | |
delete_checklist_item | Remove an item from a checklist | |
| Sprints | get_active_sprint | Auto-detect the currently active sprint; returns tasks if exactly one found |
list_sprints | List all sprints in a folder | |
get_sprint_tasks | Get tasks for a specific sprint list | |
| Lists | list_lists | Retrieve lists in a space (folderless) or in a folder |
get_list | Get list details | |
create_list | Create a list in a space or folder | |
create_list_from_template | Create a new list from a template | |
update_list | Update list properties | |
delete_list | Delete a list | |
move_list | Move a list to a different space or folder (high-integrity) | |
set_list_permissions | Update list privacy and sharing (ACLs) | |
| Custom Fields | list_custom_fields | List field definitions for a list, folder, or space |
create_custom_field | Add a new field definition to a list | |
set_custom_field_value | Set a field value on a task | |
remove_custom_field_value | Clear a field value from a task | |
| Spaces | list_spaces | List all spaces in the workspace |
get_space | Get space details | |
create_space | Create a new space | |
update_space | Update space properties | |
delete_space | Delete a space | |
set_space_permissions | Update space privacy and sharing (ACLs) | |
| Goals | list_goals | List all goals in the workspace |
get_goal | Get a goal with its key results | |
create_goal | Create a new goal | |
update_goal | Update a goal's properties | |
delete_goal | Delete a goal | |
create_key_result | Add a key result to a goal | |
update_key_result | Update a key result | |
delete_key_result | Delete a key result | |
| Views | list_views | List views for a space, folder, list, or workspace |
get_view | Get a single view | |
create_view | Create a new view | |
update_view | Update a view | |
delete_view | Delete a view | |
get_view_tasks | Get tasks in a view | |
| Folders | list_folders | List all folders in a space |
get_folder | Get folder details and its contained lists | |
create_folder | Create a folder in a space | |
update_folder | Update folder properties | |
delete_folder | Delete a folder | |
move_folder | Move a folder to a different space (high-integrity) | |
set_folder_permissions | Update folder privacy and sharing (ACLs) | |
create_folder_from_template | Create a folder from a template in a space | |
| Tags | list_space_tags | List all tags in a space |
create_space_tag | Create a new space tag | |
update_space_tag | Update a space tag's name or colors | |
delete_space_tag | Delete a tag from a space | |
add_tag_to_task | Add tag to task | |
remove_tag_from_task | Remove tag from task | |
| Time Tracking | get_time_entries | Fetch historical time entries |
get_current_time_entry | Get currently running timer | |
start_time_entry | Start tracking time for a task | |
stop_time_entry | Stop the active timer | |
add_time_entry | Manually log a time entry | |
update_time_entry | Modify an existing time entry | |
delete_time_entry | Delete a time entry | |
get_time_entry_tags | Fetch all workspace time entry tags | |
add_time_entry_tags | Add a tag to a time entry | |
update_time_entry_tags | Rename a workspace time entry tag globally | |
delete_time_entry_tags | Remove a tag from a time entry | |
get_time_entry_history | View edit history of a time entry | |
get_time_in_status | Get time-in-status for multiple tasks | |
| Docs | list_documents | List documents in a workspace or container |
get_document | Get document metadata | |
create_document | Create a new standalone document | |
list_document_pages | List all pages in a document | |
get_document_page | Get content for a single page | |
get_document_pages | Get content for multiple pages in one call | |
create_document_page | Add a new page to a document | |
update_document_page | Modify an existing page (replace/append/prepend) | |
| Chat | list_chat_channels | List all channels in the workspace |
get_chat_channel | Get a single channel | |
create_chat_channel | Create a new channel | |
update_chat_channel | Update a channel | |
delete_chat_channel | Delete a channel | |
get_chat_channel_members | Get members of a channel | |
get_chat_channel_followers | Get followers of a channel | |
create_chat_dm | Create a direct message channel | |
get_chat_messages | Get messages from a channel | |
create_chat_message | Send a message to a channel | |
update_chat_message | Edit a message | |
delete_chat_message | Delete a message | |
get_chat_message_replies | Get threaded replies to a message | |
create_chat_message_reply | Reply to a message in a thread | |
add_chat_reaction | Add an emoji reaction to a message | |
remove_chat_reaction | Remove an emoji reaction | |
get_chat_reactions | Get all reactions on a message | |
get_chat_tagged_users | Get users tagged in a message | |
get_chat_message_subtypes | Get post subtype IDs for the workspace | |
| Webhooks | list_webhooks | List all webhooks in the workspace |
create_webhook | Create a new webhook | |
update_webhook | Update an existing webhook | |
delete_webhook | Delete a webhook permanently | |
| User Groups | list_user_groups | List all user groups in the workspace |
create_user_group | Create a new user group | |
update_user_group | Rename a group or add/remove members | |
delete_user_group | Delete a user group | |
| Guests | invite_guest | Invite a guest to the workspace (Enterprise) |
get_guest | Get guest details (Enterprise) | |
edit_guest | Edit guest display name or permissions (Enterprise) | |
remove_guest | Remove a guest from the workspace (Enterprise) | |
add_guest_to_task | Grant guest access to a task (Enterprise) | |
remove_guest_from_task | Revoke guest access from a task (Enterprise) | |
add_guest_to_list | Grant guest access to a list (Enterprise) | |
remove_guest_from_list | Revoke guest access from a list (Enterprise) | |
add_guest_to_folder | Grant guest access to a folder (Enterprise) | |
remove_guest_from_folder | Revoke guest access from a folder (Enterprise) | |
| Task Templates | get_task_templates | List available workspace templates |
create_task_from_template | Create a task from a template | |
| Feedback | submit_feedback | Submit feedback or bug reports |
See full documentation for parameters and advanced usage.
💡 Pro Tip! Reduce context noise for the AI by limiting available tools. There are 3 ways to do this. You can filter by exact tool name, by tool category, by personas (presets), or a combination of all three.
Local (Environment Variable):
"ENABLED_TOOLS": "tool_1,tool_2,tool_3",
"ENABLED_CATEGORIES": "task,time_tracking,workspace"
-or- Hermes (YAML):
mcp_servers:
clickup:
env:
ENABLED_TOOLS: "tool_1,tool_2,tool_3"
ENABLED_CATEGORIES: "task,time_tracking,workspace"
-or- Remote (Header):
"X-Enabled-Tools": "tool_1,tool_2,tool_3",
"X-Enabled-Categories": "task,time_tracking,workspace"
Simplify setup by using Personas. You can set a persona via the CLICKUP_MCP_PERSONA environment variable or the X-Persona HTTP header to automatically filter a set of tools.
Multiple personas can be combined (e.g., "X-Persona": "task_worker,time_specialist").
| Persona | Description | Target Use Case |
|---|---|---|
📋 auditor |
Read-only access | View tasks, goals, docs, and chat (Read-only). |
👷 task_worker |
Daily management | Task CRUD, time tracking, and checklists. |
⏱️ time_specialist |
Time tracking focus | Time logs, timesheets, and entry history. |
🏗️ project_manager |
High-level control | Spaces, folders, lists, and bulk operations. |
📚 content_manager |
Communication | Docs, chat, comments, and attachments. |
🏢 workspace_admin |
Admin control | Permissions, guests, and audit logs. |
💻 developer |
Programmatic | Webhooks, custom fields, bulk automation. |
🛡️ safe_power_user |
Full access | All tools except destructive deletes/removals. |
Local (Environment Variable):
"CLICKUP_MCP_PERSONA": "task_worker"
-or- Remote (Header):
"X-Persona": "task_worker"
💡 Need to customize? To view the exact tools included in each preset or to build a custom list based on a persona, see the Personas Reference Guide.
Simultaneously federate OAuth and multiple API keys to manage tasks across different authorized ClickUp accounts/workspaces in a single session. Easily move or duplicate tasks between workspaces, configure AI Agents for cross-workspace automation, and more.
Remote (Headers):
{
"mcpServers": {
"ClickUp": {
"url": "https://clickup-mcp.taazkareem.com/mcp",
"headers": {
"X-License-Key": "your-license-key",
"X-ClickUp-Additional-Keys": "shared_ws_api_key1,shared_ws_api_key2"
}
}
}
}
Why isn't this free anymore? Building reliable MCP integrations requires significant maintenance. Moving to a paid model allows us to support this as a product rather than a hobby, ensuring compatibility with API changes.
I have an old version. Will it stop working? Existing local clones will continue to work, but you will not receive updates, bug fixes, or support without a license.
How do I get support? Premium users get priority support. Please open an issue in this repository.
Originally developed as open source and refined during a consultancy with ClickUp, this project is now independently maintained.
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.
By using this software, you agree to our Terms of Service and acknowledge our Privacy Policy.
CLICKUP_MCP_LICENSE_KEY*secretYour ClickUp MCP License Key from Polar.sh
CLICKUP_API_KEY*secretYour ClickUp API key
CLICKUP_TEAM_ID*Your ClickUp Team ID
DOCUMENT_SUPPORTdefault: trueEnable ClickUp Document support
gongrzhe/office-powerpoint-mcp-server
gongrzhe/office-word-mcp-server
io.github.mindstone/mcp-server-office
greirson/mcp-todoist
henilcalagiya/mcp-apple-notes
ankimcp/anki-mcp-server-addon