@rafadepaula/clickup-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| CLICKUP_API_TOKEN | Yes | Your ClickUp Personal API Token (starts with pk_). The server connects directly to the official ClickUp REST API (v2 and v3) using this token. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| clickup_add_tag_to_taskB | Add existing tag to task. Tag must exist in space. Note: Will fail if tag doesn't exist. |
| clickup_add_task_dependencyA | Set a directional dependency where one task blocks the other. Use 'waiting_on' when task_id cannot start until depends_on is done, or 'blocking' when task_id is blocking depends_on. For non-blocking associations, use add_task_link instead. |
| clickup_add_task_linkA | Link two tasks together. Creates a bidirectional association with no ordering or blocking. For blocking/dependency relationships, use add_task_dependency instead. |
| clickup_add_task_to_listA | Add a task to an additional list (keeps current home list). Requires the Tasks in Multiple Lists ClickApp to be enabled. |
| clickup_add_time_entryA | Add a manual time entry to a task. You can provide either (start + duration) OR (start + end). The tool will calculate missing values. Requires task_id, start time, and either duration or end time. Supports description, billable flag, and tags. |
| clickup_attach_task_fileA | Attach file to task. Requires task_id. File sources: 1) base64 + filename (small files under ~200KB only), 2) URL (http/https). For files on the local machine, use request_attachment_upload instead. |
| clickup_create_commentB | Create a comment or threaded reply on a task, list, or view. Supports Markdown (headings, bold, code blocks, tables). Use entity_type + entity_id for the target entity. Provide reply_to_id for a threaded reply. |
| clickup_create_documentC | Create a document in a ClickUp space, folder, or list. Requires name, parent info, visibility and create_page flag. |
| clickup_create_document_pageC | Create a new page in a ClickUp document. |
| clickup_create_folderA | Create folder in ClickUp space. Use space_id (preferred) or space_name + folder name. Supports override_statuses for folder-specific statuses. Use clickup_create_list_in_folder to add lists after creation. |
| clickup_create_listA | Create a list in a ClickUp space. Requires name and space_name or space_id. For lists in folders, use clickup_create_list_in_folder. |
| clickup_create_list_in_folderA | Create a list in a ClickUp folder. Requires folder_id and list name. Supports content and status. If you need to get a folder ID from a folder name, use clickup_get_folder first. |
| clickup_create_reminderA | Create a personal reminder in your ClickUp workspace. Requires title and due_date (YYYY-MM-DD or YYYY-MM-DD HH:MM format, uses your timezone). |
| clickup_create_taskA | Create a task in a ClickUp list. Requires name and list_id — always ask the user which list. Supports assignees (user IDs, emails, usernames, or "me") and task_type by name. |
| clickup_create_task_commentA | [DEPRECATED → clickup_create_comment] Legacy name for creating a task comment, kept for clients with stale tool listings. Prefer the replacement tool; it takes entity_id instead of task_id. |
| clickup_delete_commentA | Delete a comment by comment_id. This cannot be undone. Use clickup_get_task_comments or clickup_get_threaded_comments to find the comment ID. |
| clickup_delete_taskA | Delete a task by task_id (supports custom IDs like 'DEV-1234'). Always confirm the task_id with the user before deleting. |
| clickup_download_document_page_attachmentA | Download a ClickUp doc page attachment (get attachment IDs from clickup_list_document_page_attachments). Returns a short-lived download URL plus attachment metadata. IMPORTANT: the URL is short-lived and, on workspaces with private attachments enabled, single-use — it expires within ~5 minutes. Fetch it immediately and exactly once; do not preview, HEAD-request, retry, or store it. If a download fails or the URL expired, call this tool again for a fresh URL. |
| clickup_download_task_attachmentA | Download a ClickUp task attachment (get attachment IDs from clickup_get_task with include: ["attachments"]). Returns a short-lived download URL plus attachment metadata. IMPORTANT: the URL is short-lived and, on workspaces with private attachments enabled, single-use — it expires within ~5 minutes. Fetch it immediately and exactly once; do not preview, HEAD-request, retry, or store it. If a download fails or the URL expired, call this tool again for a fresh URL. |
| clickup_execute_operatorA | Run one enabled Unified API operator (a |
| clickup_filter_tasksA | Retrieve tasks with combined filters (tags, lists, folders, spaces, statuses, assignees, due date range, completion date range, custom field values). Multiple values within a filter use OR logic; across filters, AND logic applies (custom_fields entries also AND together). Best for filtering tasks by structured field values. For text/keyword search across all workspace content, use search instead. Custom field filters need field IDs — discover them with clickup_get_custom_fields. Results are paginated at 100 tasks per page: the response includes has_more and next_page, and when has_more is true you MUST call again with page set to next_page (repeating until has_more is false) to retrieve every matching task — a single call is not guaranteed to be complete. Assignees must be numeric user IDs — use clickup_resolve_assignees to convert names/emails/"me". Date filters use YYYY-MM-DD. For a single task by ID, use clickup_get_task. |
| clickup_find_member_by_nameA | Get a member in the ClickUp workspace by name or email. Returns the member object if found, or null if not found. |
| clickup_get_bulk_tasks_time_in_statusA | Get the time multiple tasks have spent in each status (bulk operation, up to 100 tasks). Returns a map of task IDs to their status history and current status time data. Requires the "Total time in Status" ClickApp to be enabled in the workspace. |
| clickup_get_chat_channel_messagesA | Get messages for a chat channel. Messages with has_replies=true have threads fetchable via clickup_get_chat_message_replies. Supports pagination. Channel URLs look like //v/cn/<channel_id> or //chat/r/<channel_id>. |
| clickup_get_chat_channelsB | List chat channels in the workspace with pagination support. |
| clickup_get_chat_message_repliesA | Get threaded replies for a chat message by message_id. Supports pagination. Chat thread URLs (//v/cn/<channel_id>/t/ or //chat/r/<channel_id>/t/) end in a chat message id — pass it here, not to clickup_get_task. That id is usually the thread root but can be a reply inside the thread; if no replies come back, find the thread root via clickup_get_chat_channel_messages on the channel. |
| clickup_get_current_time_entryA | Get the currently running time entry, if any. No parameters needed. |
| clickup_get_custom_fieldsA | Get custom field definitions at any hierarchy level (list, folder, space, or workspace). Returns field IDs, types, and options for dropdowns/labels. Use this to discover available custom fields before setting values on tasks. Multiple scopes can be queried in a single call. |
| clickup_get_document_pagesA | Get the full content of specific pages by page ID. Use list_document_pages first to discover available page IDs. |
| clickup_get_folderA | Get folder details by folder_id or folder_name (+ space info). Use to resolve folder names to IDs. |
| clickup_get_listA | Get list details by list_id or list_name. Returns id, name, content, space info, and configured statuses. Use to resolve list names to IDs. |
| clickup_get_operatorsA | Lists the Unified API operators enabled on this server ( |
| clickup_get_schemaA | Returns the entity-relationship schema (Markdown with a Mermaid ER diagram) for the models behind the enabled Unified API operators. Optional background before a clickup_execute_operator call; not needed for the dedicated clickup_* tools. |
| clickup_get_taskA | Retrieve a ClickUp task by ID (supports custom IDs like 'DEV-1234'). Returns a compact summary by default — core fields are always included, large sections appear as counts only (e.g. custom_fields_count: 3). Use include to fetch full data for specific sections: include: ["custom_fields", "description"]. Set expand_statuses=true to list valid statuses for update_task. URL disambiguation: a bare /t/ or /t// ClickUp URL is a task, but in chat thread URLs (/v/cn/<channel_id>/t/ or /chat/r/<channel_id>/t/) the trailing id is a chat MESSAGE id — use clickup_get_chat_message_replies for those. |
| clickup_get_task_commentsA | Get task comments with reply_count per comment. Use clickup_get_threaded_comments for replies when reply_count > 0. Supports pagination via start/start_id. |
| clickup_get_task_time_in_statusA | Get the time a task has spent in each status. Returns the current status with elapsed time and the full status history with time spent in each status. Requires the "Total time in Status" ClickApp to be enabled in the workspace. |
| clickup_get_threaded_commentsA | Get threaded replies for a comment by comment_id. Use clickup_get_task_comments first to find comments with reply_count > 0. |
| clickup_get_time_entriesA | Get time entries with optional filtering by task, date range, assignee, and billable status. Pass task_id to scope to a single task, or omit for workspace-wide results. IMPORTANT: without assignee, only the authenticated user's entries are returned — pass 'any' to get all users' entries, or specific user IDs (comma-separated) for targeted queries. |
| clickup_get_workspace_hierarchyA | Get workspace hierarchy (spaces, folders, lists) with pagination and depth control. Use only when you need the workspace structure — most tools resolve names automatically. |
| clickup_get_workspace_membersA | List all members in the workspace. Most tools resolve assignees automatically — use only when you need the full member list. |
| clickup_list_document_page_attachmentsB | List metadata for files attached to a ClickUp doc page (images and files embedded in the page content). |
| clickup_list_document_pagesA | List page names and structure of a document (no content). Use get_document_pages to fetch full page content by page ID. |
| clickup_merge_tasksA | Merge one or more source tasks into a target task. The target task survives and absorbs content from the source tasks, which are consumed. Destination field values take precedence on conflicts. Works with both regular task IDs and custom IDs (like 'DEV-1234'). |
| clickup_move_taskB | Move a task to a new home list. Requires task_id and list_id (supports custom IDs). Use clickup_get_list to resolve list names. |
| clickup_remove_tag_from_taskB | Remove tag from task. Only removes tag-task association, tag remains in space. |
| clickup_remove_task_dependencyC | Remove a dependency between two tasks. |
| clickup_remove_task_from_listA | Remove a task from an additional list (cannot remove from home list). Requires the Tasks in Multiple Lists ClickApp to be enabled. |
| clickup_remove_task_linkC | Remove a link between two tasks. |
| clickup_request_attachment_uploadA | Get short-lived, structured upload details (upload URL, ticket, HTTP method, and multipart field name) to attach a LOCAL file (any size) to a task; follow the returned instructions to upload it with a native HTTP client. For small base64 payloads or web URLs, use attach_task_file instead. |
| clickup_resolve_assigneesA | Convert names, emails, or "me" to numeric ClickUp user IDs. Use when you need IDs for filters (e.g., search, filter_tasks). Most task tools resolve assignees automatically. |
| clickup_searchA | Search across all workspace content (tasks, docs, dashboards, attachments, whiteboards, chats, forms). Best for keyword/text matching across all content types. For filtering tasks by field values (status, priority, tags, dates), use filter_tasks instead. Supports filtering by assignees, creators, status, location, asset types, and date ranges. Date filters use YYYY-MM-DD or YYYY-MM-DD HH:MM format in your timezone. Results are paginated: the response includes next_cursor whenever more results exist. When next_cursor is present you MUST call search again with that value in the cursor field (repeating until next_cursor is absent) to retrieve every match — a single call is not guaranteed to be complete. |
| clickup_search_remindersA | Search and list your reminders. Supports filtering by type, status, completion, and since date. Date filters use YYYY-MM-DD or YYYY-MM-DD HH:MM format (e.g., '2025-01-01') in your timezone. Paginated via cursor. |
| clickup_send_chat_messageA | Send a message or threaded reply to a chat channel. Provide parent_message_id for threaded replies. Supports markdown and post types. |
| clickup_start_time_trackingB | Start time tracking on a task. Supports description, billable status, and tags. Only one timer can be running at a time. For best results, omit extra parameters unless specifically needed. |
| clickup_stop_time_trackingA | Stop the currently running time tracker. Supports description and tags. Returns the completed time entry details. |
| clickup_update_commentA | Edit an existing comment in place by comment_id. Replaces the comment text (supports Markdown), and can mark it resolved or reassign it. Use clickup_get_task_comments or clickup_get_threaded_comments to find the comment ID. |
| clickup_update_document_pageA | Update a page in a ClickUp document. Use content_edit_mode to control how content is applied: append/prepend merge with the existing page server-side and preserve it exactly — no need to read the page first. The default is 'replace', which overwrites the whole page. If appended content should start on its own line, include a leading newline; if prepended content should end on its own line, include a trailing newline. |
| clickup_update_folderA | Update a ClickUp folder. Requires folder_id + at least one update field (name/override_statuses). Only specified fields updated. Changes apply to all lists in folder. If you need to get a folder ID from a folder name, use clickup_get_folder first. |
| clickup_update_listA | Update a ClickUp list. Requires list_id + at least one update field (name/content/status). Only specified fields updated. If you need to get a list ID from a list name, use clickup_get_list first. |
| clickup_update_reminderC | Update a reminder by reminder_id. Supports title, description, due_date (YYYY-MM-DD or YYYY-MM-DD HH:MM, e.g. '2025-12-31'), and is_completed. |
| clickup_update_taskB | Update task properties. Requires task_id and at least one field to change. Supports assignees (user IDs, emails, usernames, or "me"), custom fields as [{id, value}], and task_type by name (or 'none' to reset). |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 61 tools
Most tools target distinct ClickUp resources, but several boundaries are fuzzy: create_list vs create_list_in_folder, attach_task_file vs request_attachment_upload, get_task_comments vs get_threaded_comments, and search vs filter_tasks all require careful reading. The deprecated clickup_create_task_comment alongside clickup_create_comment adds avoidable confusion, and member resolution is split across get_workspace_members, find_member_by_name, and resolve_assignees.
Names overwhelmingly follow clickup_verb_noun in snake_case, which is predictable and readable. Minor deviations exist, such as find_member_by_name and resolve_assignees using different verbs, plus the legacy clickup_create_task_comment, but the overall convention is stable.
At 61 tools, the surface is very heavy for an agent to navigate reliably, exceeding the 25-tool threshold where selection errors become likely. ClickUp is broad, but the count includes deprecated tools and generic operator indirection, making the set feel overgrown rather than tightly scoped.
Core task, comment, list, folder, document, chat, time-tracking, reminder, tag, dependency, and attachment workflows are covered. However, obvious lifecycle gaps remain for a ClickUp server: no dedicated space creation/update/delete, no folder/list deletion, no document/page deletion, and limited time-entry management. The generic execute_operator may fill some gaps, but only when enabled, so the dedicated tool surface is notably incomplete.