ClickUp MCP Server (first-party and official)
beta
Jordan Cleigh
Model Context Protocol (MCP) is basically a must-have feature for all SaaS now. ClickUp providing an official, first-party server would allow users to interact with ClickUp API directly through their agentic AI tool of choice (Claude, GitHub Copilot, Cursor, etc.)
Most of ClickUp's competitors already offer their own first-party, official MCP server. ClickUp is falling behind in this space, unless it is just not announced yet.
Several people have created unofficial ClickUp MCP servers, but they are never going to be as good as what a first-party server could provide.
Note: This is not related to MCP support in ClickUp AI (https://feedback.clickup.com/feature-requests/p/support-mcp-model-context-protocol-in-clickup-ai), which is requesting support for other provider's servers in ClickUp.
Log In
Ivan Villa
Hey everyone! 👋
Thanks again for all the feedback so far. We want to check in on everyone’s experience with the ClickUp MCP beta, so we put together a quick survey with just a few questions. If you could take a moment to fill it out, it would really help shape our upcoming roadmap.
R
Ryan McAlister
I'm having trouble getting this set up with the latest VS Code MCP extension. I get the same message as noted here:
This is the output from vscode:
```
2025-12-11 10:49:51.503 [trace] Fetched https://mcp.clickup.com/mcp: {"status":401,"headers":{"access-control-allow-origin":"","cache-control":"no-store","connection":"keep-alive","content-length":"152","content-type":"application/json; charset=utf-8","date":"Thu, 11 Dec 2025 17:49:52 GMT","etag":"W/"98-0qBJ+z/j9SRUDzZ4P2b/WYdHKjc"","pragma":"no-cache","ratelimit-limit":"100","ratelimit-policy":"100;w=900","ratelimit-remaining":"99","ratelimit-reset":"900","www-authenticate":"Bearer realm="MCP Server", error="invalid_token", error_description="Bearer token required", resource_metadata="https://mcp.clickup.com/.well-known/oauth-protected-resource\"","x-correlation-id":"9a960108-08b9-4ab4-a0af-cbc9bc499f77","x-powered-by":"Express"}}
2025-12-11 10:49:51.503 [debug] Found resource_metadata challenge in WWW-Authenticate header: https://mcp.clickup.com/.well-known/oauth-protected-resource
2025-12-11 10:49:51.504 [trace] Fetching https://mcp.clickup.com/.well-known/oauth-protected-resource with options: {"method":"GET","headers":{"Accept":"application/json","MCP-Protocol-Version":"2025-06-18"}}
2025-12-11 10:49:51.641 [trace] Fetched https://mcp.clickup.com/.well-known/oauth-protected-resource: {"status":200,"headers":{"access-control-allow-origin":"","connection":"keep-alive","content-length":"471","content-type":"application/json; charset=utf-8","date":"Thu, 11 Dec 2025 17:49:52 GMT","etag":"W/"1d7-QUOf49NsGn+sf6UOBkHaMc6QFlI"","ratelimit-limit":"200","ratelimit-policy":"200;w=900","ratelimit-remaining":"196","ratelimit-reset":"19","x-powered-by":"Express"}}
2025-12-11 10:49:51.641 [debug] Could not fetch resource metadata: Error: Protected Resource Metadata resource property value "https://mcp.clickup.com/" (length: 24) does not match target server url "https://mcp.clickup.com/mcp" (length: 27). These MUST match to follow OAuth spec https://datatracker.ietf.org/doc/html/rfc9728#PRConfigurationValidation
2025-12-11 10:49:51.641 [debug] Fetching auth server metadata for: https://mcp.clickup.com
Ivan Villa
Hey everyone!
Thanks again for trying out the ClickUp MCP beta — your feedback so far has been incredibly helpful in shaping our next steps.
We’re putting together a few real user stories to highlight how teams are using (or planning to use) MCP, and we’d love to include yours. It would be great if you could share:
- What you’re using MCP for (or what you intend to build with it)
- The core problem it helps you solve
- Anything surprising or especially valuable you’ve found so far
Feel free to reply directly in this thread — your experience might inspire others or spark new ideas across the group.
Thanks a lot for helping make ClickUp MCP better!
Jordan Cleigh
Ivan Villa Our primary use case is integrating ClickUp to our agentic SDLC. We use GitHub Copilot or Claude Code to create tasks in a planning phase and then fetch tasks in the code implementation and testing phases. We even have checks across phases to ensure that the acceptance criteria and testing requirements specified in the task has been fully met.
Oleksii Segodin
Ivan Villa, I'm creating a task in Clickup which will be understandable to a LLM. Then I ask LLM in Cursor to get details of the task (by task id.) and work on it. When the task is done and I'm satisfied with the result I have a predefined command in Cursor which tells LLM to write a comment to the task with summairy of the job done and the link to pull request in Guthub, and set the task status to Review.
Here I solve 2 problems:
- automation (less friction when switching between management tool and the actual working environment)
- more systematization: I train myself to write proper task descriptions, understandable for anybody without any context and these tasks are used as actual tasks for LLMs as well.
The only thing I lack in this scheme is to make LLMs to start working on a task automatically (via webhook) when the task's status changes from Open to In Progress :) I even started developing my opwn server with LLMs which accepts the webhooks from ClickUp and launches the development process, but it's not finished yet, because it's a lower priority.
Seif Sgayer
Hello!
For me, it works great for small task lists. However, if I tell it, get me all tasks within project x, and tasks with status to do. or in progress. It would only get me a limited number. Like 3 out of 10. Or says that it can't see that status at all.
I believe its not filtering and paginating correctly.?
Would be great if this functions so we can implement it for daily use for our case.
Thank you.
O
Otnimus Prime
Has anyone got it working in vscode? I tried it few times on different vscode installations but couldn't get it working. Initial connection was successful and it discovered 33 tools. However when I start using it, I got error saying:
Error reading from async stream, we will reconnect: TypeError: terminated
I tried it on Cursor and it works straightaway ... but I use vscode more often than Cursor. I hope this can be fixed soon. Thank you.
B
Boban Djokic
Hi everyone!
The
clickup_get_workspace_tasks
tool is missing the custom_items
parameter that's available in the GET tasks API endpoint (https://developer.clickup.com/reference/gettasks).This parameter is essential for filtering tasks by custom task types (Milestones, custom types like "Release", etc.). Currently, users must retrieve all tasks and filter client-side, which is inefficient.
Please add custom_items as an optional array parameter to enable filtering by task type directly in the MCP query.
Example usage:
{
"custom_items": [0, 1300],
"due_date_gt": "2025-11-01",
"due_date_lt": "2025-11-25"
}
Leo Cheron
Clickup MCP is massive, we should be able to enable only the tools we need to lower token footprint.
Elias
Via Claude Code it does not understand existing task links in task descriptions -> makes integrating texts with each other hard.
Chen (Jamie Chennells)
I'm using the clickup MCP server (native one) but my client is saying it can only read not write. Is this the case for everyone? Docs online say it should be able to write 🫠
- Windsurf (client)
- Auth succesful
- Reading well, can't write
R
Ryan Marchant
Has anyone used the MCP server with Microsoft's CoPilot Studio? Can someone point me to any documentation? Is Clickup working with Microsoft to improve the integration between the ClickUp MCP server and CoPilot Studio?
R
Riccardo Caiani
Hi all,
i'm trying to add the mcp to our vs code but it keeps to throw connection errors.
When trying to get the workspace hierarchy: {"error":"Error getting workspace hierarchy: Network error. Please check your connection and try again."}
When trying to create a task: {"content":[{"type":"text","text":"{\"error\":\"Authorization failed. Please check your OAuth token.\",\"name\":\"test mcs\",\"list_id\":\"{{ListID}}\",\"workspace_id\":\"{{WorkspaceID}}\"}"}],"isError":true}
Same for the retrieve of the task: {"content":[{"type":"text","text":"{\"error\":\"Authorization failed. Please check your OAuth token.\",\"task_id\":\"{{TaskID}}\",\"workspace_id\":\"{{WorkspaceID}}\"}"}],"isError":true}
Can you help me understand if i'm missing something?
Thx
Load More
→