Skip to main content
Glama
trustxai

amazing-clickup-mcp

by trustxai

ClickUp MCP Server (amazing-clickup-mcp)

A comprehensive Model Context Protocol server for the ClickUp public API (v2 + v3), built on the official MCP Python SDK (FastMCP, stdio transport). It exposes 166 tools covering nearly the entire ClickUp surface — Spaces, Folders, Lists, Views, Docs, Tasks, Comments, Checklists, Tags, Custom Fields, Time Tracking, Goals, Members, Guests, Webhooks, Chat, and more — so an LLM can read and drive a ClickUp Workspace on your behalf.

The PyPI distribution and console script are both amazing-clickup-mcp (the bare clickup-mcp name is taken on PyPI by an unrelated package). Always run uvx amazing-clickup-mcp — never uvx clickup-mcp.

Features

  • Full API coverage (166 tools). v2 and v3 endpoints across 22 resource groups — Spaces, Folders, Lists, Views, Docs, Tasks, Comments, Checklists, Tags, Custom Fields, Time Tracking 2.0, Relationships, Attachments, Goals, Members & User Groups, Guests, Users, Webhooks, Workspace admin, Chat channels, Chat messages, and a health check.

  • Statuses managed via payloads. ClickUp has no dedicated statuses endpoint; create and update Space/Folder/List objects with statuses/override_statuses payloads.

  • Docs created in-place (v3). Create a Doc directly in its final Space/Folder/List/ Everything location — no drag-later.

  • Dual-format responses. Markdown for humans and LLMs (default) or JSON for programmatic use, selectable per call via response_format.

  • Strict input validation. One pydantic v2 model per tool (extra="forbid", field-level constraints) so malformed calls fail fast with a clear message.

  • Uniform error mapping. 400/401/403/404/429, timeouts, and connection errors are normalized into readable strings that surface ClickUp err/ECODE details and rate-limit guidance.

  • stdio-only transport. No HTTP/SSE and no logging to stdout — the standard input/ output channel is the MCP protocol channel.

Available Tools

All 166 tools, grouped by resource. Read tools return either markdown (default) or JSON; mutating tools return a human-readable confirmation.

Tool

Description

Spaces

clickup_create_space

Create a new Space inside a Workspace.

clickup_get_spaces

List the Spaces in a Workspace.

clickup_get_space

Fetch full detail for a single Space, including its status workflow and ClickApp toggles.

clickup_update_space

Rename a Space, change its color/privacy, or replace its ClickApp/status configuration.

clickup_delete_space

Permanently delete a Space and everything inside it.

Folders

clickup_create_folder

Create a Folder inside a Space.

clickup_get_folders

List the Folders in a Space.

clickup_get_folder

Fetch one Folder, including its Lists and status workflow.

clickup_update_folder

Rename a Folder and/or toggle its status-override setting.

clickup_delete_folder

Permanently delete a Folder and every List/Task inside it.

clickup_create_folder_from_template

Create a new Folder by replaying a Folder template.

clickup_get_folder_templates

List the Folder templates available in a Workspace.

Lists

clickup_create_list

Create a new List inside a Folder.

clickup_create_folderless_list

Create a new List directly inside a Space, with no parent Folder.

clickup_get_lists

List the Lists that belong to a Folder.

clickup_get_folderless_lists

List the Lists that live directly inside a Space (no Folder).

clickup_get_list

Fetch full detail for a single List by id.

clickup_update_list

Update a List's name, description, dates, priority, assignee, or color.

clickup_delete_list

Permanently delete a List from the Workspace.

clickup_add_task_to_list

Add an existing Task's membership to an additional List.

clickup_remove_task_from_list

Remove a Task's membership from an additional (non-home) List.

clickup_create_list_from_template_in_folder

Create a new List inside a Folder by instantiating a List template.

clickup_create_list_from_template_in_space

Create a new folderless List inside a Space by instantiating a template.

clickup_get_list_templates

List available List templates for a Workspace.

Views

clickup_create_team_view

Create a task or page view at the Everything Level of a Workspace.

clickup_create_space_view

Create a task or page view scoped to a Space.

clickup_create_folder_view

Create a task or page view scoped to a Folder.

clickup_create_list_view

Create a task or page view scoped to a List.

clickup_get_team_views

List the task and page views defined at the Everything Level of a Workspace.

clickup_get_space_views

List the task and page views available for a Space.

clickup_get_folder_views

List the task and page views available for a Folder.

clickup_get_list_views

List the task and page views available for a List.

clickup_get_view

Get the full configuration of a single task or page view.

clickup_get_view_tasks

List the tasks currently visible in a view, honoring its filters and sorting.

clickup_update_view

Rename a view and/or replace its grouping/sorting/filters/columns/settings.

clickup_delete_view

Permanently delete a task or page view.

Docs

clickup_search_docs

Search the Docs in a Workspace, optionally filtered by parent location.

clickup_create_doc

Create a Doc, optionally placed directly in its final location.

clickup_get_doc

Fetch a single Doc's metadata (name, parent, timestamps).

clickup_get_doc_page_listing

List a Doc's page tree (titles and ids only, nested — no content).

clickup_get_doc_pages

Fetch a Doc's pages with content (the full readable body of the Doc).

clickup_create_page

Add a page to an existing Doc (optionally nested under another page).

clickup_get_page

Fetch one page of a Doc, including its content.

clickup_edit_page

Update a Doc page's title, subtitle, and/or content.

Tasks

clickup_create_task

Create a task inside a List.

clickup_get_task

Fetch one task by id.

clickup_get_tasks

List tasks inside ONE List, with filters and sorting.

clickup_update_task

Update fields on an existing task.

clickup_delete_task

Permanently delete a task.

clickup_get_filtered_team_tasks

Search tasks across the ENTIRE Workspace with rich filters.

clickup_move_task

Move a task to a new home List.

clickup_merge_tasks

Merge one or more source tasks into a target task.

clickup_create_task_from_template

Create a task in a List from a saved task template.

clickup_get_task_templates

List the Workspace's saved task templates.

clickup_get_task_time_in_status

Report how long one task has spent in each status.

clickup_get_bulk_tasks_time_in_status

Report time-in-status for 2 to 100 tasks in one call.

Comments

clickup_create_task_comment

Add a comment to a task.

clickup_get_task_comments

List comments on a task, newest first.

clickup_create_list_comment

Add a comment to a List's info panel.

clickup_get_list_comments

List comments on a List's info panel, newest first.

clickup_create_chat_view_comment

Post a comment into a Chat view.

clickup_get_chat_view_comments

List comments in a Chat view, newest first.

clickup_update_comment

Edit a comment's text, (re)assign it, or toggle its resolved state.

clickup_delete_comment

Permanently delete a comment.

clickup_create_threaded_comment

Reply inside an existing comment's thread.

clickup_get_threaded_comments

List the replies in a comment's thread.

Checklists

clickup_create_checklist

Add a new (empty) checklist to a task.

clickup_edit_checklist

Rename a checklist and/or reposition it among a task's other checklists.

clickup_delete_checklist

Permanently remove a checklist (and all of its items) from its task.

clickup_create_checklist_item

Add a new line item to an existing checklist.

clickup_edit_checklist_item

Rename, (un)resolve, reassign, or nest/un-nest a checklist item.

clickup_delete_checklist_item

Remove a single line item from a checklist (the checklist itself stays).

Tags

clickup_get_space_tags

List every task Tag defined in a Space, with its foreground/background colors.

clickup_create_space_tag

Add a new task Tag (with optional colors) to a Space's tag palette.

clickup_edit_space_tag

Rename and/or recolor an existing Space tag.

clickup_delete_space_tag

Remove a tag from a Space's palette (and from every task carrying it).

clickup_add_tag_to_task

Apply an existing Space tag to a task.

clickup_remove_tag_from_task

Remove a tag from a task without deleting the tag from the Space.

Custom Fields

clickup_get_list_custom_fields

List the Custom Fields accessible from a List.

clickup_get_folder_custom_fields

List the Custom Fields available at a Folder scope.

clickup_get_space_custom_fields

List the Custom Fields available at a Space scope.

clickup_get_team_custom_fields

List the Workspace-scoped Custom Fields.

clickup_set_custom_field_value

Set a Custom Field's value on a task.

clickup_remove_custom_field_value

Clear a Custom Field's value on a task.

clickup_get_custom_task_types

List the Workspace's custom task types (a.k.a. custom items).

Time Tracking

clickup_get_time_entries

List time entries in a Workspace, optionally scoped by date range and location.

clickup_get_time_entry

Fetch one time entry by id.

clickup_get_time_entry_history

View the list of changes made to a time entry.

clickup_get_running_time_entry

Get the currently running time entry for a user, if any.

clickup_create_time_entry

Log a completed (already-finished) time entry.

clickup_update_time_entry

Edit an existing time entry's description, tags, times, task, or billable flag.

clickup_delete_time_entry

Permanently delete one or more time entries.

clickup_start_time_entry

Start a new, open-ended running timer for the authenticated user.

clickup_stop_time_entry

Stop the authenticated user's currently running timer.

clickup_get_time_entry_tags

List every tag ever applied to a time entry in this Workspace.

clickup_add_time_entry_tags

Apply one or more tags to one or more time entries.

clickup_remove_time_entry_tags

Remove one or more tags from one or more time entries.

clickup_rename_time_entry_tag

Rename a time-entry tag (and set its colors) across the whole Workspace.

clickup_replace_time_estimates_by_user

Overwrite a task's entire set of per-assignee time estimates.

clickup_update_time_estimates_by_user

Set or adjust specific assignees' time estimates on a task, leaving others unchanged.

Relationships

clickup_add_dependency

Create a blocking dependency between two tasks.

clickup_delete_dependency

Remove a blocking dependency edge between two tasks.

clickup_add_task_link

Link two tasks with a non-blocking "related to" association.

clickup_delete_task_link

Remove a "related to" link between two tasks.

Attachments

clickup_create_task_attachment

Upload a local file to a task as an attachment (v2).

clickup_get_entity_attachments

List the attachments of a task or File-type Custom Field (v3).

clickup_create_entity_attachment

Upload a local file to a task or File-type Custom Field (v3).

Goals

clickup_create_goal

Create a new Goal in a Workspace.

clickup_get_goals

List the Goals in a Workspace, including any Goal Folders.

clickup_get_goal

Get a single Goal's full detail, including its Key Results.

clickup_update_goal

Update an existing Goal's name, due date, description, owners, or color.

clickup_delete_goal

Permanently delete a Goal and all of its Key Results.

clickup_create_key_result

Add a Key Result (Target) to a Goal.

clickup_edit_key_result

Update a Key Result's progress, note, name, owners, or task/list links.

clickup_delete_key_result

Permanently delete a Key Result (Target) from its Goal.

Members & Groups

clickup_get_list_members

List the Workspace members with direct access to a List.

clickup_get_task_members

List the Workspace members with direct access to a Task.

clickup_create_user_group

Create a User Group (ClickUp's endpoint calls this a "Team") in a Workspace.

clickup_get_user_groups

List the User Groups in a Workspace (ClickUp's endpoint slug: "getteams1").

clickup_update_user_group

Rename a User Group and/or add/remove its members.

clickup_delete_user_group

Permanently delete a User Group from a Workspace.

clickup_get_custom_roles

List the Custom Roles configured for a Workspace.

clickup_get_shared_hierarchy

List the Tasks, Lists, and Folders individually shared with the caller.

Guests (Enterprise)

clickup_invite_guest_to_workspace

Invite an external guest to a Workspace by email.

clickup_edit_guest_on_workspace

Update an existing guest's permission flags or custom role on a Workspace.

clickup_get_guest

Look up a guest's permission flags and what has been shared with them.

clickup_remove_guest_from_workspace

Revoke a guest's access to an entire Workspace.

clickup_add_guest_to_task

Share a single task with an existing guest at a given permission level.

clickup_remove_guest_from_task

Revoke a guest's access to a single task.

clickup_add_guest_to_list

Share a List with an existing guest at a given permission level.

clickup_remove_guest_from_list

Revoke a guest's access to a List.

clickup_add_guest_to_folder

Share a Folder with an existing guest at a given permission level.

clickup_remove_guest_from_folder

Revoke a guest's access to a Folder.

Users (Enterprise)

clickup_invite_user_to_workspace

Invite a full member to a Workspace by email.

clickup_edit_user_on_workspace

Update a Workspace member's username, admin flag, or custom role.

clickup_get_user

Look up a single Workspace member's profile, role, and admin status.

clickup_remove_user_from_workspace

Deactivate a full member's access to a Workspace.

Webhooks

clickup_create_webhook

Register a webhook that pushes ClickUp events to your endpoint.

clickup_get_webhooks

List the webhooks registered in a Workspace, with their delivery health.

clickup_update_webhook

Change a webhook's endpoint, event subscription, or delivery status.

clickup_delete_webhook

Permanently delete a webhook, stopping all event delivery to its endpoint.

Workspace

clickup_get_workspace_plan

Report the current subscription plan of a Workspace.

clickup_get_workspace_seats

Report used, total, and available member and guest seats for a Workspace.

clickup_query_audit_logs

Query a Workspace's audit trail (Enterprise, Workspace owner only).

clickup_update_privacy_and_access

Set the privacy of an object and grant/revoke user or group access (Enterprise).

Chat Channels

clickup_get_chat_channels

List the Chat channels in a Workspace, with descriptor filters.

clickup_create_chat_channel

Create a Workspace-level Chat channel by name.

clickup_create_location_chat_channel

Create a Chat channel bound to a Space, Folder, or List.

clickup_create_direct_message

Create (or return) a direct-message Chat channel with up to 15 users.

clickup_get_chat_channel

Fetch a single Chat channel's metadata by id.

clickup_update_chat_channel

Update a Chat channel's name, description, topic, visibility, or location.

clickup_delete_chat_channel

Permanently delete a Chat channel (Channel, DM, or location-bound).

clickup_get_chat_channel_followers

List the users following a Chat channel.

clickup_get_chat_channel_members

List the users who are members of a Chat channel.

Chat Messages

clickup_get_chat_messages

List the messages in a Chat channel (newest first), cursor-paginated.

clickup_get_chat_message_replies

List the replies threaded under a Chat message, cursor-paginated.

clickup_get_chat_message_reactions

List the emoji reactions on a Chat message, cursor-paginated.

clickup_get_chat_message_tagged_users

List the users @-tagged (mentioned) in a Chat message, cursor-paginated.

clickup_get_chat_subtypes

List a Workspace's post subtype IDs (Announcement, Discussion, Idea, Update).

clickup_send_chat_message

Post a new message to a Chat channel.

clickup_send_chat_reply

Post a threaded reply under an existing Chat message.

clickup_update_chat_message

Edit a Chat message's content, assignee, or resolved state.

clickup_delete_chat_message

Permanently delete a Chat message (and its replies).

clickup_add_chat_reaction

Add an emoji reaction to a Chat message.

clickup_delete_chat_reaction

Remove an emoji reaction from a Chat message.

Health

clickup_health_check

Verify connectivity and authentication against the ClickUp API.

Prerequisites

  • Python 3.13+ (only needed for the clone/manual path — uvx and Docker bring their own runtime).

  • uv — used for both the zero-install uvx path and local development.

  • A ClickUp API token. A personal token (Settings → Apps → API Token, starts with pk_) or an OAuth2 access token. See Authentication.

  • (Optional) Your Workspace (team) id if you want tools to default team_id without passing it every call.

  • (Optional) Docker if you prefer the container path.

Quickstart

git clone https://github.com/trustxai/clickup-mcp.git
cd clickup-mcp
uv sync --group dev
cp .env.example .env          # then set CLICKUP_API_TOKEN (and optionally CLICKUP_TEAM_ID)
uv run amazing-clickup-mcp    # starts the stdio server

The server speaks MCP over stdio, so it is normally launched by an MCP client (see Client Configuration) rather than run by hand — but launching it directly is a quick way to confirm it imports and starts.

Run with uvx (zero install)

No clone, no virtualenv — uvx fetches and runs the published package in one step:

CLICKUP_API_TOKEN=pk_your_token_here uvx amazing-clickup-mcp

Use amazing-clickup-mcp, not clickup-mcp. The bare clickup-mcp name on PyPI is an unrelated squatter package and will not run this server.

Client Configuration

Every client launches the server as a subprocess and passes credentials through env. Replace pk_your_token_here with your token and, optionally, your_workspace_id with your Workspace (team) id.

Cursor

Add to ~/.cursor/mcp.json (global) or .cursor/mcp.json (per project):

{
  "mcpServers": {
    "clickup": {
      "command": "uvx",
      "args": ["amazing-clickup-mcp"],
      "env": {
        "CLICKUP_API_TOKEN": "pk_your_token_here",
        "CLICKUP_TEAM_ID": "your_workspace_id"
      }
    }
  }
}

Claude Desktop

Edit claude_desktop_config.json (Settings → Developer → Edit Config; on macOS it lives at ~/Library/Application Support/Claude/claude_desktop_config.json):

{
  "mcpServers": {
    "clickup": {
      "command": "uvx",
      "args": ["amazing-clickup-mcp"],
      "env": {
        "CLICKUP_API_TOKEN": "pk_your_token_here",
        "CLICKUP_TEAM_ID": "your_workspace_id"
      }
    }
  }
}

Restart Claude Desktop after saving.

Claude Code

Register the server with a single command:

claude mcp add clickup \
  --env CLICKUP_API_TOKEN=pk_your_token_here \
  --env CLICKUP_TEAM_ID=your_workspace_id \
  -- uvx amazing-clickup-mcp

Or add the equivalent block to ~/.claude.json under mcpServers (same shape as the Cursor example above).

MCP Inspector

Exercise the server interactively with the official inspector:

CLICKUP_API_TOKEN=pk_your_token_here \
  npx @modelcontextprotocol/inspector uvx amazing-clickup-mcp

If you cloned the repo, you can instead run uv run mcp dev src/clickup_mcp/server.py (the mcp dev CLI ships in the dev dependency group).

Docker

Build the image from the repo Dockerfile, then point any client at docker run:

docker build -t amazing-clickup-mcp .
{
  "mcpServers": {
    "clickup": {
      "command": "docker",
      "args": [
        "run", "--rm", "-i",
        "-e", "CLICKUP_API_TOKEN",
        "-e", "CLICKUP_TEAM_ID",
        "amazing-clickup-mcp"
      ],
      "env": {
        "CLICKUP_API_TOKEN": "pk_your_token_here",
        "CLICKUP_TEAM_ID": "your_workspace_id"
      }
    }
  }
}

The -i flag is required — the server communicates over stdin/stdout. The -e NAME entries forward the client-provided env values into the container.

Authentication

The server authenticates with a single ClickUp token, sent verbatim in the Authorization header on every request:

  • Personal API token — ClickUp → Settings → AppsAPI Token. Starts with pk_. Simplest option; scoped to your own account and permissions.

  • OAuth2 access token — for a multi-user integration. Supply the access token you obtained from the OAuth flow.

The token is read from CLICKUP_API_TOKEN (via .env or the client's env block). It is never logged. Missing or invalid credentials fail lazily at the first API call with a clear 401 message rather than at startup.

Environment Variables

Variable

Required

Default

Description

CLICKUP_API_TOKEN

yes

Personal API token (pk_…) or OAuth2 access token. Sent verbatim in the Authorization header.

CLICKUP_TEAM_ID

no

Default Workspace (team) id used when a call omits team_id.

CLICKUP_API_URL

no

https://api.clickup.com/api/v2

v2 API base URL. Override only for a proxy or testing.

CLICKUP_API_URL_V3

no

https://api.clickup.com/api/v3

v3 API base URL (Docs, Chat, entity attachments, ACL).

CLICKUP_REQUEST_TIMEOUT_SECONDS

no

30

Per-request HTTP timeout, in seconds.

All variables are optional at import time (the server starts without them); only CLICKUP_API_TOKEN is required to make a successful API call.

Running Manually

Once dependencies are installed (uv sync), any of these start the same stdio server:

uv run amazing-clickup-mcp     # console script (recommended)
uv run python -m clickup_mcp    # module entry point

With the package installed into the active environment, amazing-clickup-mcp and python -m clickup_mcp work without the uv run prefix.

Troubleshooting

  • 429 Too Many Requests / rate limiting. ClickUp caps requests at roughly 100 requests per minute per token. If you hit a 429, slow down and retry after a short pause; the error message surfaces ClickUp's rate-limit details. Prefer bulk/filtered tools (e.g. clickup_get_filtered_team_tasks, clickup_get_bulk_tasks_time_in_status) over many single-item calls.

  • 403 on Guests / Users / Audit logs / ACL. These endpoints are Enterprise-plan only and return 403 on other plans. Affected tools include the clickup_*_guest_* and clickup_*_user_* families, clickup_query_audit_logs, and clickup_update_privacy_and_access. There is no workaround short of an Enterprise plan.

  • 403 when adding/removing tasks across Lists. clickup_add_task_to_list and clickup_remove_task_from_list require the Tasks in Multiple Lists ClickApp to be enabled for the Workspace (Settings → ClickApps). Without it the API returns 403.

  • v3 cursor pagination. Chat, Docs search, and similar v3 list tools page with an opaque cursor, not offset. Read next_cursor from a response and pass it back as the cursor argument to fetch the next page; repeat until no cursor is returned.

  • uvx clickup-mcp runs the wrong thing. The bare clickup-mcp PyPI name is an unrelated package. This server is published as amazing-clickup-mcp — always uvx amazing-clickup-mcp.

  • 401 Unauthorized at first call. The token is missing, malformed, or lacks access. Confirm CLICKUP_API_TOKEN is set in the client's env (or .env) and that it is a valid personal (pk_…) or OAuth2 token. Run clickup_health_check to verify.

Contributing

Conventional Commits drive releases (release-please). Before pushing, run the full gate — it must exit 0:

uv run pytest -m "not live" && uv run ruff check src/ && uv run ruff format --check src/ && uv run mypy src/

License

Apache-2.0

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/trustxai/clickup-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server