clickup-task-mcp
v1.0.1
Published
Model Context Protocol (MCP) server for ClickUp — manage tasks, track time, and post daily updates from Claude Code, Cursor, or any MCP-compatible AI tool.
Maintainers
Readme
ClickUp MCP Server
A Model Context Protocol (MCP) server for ClickUp. Manage tasks, track time, change status, and post daily standup updates to ClickUp Chat — all from Claude Code, Cursor, Claude Desktop, or any MCP-compatible AI tool.
Tell your AI: "Create Test task in AI Role Play, log 2 hours, mark delivered, and post my daily update to the channel" → done in seconds, no context-switching.
Features
- Log tasks — auto-assigns to you, finds the right space/list (including lists inside Sprint folders)
- Track real time — log actual hours spent (not just estimates) as a real time entry
- Update status — Open → In Progress → Delivered with one line
- Discover — list spaces, folders, lists, and chat channels in your workspace
- Daily standup updates — formatted message to any ClickUp Chat channel:
- Done Today (with task links + time spent)
- Planned for Tomorrow
- AI Usage
- Challenges / Blockers
Setup
1. Get Your ClickUp API Key
- ClickUp → Settings → Apps
- Click Generate under API Token
- Copy the
pk_...key — you'll need it below
2. Install the Server
Recommended — install globally (works from anywhere on your system):
npm install -g clickup-task-mcpAfter install, the clickup-task-mcp command is available system-wide. Verify:
which clickup-task-mcp # should print a path
clickup-task-mcp --help # (or just runs the server on stdio)To upgrade later:
npm update -g clickup-task-mcpAlternative — build from source (for contributors):
git clone [email protected]:arslan8122/clickup-mcp.git
cd clickup-mcp
npm install
npm run buildNo .env file needed for normal use. You'll pass your API key directly to your AI client below.
3. Connect to Your AI Client
Pick the section that matches your tool. The API key is passed as an environment variable by the client when it launches the server.
Claude Code
After global install:
claude mcp add clickup -s user -e CLICKUP_API_KEY=pk_your_key_here -- clickup-task-mcpIf built from source:
claude mcp add clickup -s user -e CLICKUP_API_KEY=pk_your_key_here -- node /absolute/path/to/clickup-mcp/dist/index.jsRestart Claude Code, then run /mcp to confirm it's connected.
Claude Desktop
Edit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%/Claude/claude_desktop_config.json (Windows):
{
"mcpServers": {
"clickup": {
"command": "clickup-task-mcp",
"env": {
"CLICKUP_API_KEY": "pk_your_key_here"
}
}
}
}Or if built from source, use:
{
"mcpServers": {
"clickup": {
"command": "node",
"args": ["/absolute/path/to/clickup-mcp/dist/index.js"],
"env": {
"CLICKUP_API_KEY": "pk_your_key_here"
}
}
}
}Restart Claude Desktop.
Cursor / Other MCP Clients
Same JSON shape as Claude Desktop, in the client's MCP config file. After a global install, the command is just clickup-task-mcp with no args needed.
Environment Variables
| Variable | Required | Description |
|---|---|---|
| CLICKUP_API_KEY | ✅ | Your ClickUp personal API token (starts with pk_) |
| CLICKUP_TEAM_ID | ❌ | Workspace/team ID. Auto-detected from your API key. |
| CLICKUP_USER_ID | ❌ | Your user ID. Auto-detected from your API key. |
Override CLICKUP_TEAM_ID / CLICKUP_USER_ID only if you belong to multiple workspaces and the auto-detected one is wrong.
Using .env (development only)
If you're developing or testing the server directly (e.g. npm run start from the cloned repo), you can put your key in a .env file instead:
cp .env.example .env
# Edit .env, add CLICKUP_API_KEY=pk_...
npm run startThis is a dev convenience — end users using Claude Code / Cursor / etc. should not need a .env file. The API key flows through the client's MCP config.
Available Tools
Task Management
log_task— Create a task in a space/list, auto-assign to youupdate_task_status— Change a task's statusget_task_update— Get a formatted task summaryfind_task— Search task by name (basic)track_time— Log actual time spent on a task (e.g."2h","30m","1h 30m")
Discovery
list_spaces— List all spaces in your workspacelist_folders— List folders in a spacelist_lists— List all lists in a space (including those inside folders/sprint folders)list_chat_channels— List all accessible ClickUp Chat channels
ClickUp Chat
send_chat_message— Post a free-form markdown message to any channelsend_task_update_to_chat— Post a single task's status line to a channelsend_daily_update_to_chat— Post a structured 4-section daily standup (Done Today / Planned Tomorrow / AI Usage / Blockers)
Example: Full Daily Workflow
In one prompt to your AI:
Create "Fix login bug" in AI Role Play Assistant, log 2h on it,
mark it delivered, then post my daily update to AI Role Play
Assistant - Mike's Project channel.The MCP will run: log_task → track_time → update_task_status → send_daily_update_to_chat.
Roadmap / Limitations
- No inline task pills in chat: ClickUp's public v3 Chat API only supports markdown — true rich task pills (with status badges) require their internal API. The
send_daily_update_to_chattool bakes the status into the link text as[Task [DELIVERED]](url)as a workaround. find_taskis basic — full search across the workspace via the v2 search API is on the roadmap.
Contributing
PRs welcome! See CONTRIBUTING.md for development setup, branching conventions, and how to add a new MCP tool.
Quick:
git clone [email protected]:arslan8122/clickup-mcp.git
cd clickup-mcp && npm install && npm run buildOpen issues or feature requests at https://github.com/arslan8122/clickup-mcp/issues.
License
MIT © Arslan Asghar
