Amazing Clickup
БесплатноНе проверенA comprehensive MCP server for the ClickUp API exposing 166 tools to manage Spaces, Folders, Lists, Tasks, Docs, and more, enabling LLMs to read and drive a Cli
Описание
A comprehensive MCP server for the ClickUp API exposing 166 tools to manage Spaces, Folders, Lists, Tasks, Docs, and more, enabling LLMs to read and drive a ClickUp Workspace.
README
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 bareclickup-mcpname is taken on PyPI by an unrelated package). Always runuvx amazing-clickup-mcp— neveruvx 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_statusespayloads. - 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/ECODEdetails 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 —
uvxand Docker bring their own runtime). - uv — used for both the zero-install
uvxpath 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_idwithout 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, notclickup-mcp. The bareclickup-mcpname 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 → Apps → API 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 a429, 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.403on Guests / Users / Audit logs / ACL. These endpoints are Enterprise-plan only and return403on other plans. Affected tools include theclickup_*_guest_*andclickup_*_user_*families,clickup_query_audit_logs, andclickup_update_privacy_and_access. There is no workaround short of an Enterprise plan.403when adding/removing tasks across Lists.clickup_add_task_to_listandclickup_remove_task_from_listrequire the Tasks in Multiple Lists ClickApp to be enabled for the Workspace (Settings → ClickApps). Without it the API returns403.- v3 cursor pagination. Chat, Docs search, and similar v3 list tools page with an
opaque cursor, not
offset. Readnext_cursorfrom a response and pass it back as thecursorargument to fetch the next page; repeat until no cursor is returned. uvx clickup-mcpruns the wrong thing. The bareclickup-mcpPyPI name is an unrelated package. This server is published asamazing-clickup-mcp— alwaysuvx amazing-clickup-mcp.401 Unauthorizedat first call. The token is missing, malformed, or lacks access. ConfirmCLICKUP_API_TOKENis set in the client'senv(or.env) and that it is a valid personal (pk_…) or OAuth2 token. Runclickup_health_checkto 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
Установка Amazing Clickup
У этого сервера нет опубликованного пакета — он собирается из исходников. Открой репозиторий и следуй инструкции в README.
▸ github.com/trustxai/clickup-mcpFAQ
Amazing Clickup MCP бесплатный?
Да, Amazing Clickup MCP бесплатный — установка в пару кликов через Unyly без оплаты.
Нужен ли API-ключ для Amazing Clickup?
Нет, Amazing Clickup работает без API-ключей и переменных окружения.
Amazing Clickup — hosted или self-hosted?
Доступен hosted-вариант: Unyly запускает сервер в облаке, локальная установка не обязательна.
Как установить Amazing Clickup в Claude Desktop, Claude Code или Cursor?
Открой Amazing Clickup на unyly.org, выбери вкладку своего клиента (Claude Desktop, Claude Code, Cursor) и нажми Install — конфиг сгенерируется автоматически, без правки JSON.
Похожие MCP
Notion
Read and write pages in your workspace
автор: NotionLinear
Issues, cycles, triage — from Claude
автор: LinearGoogle Drive
Search and read your Drive files
автор: Googlemindsdb/mindsdb
Connect and unify data across various platforms and databases with [MindsDB as a single MCP server](https://docs.mindsdb.com/mcp/overview).
автор: mindsdbCompare Amazing Clickup with
Не уверен что выбрать?
Найди свой стек за 60 секунд
Автор?
Embed-бейдж для README
Похожее
Все в категории productivity
