clickup-mcp
Manage ClickUp tasks, docs, time tracking, comments, chat, and search via official MCP. OAuth authentication required.
Best use case
clickup-mcp is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
Manage ClickUp tasks, docs, time tracking, comments, chat, and search via official MCP. OAuth authentication required.
Teams using clickup-mcp should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/clickup-mcp/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How clickup-mcp Compares
| Feature / Agent | clickup-mcp | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
Manage ClickUp tasks, docs, time tracking, comments, chat, and search via official MCP. OAuth authentication required.
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
# ClickUp MCP (Official)
Access ClickUp via the official MCP server. Full workspace search, task management, time tracking, comments, chat, and docs.
## Setup
### Option 1: Direct OAuth (Supported Clients Only)
ClickUp MCP only allows OAuth from **allowlisted clients**:
- Claude Desktop, Claude Code, Cursor, VS Code, Windsurf, ChatGPT
```bash
# Claude Code
claude mcp add clickup --transport http https://mcp.clickup.com/mcp
# Then /mcp in session to authorize
```
### Option 2: Claude Code → mcporter (Recommended)
Use Claude Code to OAuth, then extract token for mcporter:
**Step 1: Authorize via Claude Code**
```bash
claude mcp add clickup --transport http https://mcp.clickup.com/mcp
claude
# In Claude Code, run: /mcp
# Complete OAuth in browser
```
**Step 2: Extract token**
```bash
jq -r '.mcpOAuth | to_entries | .[] | select(.key | startswith("clickup")) | .value.accessToken' ~/.claude/.credentials.json
```
**Step 3: Add to environment**
```bash
# Add to ~/.clawdbot/.env
CLICKUP_TOKEN=eyJhbGciOiJkaXIi...
```
**Step 4: Configure mcporter**
Add to `config/mcporter.json`:
```json
{
"mcpServers": {
"clickup": {
"baseUrl": "https://mcp.clickup.com/mcp",
"description": "Official ClickUp MCP",
"headers": {
"Authorization": "Bearer ${CLICKUP_TOKEN}"
}
}
}
}
```
**Step 5: Test**
```bash
mcporter list clickup
mcporter call 'clickup.clickup_search(keywords: "test", count: 3)'
```
### Token Refresh
Tokens are long-lived (~10 years). If expired:
1. Re-run `/mcp` in Claude Code
2. Re-extract token from `~/.claude/.credentials.json`
3. Update `CLICKUP_TOKEN` in `.env`
## Available Tools (32)
### Search
| Tool | Description |
|------|-------------|
| `clickup_search` | Universal search across tasks, docs, dashboards, chat, files |
### Tasks
| Tool | Description |
|------|-------------|
| `clickup_create_task` | Create task with name, description, status, assignees, due date, priority |
| `clickup_get_task` | Get task details (with optional subtasks) |
| `clickup_update_task` | Update any task field |
| `clickup_attach_task_file` | Attach file to task (URL or base64) |
| `clickup_add_tag_to_task` | Add tag to task |
| `clickup_remove_tag_from_task` | Remove tag from task |
### Comments
| Tool | Description |
|------|-------------|
| `clickup_get_task_comments` | Get all comments on task |
| `clickup_create_task_comment` | Add comment (supports @mentions) |
### Time Tracking
| Tool | Description |
|------|-------------|
| `clickup_start_time_tracking` | Start timer on task |
| `clickup_stop_time_tracking` | Stop active timer |
| `clickup_add_time_entry` | Log time manually |
| `clickup_get_task_time_entries` | Get time entries for task |
| `clickup_get_current_time_entry` | Check active timer |
### Workspace & Hierarchy
| Tool | Description |
|------|-------------|
| `clickup_get_workspace_hierarchy` | Get full structure (Spaces, Folders, Lists) |
| `clickup_create_list` | Create list in Space |
| `clickup_create_list_in_folder` | Create list in Folder |
| `clickup_get_list` | Get list details |
| `clickup_update_list` | Update list settings |
| `clickup_create_folder` | Create folder in Space |
| `clickup_get_folder` | Get folder details |
| `clickup_update_folder` | Update folder settings |
### Members
| Tool | Description |
|------|-------------|
| `clickup_get_workspace_members` | List all workspace members |
| `clickup_find_member_by_name` | Find member by name/email |
| `clickup_resolve_assignees` | Get user IDs from names |
### Chat
| Tool | Description |
|------|-------------|
| `clickup_get_chat_channels` | List all Chat channels |
| `clickup_send_chat_message` | Send message to channel |
### Docs
| Tool | Description |
|------|-------------|
| `clickup_create_document` | Create new Doc |
| `clickup_list_document_pages` | Get Doc structure |
| `clickup_get_document_pages` | Get page content |
| `clickup_create_document_page` | Add page to Doc |
| `clickup_update_document_page` | Edit page content |
## Usage Examples
### Search Workspace
```bash
mcporter call 'clickup.clickup_search(
keywords: "Q4 marketing",
count: 10
)'
```
### Create Task
```bash
mcporter call 'clickup.clickup_create_task(
name: "Review PR #42",
list_id: "901506994423",
description: "Check the new feature",
status: "to do"
)'
```
### Update Task
```bash
mcporter call 'clickup.clickup_update_task(
task_id: "abc123",
status: "in progress"
)'
```
### Add Comment
```bash
mcporter call 'clickup.clickup_create_task_comment(
task_id: "abc123",
comment_text: "@Mark can you review this?"
)'
```
### Time Tracking
```bash
# Start timer
mcporter call 'clickup.clickup_start_time_tracking(
task_id: "abc123",
description: "Working on feature"
)'
# Stop timer
mcporter call 'clickup.clickup_stop_time_tracking()'
# Log time manually (duration in ms, e.g., 2h = 7200000)
mcporter call 'clickup.clickup_add_time_entry(
task_id: "abc123",
start: "2026-01-06 10:00",
duration: "2h",
description: "Code review"
)'
```
### Get Workspace Structure
```bash
mcporter call 'clickup.clickup_get_workspace_hierarchy(limit: 10)'
```
### Chat
```bash
# List channels
mcporter call 'clickup.clickup_get_chat_channels()'
# Send message
mcporter call 'clickup.clickup_send_chat_message(
channel_id: "channel-123",
content: "Team standup in 5 minutes!"
)'
```
## Limitations
- **No delete operations** — Safety measure; use ClickUp UI
- **No custom fields** — Not exposed in official MCP
- **No views management** — Not available
- **OAuth required** — Must use allowlisted client (Claude Code workaround available)
- **Rate limits** — Same as ClickUp API (~100 req/min)
## Resources
- [ClickUp MCP Documentation](https://developer.clickup.com/docs/connect-an-ai-assistant-to-clickups-mcp-server)
- [Supported Tools](https://developer.clickup.com/docs/mcp-tools)
- [ClickUp API Reference](https://clickup.com/api)
- [Feedback / Allowlist Request](https://feedback.clickup.com)Related Skills
clickup
Interact with ClickUp project management platform via REST API. Use when working with tasks, spaces, lists, assignees, or any ClickUp workflow automation. Handles pagination, subtasks, and common query patterns. Use for task management, reporting, automation, or any ClickUp-related queries.
portfolio-watcher
Monitor stock/crypto holdings, get price alerts, track portfolio performance
portainer
Control Docker containers and stacks via Portainer API. List containers, start/stop/restart, view logs, and redeploy stacks from git.
portable-tools
Build cross-device tools without hardcoding paths or account names
polymarket
Trade prediction markets on Polymarket. Analyze odds, place bets, track positions, automate alerts, and maximize returns from event outcomes. Covers sports, politics, entertainment, and more.
polymarket-traiding-bot
No description provided.
polymarket-analysis
Analyze Polymarket prediction markets for trading edges. Pair Cost arbitrage, whale tracking, sentiment analysis, momentum signals, user profile tracking. No execution.
polymarket-agent
Autonomous prediction market agent - analyzes markets, researches news, and identifies trading opportunities
polymarket-5
Query Polymarket prediction markets. Use for questions about prediction markets, betting odds, market prices, event probabilities, or when user asks about Polymarket data.
polymarket-4
Query Polymarket prediction markets. Use for questions about prediction markets, betting odds, market prices, event probabilities, or when user asks about Polymarket data.
polymarket-3
Query Polymarket prediction market odds and events via CLI. Search for markets, get current prices, list events by category. Supports sports betting (NFL, NBA, soccer/EPL, Champions League), politics, crypto, elections, geopolitics. Real money markets = more accurate than polls. No API key required. Use when asked about odds, probabilities, predictions, or "what are the chances of X".
polymarket-2
Query Polymarket prediction markets - check odds, trending markets, search events, track prices.