amazing-clickup-mcp
Provides comprehensive tools for managing ClickUp workspaces, including spaces, folders, lists, tasks, comments, docs, time tracking, goals, and more.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@amazing-clickup-mcplist tasks in the Marketing Space"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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 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.
Related MCP server: ClickUp MCP
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 | |
| Create a new Space inside a Workspace. |
| List the Spaces in a Workspace. |
| Fetch full detail for a single Space, including its status workflow and ClickApp toggles. |
| Rename a Space, change its color/privacy, or replace its ClickApp/status configuration. |
| Permanently delete a Space and everything inside it. |
Folders | |
| Create a Folder inside a Space. |
| List the Folders in a Space. |
| Fetch one Folder, including its Lists and status workflow. |
| Rename a Folder and/or toggle its status-override setting. |
| Permanently delete a Folder and every List/Task inside it. |
| Create a new Folder by replaying a Folder template. |
| List the Folder templates available in a Workspace. |
Lists | |
| Create a new List inside a Folder. |
| Create a new List directly inside a Space, with no parent Folder. |
| List the Lists that belong to a Folder. |
| List the Lists that live directly inside a Space (no Folder). |
| Fetch full detail for a single List by id. |
| Update a List's name, description, dates, priority, assignee, or color. |
| Permanently delete a List from the Workspace. |
| Add an existing Task's membership to an additional List. |
| Remove a Task's membership from an additional (non-home) List. |
| Create a new List inside a Folder by instantiating a List template. |
| Create a new folderless List inside a Space by instantiating a template. |
| List available List templates for a Workspace. |
Views | |
| Create a task or page view at the Everything Level of a Workspace. |
| Create a task or page view scoped to a Space. |
| Create a task or page view scoped to a Folder. |
| Create a task or page view scoped to a List. |
| List the task and page views defined at the Everything Level of a Workspace. |
| List the task and page views available for a Space. |
| List the task and page views available for a Folder. |
| List the task and page views available for a List. |
| Get the full configuration of a single task or page view. |
| List the tasks currently visible in a view, honoring its filters and sorting. |
| Rename a view and/or replace its grouping/sorting/filters/columns/settings. |
| Permanently delete a task or page view. |
Docs | |
| Search the Docs in a Workspace, optionally filtered by parent location. |
| Create a Doc, optionally placed directly in its final location. |
| Fetch a single Doc's metadata (name, parent, timestamps). |
| List a Doc's page tree (titles and ids only, nested — no content). |
| Fetch a Doc's pages with content (the full readable body of the Doc). |
| Add a page to an existing Doc (optionally nested under another page). |
| Fetch one page of a Doc, including its content. |
| Update a Doc page's title, subtitle, and/or content. |
Tasks | |
| Create a task inside a List. |
| Fetch one task by id. |
| List tasks inside ONE List, with filters and sorting. |
| Update fields on an existing task. |
| Permanently delete a task. |
| Search tasks across the ENTIRE Workspace with rich filters. |
| Move a task to a new home List. |
| Merge one or more source tasks into a target task. |
| Create a task in a List from a saved task template. |
| List the Workspace's saved task templates. |
| Report how long one task has spent in each status. |
| Report time-in-status for 2 to 100 tasks in one call. |
Comments | |
| Add a comment to a task. |
| List comments on a task, newest first. |
| Add a comment to a List's info panel. |
| List comments on a List's info panel, newest first. |
| Post a comment into a Chat view. |
| List comments in a Chat view, newest first. |
| Edit a comment's text, (re)assign it, or toggle its resolved state. |
| Permanently delete a comment. |
| Reply inside an existing comment's thread. |
| List the replies in a comment's thread. |
Checklists | |
| Add a new (empty) checklist to a task. |
| Rename a checklist and/or reposition it among a task's other checklists. |
| Permanently remove a checklist (and all of its items) from its task. |
| Add a new line item to an existing checklist. |
| Rename, (un)resolve, reassign, or nest/un-nest a checklist item. |
| Remove a single line item from a checklist (the checklist itself stays). |
Tags | |
| List every task Tag defined in a Space, with its foreground/background colors. |
| Add a new task Tag (with optional colors) to a Space's tag palette. |
| Rename and/or recolor an existing Space tag. |
| Remove a tag from a Space's palette (and from every task carrying it). |
| Apply an existing Space tag to a task. |
| Remove a tag from a task without deleting the tag from the Space. |
Custom Fields | |
| List the Custom Fields accessible from a List. |
| List the Custom Fields available at a Folder scope. |
| List the Custom Fields available at a Space scope. |
| List the Workspace-scoped Custom Fields. |
| Set a Custom Field's value on a task. |
| Clear a Custom Field's value on a task. |
| List the Workspace's custom task types (a.k.a. custom items). |
Time Tracking | |
| List time entries in a Workspace, optionally scoped by date range and location. |
| Fetch one time entry by id. |
| View the list of changes made to a time entry. |
| Get the currently running time entry for a user, if any. |
| Log a completed (already-finished) time entry. |
| Edit an existing time entry's description, tags, times, task, or billable flag. |
| Permanently delete one or more time entries. |
| Start a new, open-ended running timer for the authenticated user. |
| Stop the authenticated user's currently running timer. |
| List every tag ever applied to a time entry in this Workspace. |
| Apply one or more tags to one or more time entries. |
| Remove one or more tags from one or more time entries. |
| Rename a time-entry tag (and set its colors) across the whole Workspace. |
| Overwrite a task's entire set of per-assignee time estimates. |
| Set or adjust specific assignees' time estimates on a task, leaving others unchanged. |
Relationships | |
| Create a blocking dependency between two tasks. |
| Remove a blocking dependency edge between two tasks. |
| Link two tasks with a non-blocking "related to" association. |
| Remove a "related to" link between two tasks. |
Attachments | |
| Upload a local file to a task as an attachment (v2). |
| List the attachments of a task or File-type Custom Field (v3). |
| Upload a local file to a task or File-type Custom Field (v3). |
Goals | |
| Create a new Goal in a Workspace. |
| List the Goals in a Workspace, including any Goal Folders. |
| Get a single Goal's full detail, including its Key Results. |
| Update an existing Goal's name, due date, description, owners, or color. |
| Permanently delete a Goal and all of its Key Results. |
| Add a Key Result (Target) to a Goal. |
| Update a Key Result's progress, note, name, owners, or task/list links. |
| Permanently delete a Key Result (Target) from its Goal. |
Members & Groups | |
| List the Workspace members with direct access to a List. |
| List the Workspace members with direct access to a Task. |
| Create a User Group (ClickUp's endpoint calls this a "Team") in a Workspace. |
| List the User Groups in a Workspace (ClickUp's endpoint slug: "getteams1"). |
| Rename a User Group and/or add/remove its members. |
| Permanently delete a User Group from a Workspace. |
| List the Custom Roles configured for a Workspace. |
| List the Tasks, Lists, and Folders individually shared with the caller. |
Guests (Enterprise) | |
| Invite an external guest to a Workspace by email. |
| Update an existing guest's permission flags or custom role on a Workspace. |
| Look up a guest's permission flags and what has been shared with them. |
| Revoke a guest's access to an entire Workspace. |
| Share a single task with an existing guest at a given permission level. |
| Revoke a guest's access to a single task. |
| Share a List with an existing guest at a given permission level. |
| Revoke a guest's access to a List. |
| Share a Folder with an existing guest at a given permission level. |
| Revoke a guest's access to a Folder. |
Users (Enterprise) | |
| Invite a full member to a Workspace by email. |
| Update a Workspace member's username, admin flag, or custom role. |
| Look up a single Workspace member's profile, role, and admin status. |
| Deactivate a full member's access to a Workspace. |
Webhooks | |
| Register a webhook that pushes ClickUp events to your endpoint. |
| List the webhooks registered in a Workspace, with their delivery health. |
| Change a webhook's endpoint, event subscription, or delivery status. |
| Permanently delete a webhook, stopping all event delivery to its endpoint. |
Workspace | |
| Report the current subscription plan of a Workspace. |
| Report used, total, and available member and guest seats for a Workspace. |
| Query a Workspace's audit trail (Enterprise, Workspace owner only). |
| Set the privacy of an object and grant/revoke user or group access (Enterprise). |
Chat Channels | |
| List the Chat channels in a Workspace, with descriptor filters. |
| Create a Workspace-level Chat channel by name. |
| Create a Chat channel bound to a Space, Folder, or List. |
| Create (or return) a direct-message Chat channel with up to 15 users. |
| Fetch a single Chat channel's metadata by id. |
| Update a Chat channel's name, description, topic, visibility, or location. |
| Permanently delete a Chat channel (Channel, DM, or location-bound). |
| List the users following a Chat channel. |
| List the users who are members of a Chat channel. |
Chat Messages | |
| List the messages in a Chat channel (newest first), cursor-paginated. |
| List the replies threaded under a Chat message, cursor-paginated. |
| List the emoji reactions on a Chat message, cursor-paginated. |
| List the users @-tagged (mentioned) in a Chat message, cursor-paginated. |
| List a Workspace's post subtype IDs (Announcement, Discussion, Idea, Update). |
| Post a new message to a Chat channel. |
| Post a threaded reply under an existing Chat message. |
| Edit a Chat message's content, assignee, or resolved state. |
| Permanently delete a Chat message (and its replies). |
| Add an emoji reaction to a Chat message. |
| Remove an emoji reaction from a Chat message. |
Health | |
| 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 serverThe 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-mcpUse
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-mcpOr 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-mcpIf 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 |
| yes | — | Personal API token ( |
| no | — | Default Workspace (team) id used when a call omits |
| no |
| v2 API base URL. Override only for a proxy or testing. |
| no |
| v3 API base URL (Docs, Chat, entity attachments, ACL). |
| no |
| 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 pointWith 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
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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