Skip to main content
Glama
README.md
# ClickUp MCP Pro

> The most complete **ClickUp** MCP server — **161 typed tools + `clickup_raw`** covering the entire ClickUp v2/v3 API. Built to match or beat the paid alternatives, free and open source.

[![npm version](https://img.shields.io/npm/v/clickup-mcp-pro.svg?style=flat-square)](https://www.npmjs.com/package/clickup-mcp-pro)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg?style=flat-square)](LICENSE)
[![GitHub Stars](https://img.shields.io/github/stars/helbertparanhos/clickup-mcp-pro?style=flat-square)](https://github.com/helbertparanhos/clickup-mcp-pro/stargazers)
[![GitHub Forks](https://img.shields.io/github/forks/helbertparanhos/clickup-mcp-pro?style=flat-square)](https://github.com/helbertparanhos/clickup-mcp-pro/network/members)
[![GitHub Issues](https://img.shields.io/github/issues/helbertparanhos/clickup-mcp-pro?style=flat-square)](https://github.com/helbertparanhos/clickup-mcp-pro/issues)
[![Glama Quality](https://glama.ai/mcp/servers/helbertparanhos/clickup-mcp-pro/badges/score.svg)](https://glama.ai/mcp/servers/helbertparanhos/clickup-mcp-pro)

[![TypeScript](https://img.shields.io/badge/TypeScript-3178C6?style=flat-square&logo=typescript&logoColor=white)](https://www.typescriptlang.org/)
[![Node.js](https://img.shields.io/badge/Node.js-339933?style=flat-square&logo=nodedotjs&logoColor=white)](https://nodejs.org/)
[![MCP](https://img.shields.io/badge/MCP-Model%20Context%20Protocol-000000?style=flat-square)](https://modelcontextprotocol.io/)
[![Claude Code](https://img.shields.io/badge/Claude%20Code-D97706?style=flat-square)](https://claude.ai/code)
[![Cursor](https://img.shields.io/badge/Cursor-Compatible-4F46E5?style=flat-square)](https://cursor.sh)
[![Claude Desktop](https://img.shields.io/badge/Claude%20Desktop-Compatible-D97706?style=flat-square)](https://claude.ai/download)

[![Instagram](https://img.shields.io/badge/@helbertparanhos-E4405F?style=flat-square&logo=instagram&logoColor=white)](https://www.instagram.com/helbertparanhos)
[![YouTube](https://img.shields.io/badge/stratacademy-FF0000?style=flat-square&logo=youtube&logoColor=white)](https://www.youtube.com/@stratacademy)
[![LinkedIn](https://img.shields.io/badge/helbert--paranhos-0077B5?style=flat-square&logo=linkedin&logoColor=white)](https://www.linkedin.com/in/helbert-paranhos/)
[![Buy Me A Coffee](https://img.shields.io/badge/Buy%20Me%20A%20Coffee-FFDD00?style=flat-square&logo=buy-me-a-coffee&logoColor=black)](https://buymeacoffee.com/helbertparanhos)
[![Strat Academy](https://img.shields.io/badge/Strat%20Academy-8B5CF6?style=flat-square)](https://stratacademy.com.br)

ClickUp MCP Pro exposes nearly every ClickUp operation as a typed [Model Context Protocol](https://modelcontextprotocol.io) tool — so Claude Code (and any MCP client) can drive your entire workspace: tasks, lists, folders, spaces, docs, chat, goals, sprints, time tracking, custom fields, webhooks, guests and more. When a niche endpoint isn't wrapped, `clickup_raw` reaches the rest of the API directly, giving you **100% coverage**.

## Highlights

- **161 typed tools** across 23 ClickUp domains (v2 + v3 APIs).
- **`clickup_raw` escape hatch** — call any endpoint not yet wrapped. Nothing is out of reach.
- **Readonly mode** (`CLICKUP_READONLY=true`) blocks every write while keeping reads working — safe exploration.
- **Natural-language dates** — `"tomorrow"`, `"in 3 days"`, `"+2h"`, ISO, or epoch ms all work for any date field.
- **Name → ID resolution** — `find_member`, `find_space_by_name`, `find_list_by_name`.
- **Resilient client** — automatic retries with backoff on 429/5xx, `Retry-After` honored, actionable error messages.
- **Bulk operations** with per-item success/error reporting (partial failures never lose the batch).

## Coverage at a glance

| Domain | Tools | Domain | Tools |
|--------|:----:|--------|:----:|
| Workspace / Teams | 6 | Time tracking | 14 |
| Spaces | 5 | Docs (v3) | 8 |
| Folders | 7 | Views | 7 |
| Lists | 9 | Goals & Key Results | 8 |
| Tasks (core) | 11 | Chat (v3) | 18 |
| Tasks (bulk) | 4 | Sprints | 3 |
| Task links & dependencies | 6 | Webhooks | 4 |
| Comments & threads | 10 | User groups | 4 |
| Checklists | 6 | Guests (Enterprise) | 10 |
| Attachments | 2 | Members & resolvers | 5 |
| Tags | 6 | Templates | 2 |
| Custom fields | 6 | **`clickup_raw`** | 1 |

## Install & configure

### 1. Get a ClickUp Personal API Token
ClickUp → **Settings → Apps → API Token** (it starts with `pk_`).

### 2. Add to Claude Code

```json
{
  "mcpServers": {
    "clickup": {
      "command": "npx",
      "args": ["-y", "clickup-mcp-pro"],
      "env": {
        "CLICKUP_API_TOKEN": "pk_your_token_here",
        "CLICKUP_TEAM_ID": "9007012345"
      }
    }
  }
}
```

Or, running from source:

```json
{
  "mcpServers": {
    "clickup": {
      "command": "node",
      "args": ["d:/GitHub/easypanel-mcp/projects/clickup-mcp-pro/dist/index.js"],
      "env": { "CLICKUP_API_TOKEN": "pk_your_token_here" }
    }
  }
}
```

### 3. Claude Desktop
File: `%APPDATA%\Claude\claude_desktop_config.json` (Windows) or
`~/Library/Application Support/Claude/claude_desktop_config.json` (macOS) — same `mcpServers` block as above.

## Environment variables

| Variable | Required | Default | Description |
|----------|:-------:|---------|-------------|
| `CLICKUP_API_TOKEN` | ✅ | — | Personal API token (`pk_...`). `CLICKUP_TOKEN` is also accepted. |
| `CLICKUP_TEAM_ID` | — | — | Default Team/Workspace id used when a tool omits `team_id`. |
| `CLICKUP_READONLY` | — | `false` | `true` blocks all writes (reads still work). |
| `CLICKUP_DISABLE_RAW` | — | `false` | `true` hides the `clickup_raw` tool. |
| `CLICKUP_UPLOAD_DIR` | — | — | Restrict `upload_task_attachment(file_path)` to this base directory. |
| `CLICKUP_MAX_UPLOAD_BYTES` | — | `52428800` | Max attachment size (50 MB) for uploads. |
| `CLICKUP_TIMEOUT_MS` | — | `60000` | Per-request timeout. |
| `CLICKUP_MAX_RETRIES` | — | `3` | Max retries on 429/5xx/network errors. |

## Security notes

This server runs locally and acts on behalf of your token, so it's hardened against the usual ways a malicious prompt could abuse a tool call:

- **`upload_task_attachment(url)`** only fetches **HTTPS** URLs and rejects hosts that resolve to private/loopback/link-local addresses (anti-SSRF), following no redirects.
- **`upload_task_attachment(file_path)`** can be confined to a directory with `CLICKUP_UPLOAD_DIR` to prevent arbitrary local-file exfiltration. Uploads are size-capped (`CLICKUP_MAX_UPLOAD_BYTES`). Note: don't place symlinks pointing outside the directory inside `CLICKUP_UPLOAD_DIR`.
- **`clickup_raw`** validates the path (must be a clean relative API path — no scheme, host, `..` or `@`) and is blocked for writes under `CLICKUP_READONLY=true`. Set `CLICKUP_DISABLE_RAW=true` to remove it entirely in untrusted environments.
- The API token is sent only as an auth header and is **never logged** or echoed in error messages.

## Build from source

```bash
cd projects/clickup-mcp-pro
npm install
npm run build
# Inspect interactively:
npm run inspector
```

## Tool reference

### Workspace / Teams
`get_workspaces`, `get_workspace_seats`, `get_workspace_plan`, `get_workspace_members`, `get_custom_task_types`, `get_authorized_user`

### Spaces
`list_spaces`, `get_space`, `create_space`, `update_space`, `delete_space`, `get_space_tags`

### Folders
`list_folders`, `get_folder`, `create_folder`, `create_folder_from_template`, `update_folder`, `delete_folder`, `get_folder_views`

### Lists
`get_lists_in_folder`, `get_folderless_lists`, `get_list`, `create_list_in_folder`, `create_folderless_list`, `create_list_from_template_in_folder`, `update_list`, `delete_list`, `get_list_views`

### Tasks
`get_tasks`, `get_task`, `get_workspace_tasks`, `create_task`, `update_task`, `delete_task`, `get_subtasks`, `duplicate_task`, `set_task_custom_field_value`, `remove_task_custom_field_value`, `get_task_members`
Bulk: `create_bulk_tasks`, `update_bulk_tasks`, `delete_bulk_tasks`, `move_bulk_tasks`
Links & deps: `add_task_link`, `delete_task_link`, `add_task_dependency`, `delete_task_dependency`, `add_task_to_list`, `remove_task_from_list`

### Comments
`get_task_comments`, `create_task_comment`, `get_list_comments`, `create_list_comment`, `get_chat_view_comments`, `create_chat_view_comment`, `update_comment`, `delete_comment`, `get_threaded_comments`, `create_threaded_comment`

### Checklists
`create_checklist`, `edit_checklist`, `delete_checklist`, `create_checklist_item`, `edit_checklist_item`, `delete_checklist_item`

### Attachments
`upload_task_attachment` (local path / URL / base64), `list_task_attachments`

### Tags & Custom fields
`get_space_tags`, `create_space_tag`, `update_space_tag`, `delete_space_tag`, `add_tag_to_task`, `remove_tag_from_task`
`get_list_custom_fields`, `get_folder_custom_fields`, `get_space_custom_fields`, `get_workspace_custom_fields`, `set_custom_field_value`, `remove_custom_field_value`

### Time tracking
`get_time_entries`, `get_time_entry`, `get_running_time_entry`, `start_time_entry`, `stop_time_entry`, `create_time_entry`, `update_time_entry`, `delete_time_entry`, `get_time_entry_history`, `get_all_time_entry_tags`, `add_tags_to_time_entries`, `remove_tags_from_time_entries`, `get_task_time_in_status`, `get_bulk_tasks_time_in_status`

### Docs (v3)
`search_docs`, `get_doc`, `create_doc`, `get_doc_page_listing`, `get_doc_pages`, `get_doc_page`, `create_doc_page`, `update_doc_page` (replace/append/prepend)

### Views
`get_team_views`, `get_space_views`, `get_view`, `get_view_tasks`, `create_view`, `update_view`, `delete_view`

### Goals
`get_goals`, `get_goal`, `create_goal`, `update_goal`, `delete_goal`, `create_key_result`, `update_key_result`, `delete_key_result`

### Chat (v3)
`list_chat_channels`, `get_chat_channel`, `create_chat_channel`, `create_chat_channel_on_location`, `create_chat_direct_message`, `update_chat_channel`, `get_chat_channel_members`, `get_chat_channel_followers`, `get_chat_messages`, `send_chat_message`, `update_chat_message`, `delete_chat_message`, `get_chat_message_replies`, `create_chat_message_reply`, `get_chat_message_reactions`, `create_chat_message_reaction`, `delete_chat_message_reaction`, `get_chat_message_tagged_users`

### Sprints / Webhooks / User groups / Guests / Templates
`list_sprints`, `get_active_sprint`, `get_sprint_tasks`
`list_webhooks`, `create_webhook`, `update_webhook`, `delete_webhook`
`list_user_groups`, `create_user_group`, `update_user_group`, `delete_user_group`
`invite_guest`, `get_guest`, `edit_guest`, `remove_guest`, `add_guest_to_task`, `remove_guest_from_task`, `add_guest_to_list`, `remove_guest_from_list`, `add_guest_to_folder`, `remove_guest_from_folder`
`get_task_templates`, `create_task_from_template`

### Members & resolvers
`get_task_assignable_members`, `get_list_members`, `find_member`, `find_space_by_name`, `find_list_by_name`

### Escape hatch
`clickup_raw` — call any ClickUp v2/v3 endpoint directly. Example:
```json
{ "method": "GET", "path": "/team/9007012345/space", "version": "v2" }
```

## How it compares

| | ClickUp MCP Pro | taazkareem (paid) | Nazruden | DiversioTeam |
|---|:--:|:--:|:--:|:--:|
| Typed tools | **161** | ~150 | ~30 | ~28 |
| Raw escape hatch | ✅ | — | — | — |
| Readonly mode | ✅ | — | — | — |
| Chat / Goals / Sprints | ✅ | ✅ | — | — |
| Docs (v3) | ✅ | ✅ | ✅ | — |
| Time tracking | ✅ | ✅ | — | partial |
| Price | **Free / MIT** | Paid | Free | Free |

## License

MIT © Helbert Paranhos / [Strat Academy](https://stratacademy.com.br)

- GitHub: [@helbertparanhos](https://github.com/helbertparanhos)
- Built with the [Strat Builder](https://github.com/helbertparanhos) meta-system.

TDQS

A3.7/5.0

Scored across 162 tools

Disambiguation4/5

Most tools have clearly distinct purposes, but there is notable redundancy: `set_custom_field_value` and `set_task_custom_field_value` are identical, as are `remove_custom_field_value` and `remove_task_custom_field_value`. This creates ambiguity for the agent.

Naming Consistency4/5

The naming pattern is largely verb_noun and consistent (create, get, update, delete, add, remove), but there are a few outliers like `clickup_raw`, `duplicate_task`, and `find_list_by_name` that deviate. Overall, minor inconsistencies.

Tool Count2/5

162 tools is excessively high for an MCP server. While it covers many features, the sheer number can overwhelm agents and make discovery difficult. A more focused or modular approach would be better.

Completeness5/5

The tool set is extremely comprehensive, covering all major ClickUp entities (tasks, lists, folders, spaces, workspaces, docs, chat, goals, time entries, guests, webhooks, views) with full CRUD and many specialized operations. No obvious gaps.

Maintenance

ActivityMaintained
ResponsivenessNo issues