ClickUp MCP Server (first-party and official)
completed
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.
Abo Gasser
hi
Dace Hunter
clickup_update_task silently drops the REST API's points field (Sprint Points). Updating "points" returns "At least one field to update must be provided". clickup_create_task has no points parameter, clickup_get_task returns no points field, and clickup_get_operators reports no enabled operators.
Pete Jackson
clickup_get_task omits synced-block content from markdown_description (text and images), with no way to resolve it
We just started using synced content (a great feature!), but the MCP server, and seemingly the REST API, can't read it.
Problem
When a task description contains a synced block, text_content returns only a [sync-block:<uuid>] marker, and markdown_description drops the block entirely, text and images included. This happens in the task that created the block and in every task that shows it. Nothing in the response gives the block's content or source, and no tool fetches a block by ID. Exports, reports and AI summaries built from MCP output are silently incomplete.
Steps to reproduce
- In task A, add a heading with a synced block under it containing text and a pasted image.
- Show that block in task B's description, below a link to task A.
- Call clickup_get_task(task_id: "<A>", include: ["description", "attachments"]), then the same for B.
Observed
- text_content has [sync-block:<uuid>] at the block's position; the same UUID appears in A and B.
- markdown_description skips straight past the block. In A, the heading is followed directly by the next one (e.g. "# Goals\n\n# Implementation Plan"). In B, the link to A is exported but the synced content below it isn't.
- Images in the block appear in neither task's markdown. They're only in the uploading task's attachments, with nothing tying them to the block or its position.
- No include option, field or tool returns synced-block content or resolves a UUID to its source.
Expected (any one would do)
- markdown_description renders synced content inline, as the UI does, with images as
links like other inline images.
- The response includes a synced_blocks array: UUID, source task/doc, and the content as markdown.
- A tool resolves a sync-block UUID to rendered markdown.
Impact
The markdown has no gap marker, so consumers can't tell content is missing. The only way to notice is to cross-check text_content for [sync-block: markers against the UI.
Note
The response shape (markdown_description, text_content, epoch-ms dates, dropdown values as orderindex) looks like REST v2 GET /v2/task/{task_id}?include_markdown_description=true. The Get Task reference doesn't mention synced blocks, so the gap may be in the underlying API as well as the MCP server.
Pete Jackson
I tested the API GET /v2/task/{task_id} endpoint and can confirm that this is an API limitation (assuming MCP just wraps the API). So the root cause is the API
J
Joe Warner
Having a few issues:
- tags schema is an array of strings, the API wants an array of objects
clickup_add_time_entry declares its tags parameter as:
"tags": { "type": "array", "items": { "type": "string" },
"description": "Array of tag names to assign to the time entry." }
So the tool ships tags: ["dev"].
The v2 endpoint behind it, POST /api/v2/team/{team_id}/time_entries, documents tags as an array of objects, and every tagged entry your own API returns carries the object form:
"tags": [ { "name": "dev", "tag_bg": null, "tag_fg": null, "creator": 30013528 } ]
ClickUp looks for a name key on each element, gets a bare string, and answers:
Failed to add time entry: Name value is required
Result: tags cannot be written through the MCP server at all. I tried a plain string array and an object-shaped string, and both fail the same way. The schema itself blocks passing a real object, so there's no client side workaround.
Fix: declare tags as an array of objects with a required name, or keep accepting strings and map each one to { "name": value } before calling the API.
- A failed tag call still creates the time entry
Worse than the tag failure. When the tag step fails, the call returns an error, but the time entry is created anyway without its tag. An error that looks like nothing happened is an error people retry.
I retried, and ended up with three identical one hour entries on one task and two identical entries on another. And there is no delete_time_entry or update_time_entry tool exposed, so nothing can clean it up programmatically. It had to be fixed by hand in the UI.
Fix: apply the tags in the same transaction as the entry, or roll the entry back when tagging fails. Either way the response should tell the truth about whether the entry landed.
- Two missing tools
POST /api/v2/team/{team_id}/time_entries/tags tags existing entries. Nothing in the MCP server exposes it, so entries written untagged can never be fixed programmatically.
No delete or update for time entries, which is what turned defect 2 into manual cleanup.
Environment
Official ClickUp MCP server at mcp.clickup.com/mcp, public beta, reached through Anthropic's connector directory. Observed 2026-09-12.
S
Summer Thomas
I’m trying to connect the built-in ClickUp integration in ChatGPT, but the connection keeps failing.
When I click to connect ClickUp, the authorization window opens and immediately shows this error:
invalid_client - Invalid client_id
It happens before I get the chance to choose or authorize a ClickUp workspace.
I first thought it might be an issue with my ClickUp account, so I tested the ClickUp API separately using a custom GPT Action. That works fine — it can authenticate, see my workspace, and retrieve spaces. So my ClickUp account and API access seem to be working normally.
Because of that, it looks like the issue is specifically with the built-in ChatGPT/ClickUp connection and its OAuth setup.
I also tried reconnecting, but I keep getting the same Invalid client_id error.
Can you check whether the OAuth client ID being used for the ChatGPT integration is still valid or configured correctly?
Arkady Sokolov
Summer Thomas: This should be fixed now! Please let me know if you're still running into trouble.
I
Ivan Kirilov Pophristov
We are experiencing the same issue with ChatGPT + ClickUp in a real production-planning workspace.
Our ClickUp tasks contain critical Custom Fields used for manufacturing planning — production CW, export CW, order/MTK identifiers, quantities and other structured production data.
ChatGPT can identify the task, Task ID, status and location in the workspace, and even reports the number of Custom Fields, but it cannot retrieve the actual Custom Field schema and values.
This prevents the AI from reliably analyzing production capacity and forces us to combine ClickUp task IDs with an external Master File as a workaround.
This is not a cosmetic limitation for us — the missing Custom Fields prevent a real manufacturing planning system from operating correctly through the ChatGPT connector.
Please expose the complete Custom Field schema and values to ChatGPT/Codex with parity across supported MCP clients.
Arkady Sokolov
Ivan Kirilov Pophristov: Thank you for the feedback! We're working on fixing this now
N
Nicholas Swope
An error appears to be a null-handling bug. The "Available workspaces:" list comes back empty, and the example prints undefined, suggesting the server fails to enumerate workspaces, gets an empty list, and misreports "none found" as "multiple found."
workspace_id is not exposed in the tool schemas, so even if I wanted to supply it, I can't. The parameter the error demands doesn't exist on clickup_get_workspace_hierarchy, clickup_create_task, etc
Arkady Sokolov
Thanks for the detailed report! This looks like a bug on our end. Could you file it through our support portal at https://clickup.com/support so the engineering team can investigate with full context? That gets it into the right queue for a fix. Appreciate you flagging this.
Ryan O'Leary
These artificial rate limits are the dumbest thing I've seen.
Arkady Sokolov
Ryan O'Leary: You'll now see much higher limits that you're unlikely to bump into, and we'll continue refining these based on feedback. Please let me know if you're still having trouble.
Ebbony
I am trying to connect Meta’s official Ads MCP server to ClickUp using this URL: https://mcp.facebook.com/ads
In ClickUp, I navigate to App Center → MCP Servers → Add Custom MCP Server, enter the Meta Ads MCP server URL, and attempt to authorise the connection. However, the connection fails and ClickUp displays an error, so the Meta Ads tools never become available in ClickUp Brain or Super Agents.
Meta has released this connector to provide authorised AI tools for Meta Ads reporting, campaign creation, ad set and ad editing, product catalogue management, and account diagnostics. ClickUp currently supports external MCP servers, but the Meta Ads server does not complete the connection or authorization process.
Expected result: ClickUp should open Meta’s authorisation flow, allow me to select and approve the relevant Meta Business and advertising accounts, then return to ClickUp with the Meta Ads tools connected.
Actual result: The connection fails with an error before setup can be completed. Retrying the connection produces the same result.
This issue prevents our marketing agency from connecting client Meta Ads accounts to ClickUp for campaign reporting, diagnostics, and approved advertising actions. Please investigate whether ClickUp’s MCP connection, OAuth callback, requested scopes, or compatibility with Meta’s MCP server requires an update.
Also connecting to Social Media Page results would be helpful as well - like how many new followers etc
Arkady Sokolov
Hey, this is likely an issue on Meta's side rather than ClickUp's. I'd recommend reviewing Meta's setup guide at https://developers.facebook.com/documentation/ads-commerce/ads-ai-connectors/ads-mcp-server/ads-mcp-server-get-started and confirming you've completed all the steps, including creating a developer app. If you're still stuck after that, feel free to follow up here.
Brian Schaff
We tag Docs in our workspace (e.g. "llm sync") and need to programmatically retrieve all Docs with a specific tag after a given date. The tags exist in the UI and can be applied to Docs, but the MCP has no way to query or filter Docs by tag or updated date.
Use case: We use Claude via MCP to sync meeting notes tagged "llm sync" into an external system. Right now there's no way to say "get me all docs tagged X updated after Y" without manually finding them in the UI.
Ideal solution: A search/filter tool in the MCP that supports Doc tags and date ranges, similar to how tasks can be queried by tag and due date today.
Arkady Sokolov
Thanks for reporting this. Could you file a bug report at https://clickup.com/support so our team can look into it? That helps us track and prioritize a fix. Appreciate the clear use case.
Load More
→