Clickup CLI MCP Server
About
An CLI and MCP server optimised for LLMs for ClickUp API
Details
- Author
- nicholasbester
- Categories
- Productivity, Project Management, Automation
Jump to
Setup
Install Clickup CLI MCP Server in your MCP client (Claude Desktop, Cursor, Windsurf, and others).
Repository: https://github.com/nicholasbester/clickup-cli
Follow the installation instructions in the repository README, then restart your MCP client.
ClickUp's API responses are massive. A single task list query returns deeply nested JSON — statuses, assignees, priorities, custom fields, checklists, dependencies — easily12,000+ tokensfor just 5 tasks. For AI agents (Claude Code, Cursor, Copilot, etc.) operating within context windows, this is a serious problem: a few API calls can consume most of an agent's available context.
clickup-cli solves this withtoken-efficient output by default:
Full API JSON for 5 tasks: ~12,000 tokens (450 lines) clickup-cli table output: ~150 tokens (7 lines) Reduction: ~98%
The CLI flattens nested objects, selects only essential fields, and renders compact tables. Agents get the information they need without drowning in JSON. When you need the full response,--output jsonis always available.
Beyond token efficiency, theclickup-cliCLI (orclkupfor short) gives AI agents a simple, predictable interface to ClickUp:clickup-cli <resource> <action> [ID] [flags]. No SDK, no auth boilerplate, no JSON parsing — just shell commands with structured output.
brew tap nicholasbester/clickup-cli brew install clickup-cli
Works on Linux too — the tap ships native x86_64 and arm64 Linux binaries.
Download the latest release for your platform:
# macOS Apple Silicon (M1/M2/M3/M4) curl -L https://github.com/nicholasbester/clickup-cli/releases/latest/download/clickup-macos-arm64.tar.gz | tar xz sudo mv clickup-cli clkup /usr/local/bin/ # macOS Intel curl -L https://github.com/nicholasbester/clickup-cli/releases/latest/download/clickup-macos-x86_64.tar.gz | tar xz sudo mv clickup-cli clkup /usr/local/bin/ # Linux x86_64 curl -L https://github.com/nicholasbester/clickup-cli/releases/latest/download/clickup-linux-x86_64.tar.gz | tar xz sudo mv clickup-cli clkup /usr/local/bin/ # Linux ARM64 curl -L https://github.com/nicholasbester/clickup-cli/releases/latest/download/clickup-linux-arm64.tar.gz | tar xz sudo mv clickup-cli clkup /usr/local/bin/
curl -L https://github.com/nicholasbester/clickup-cli/releases/latest/download/clickup-linux-x86_64-musl.tar.gz | tar xz mv clickup-cli clkup /usr/local/bin/
yay -S clickup-cli-bin # or paru -S clickup-cli-bin
clickup-cli-binwraps the prebuilt Linux binaries — no Rust toolchain required. Auto-updated on every release.
Downloadclickup-windows-x86_64.zipfrom thelatest release, extract it, and addclickup-cli.exe(and optionallyclkup.exe) to your PATH.
docker build -t clickup-cli . docker run -i --rm -e CLICKUP_TOKEN=pk_xxx -e CLICKUP_WORKSPACE=12345 clickup-cli mcp serve
git clone https://github.com/nicholasbester/clickup-cli.git cd clickup-cli cargo install --path .
Every install method shipstwobinaries with identical behaviour:
- clickup-cli— canonical name (use this in scripts, CI, MCP configs)
- clkup— short alias, handy for daily interactive typing
Pick whichever you prefer; both accept the same flags and subcommands.
clickup-cli --version # or clkup --version
# Configure your API token clickup-cli setup # Or non-interactive clickup-cli setup --token pk_your_token_here # Verify clickup-cli auth whoami
# Hierarchy navigation clickup-cli workspace list clickup-cli space list clickup-cli folder list --space 12345 clickup-cli list list --folder 67890 # Task management clickup-cli task list --list 12345 clickup-cli task create --list 12345 --name "My Task" --priority 3 clickup-cli task get abc123 clickup-cli task update abc123 --status "in progress" clickup-cli task search --status "in progress" --assignee 44106202 # Comments and collaboration clickup-cli comment list --task abc123 clickup-cli comment create --task abc123 --text "Looking good!" clickup-cli comment reply COMMENT_ID --text "Thanks!" # Time tracking clickup-cli time start --task abc123 --description "Working on feature" clickup-cli time stop clickup-cli time list --start-date 2026-03-01 --end-date 2026-03-31 # Goals and views clickup-cli goal list clickup-cli view list --space 12345 clickup-cli view tasks VIEW_ID # Tags and custom fields clickup-cli tag list --space 12345 clickup-cli field list --list 12345 clickup-cli field set FIELD_ID --value "some value" TASK_ID # Chat (v3) clickup-cli chat channel-list clickup-cli chat message-send --channel CHAN_ID --text "Hello team" # Docs (v3) clickup-cli doc list clickup-cli doc get DOC_ID # Output modes clickup-cli task list --list 12345 --output json # Full JSON clickup-cli task list --list 12345 --output json-compact # Default fields as JSON clickup-cli task list --list 12345 --output csv # CSV clickup-cli task list --list 12345 -q # IDs only clickup-cli task list --list 12345 --fields id,name,status # Custom fields # Auto-detect task ID from git branch (on a branch like feat/CU-abc123-foo) clickup-cli task get # Resolves to abc123 from the branch clickup-cli task update --status "in progress" clickup-cli comment create --text "Looking good!" clickup-cli field set FIELD_ID --value "some value"
When a git-tracked branch follows a common naming convention,clickup-cliresolves the task ID automatically:
- ClickUp default IDs —feat/CU-abc123-foo→abc123
- Custom task IDs —PROJ-42-add-login→PROJ-42(auto-injectscustom_task_ids=true&team_id=<ws>)
Prefixes stripped case-insensitively:feature/,feat/,fix/,hotfix/,bugfix/,release/,chore/,docs/,refactor/,test/,ci/,perf/,build/,style/. Custom-ID matches whose prefix isFEATURE,FEAT,BUGFIX,BUG,FIX,HOTFIX,RELEASE,CHORE,DOCS,DOC,REFACTOR,TEST,CI,PERF,BUILD,STYLE,WIP, orTMPare rejected.
Resolution order (highest priority first): explicit CLI arg →CLICKUP_TASK_IDenv var → git branch. ExplicitCU-abc123is transparently stripped toabc123. Destructive or ambiguous commands (task delete,task link,task unlink,guest share-task,guest unshare-task) never auto-detect — pass the ID explicitly.
Disable for one invocation withCLICKUP_GIT_DETECT=0, or permanently in config:
[git] enabled = false # disable branch detection verbose = false # suppress the "resolved task X from branch Y" breadcrumb
Two ways to connect AI agents to ClickUp:
The CLI approach isthe most token-efficient wayto give an agent ClickUp access. Injecting the command reference costs ~1,000 tokens once, and every command returns compact table output (~150 tokens for 5 tasks). There are no tool schemas consuming context. Works with any LLM/agent framework.
clickup-cli agent-config inject # Auto-detects: CLAUDE.md, agent.md, .cursorrules, etc. clickup-cli agent-config inject AGENT.md # Or specify any file explicitly clickup-cli agent-config show # Preview the block
Auto-detection checks for existing files in order:CLAUDE.md,agent.md,AGENT.md,.cursorrules,.github/copilot-instructions.md. Falls back to creatingCLAUDE.mdif none exist.
The agent then runs CLI commands directly — the full ClickUp API in ~1,000 tokens of instructions.
Alternative: MCP Server (native tool calls)
For Claude Desktop, Cursor, and other MCP-capable tools that prefer native tool integration. Note: MCP tool schemas consume more tokens in the agent's context than the CLI reference approach.
Or add.mcp.jsonto your project root manually:
{ "mcpServers": { "clickup-cli": { "command": "/opt/homebrew/bin/clickup-cli", "args": ["mcp", "serve"] } } }
This exposes 144 tools covering 100% of the ClickUp API as native tool calls with token-efficient compact responses. See theMCP documentationfor full setup.
By defaultclickup-cli mcp serveexposes all 144 tools. You can restrict this at startup to shrink the LLM's context and enforce access control. Flags and matching env vars:
{ "mcpServers": { "clickup": { "command": "clickup-cli", "args": ["mcp", "serve", "--read-only"] } } }
Task-focused agent (task + comment + time groups only):
{ "mcpServers": { "clickup": { "command": "clickup-cli", "args": ["mcp", "serve", "--groups", "task,comment,time"] } } }
Filtered tools are rejected attools/callas well as hidden fromtools/list, so a misbehaving agent can't smuggle a destructive call past the filter.
clickup-cli agent-config init --token pk_xxx --workspace 12345
This creates.clickup.tomlin the current directory. Add it to.gitignoreif it contains a token. Project config takes priority over global config.
Token Resolution (highest priority wins)
---tokenCLI flag
- CLICKUP_TOKENenvironment variable
- .clickup.toml(project-level)
- ~/.config/clickup-cli/config.toml(global)
- --workspaceCLI flag
- CLICKUP_WORKSPACEenvironment variable
- .clickup.toml(project-level)
- ~/.config/clickup-cli/config.toml(global)
clickup-cli vX.Y.Z Config: ~/.config/clickup-cli/config.toml Token: pk_abc...wxyz Workspace: 1234567
# Bash clickup-cli completions bash > ~/.bash_completion.d/clickup-cli # Zsh clickup-cli completions zsh > ~/.zfunc/_clickup-cli # Fish clickup-cli completions fish > ~/.config/fish/completions/clickup-cli.fish # PowerShell clickup-cli completions powershell > clickup-cli.ps1
Other community tools in the ClickUp ecosystem — picking the right one depends on your use case:
- triptechtravel/clickup-cli— Go CLI focused on developer workflows. Auto-detects task IDs from git branch names (CU-abc123), tight GitHub PR integration.
- dang3r/clickupy— Python CLI + library. Has a FUSE mount mode if you want to browse ClickUp like a filesystem.
- code-gorilla-au/clickup-cli— another Go CLI.
- techlove/gitclick— narrow-scope ClickUp ↔ GitHub PR sync.
- ClickUp's official MCP— hosted, OAuth, curated tool set.
- taazkareem/clickup-mcp-server,hauptsacheNet/clickup-mcp,Nazruden/clickup-mcp-server— community-maintained Node/TypeScript MCP servers.
Rust binary, zero runtime dependency, ~130 REST endpoints + 144 MCP tools (100% API coverage), statically linked musl build for Alpine / distroless containers, and token-efficient output tuned for LLM agents. Use this when you want one binary that covers both the CLI and MCP roles without a Node/Python toolchain.
Perform queries and entity operations in your Fibery workspace.
Keep teams & agents coordinated automatically
Connect to the Taskade platform via MCP. Access tasks, projects, workflows, and AI agents in real-time through a unified workspace and API.
A universal remote MCP server that connects to popular productivity tools such as Notion, Monday, AirTable, and many more.
advanced-math-mcp — MCP server for linear algebra, calculus, and symbolic math. 17 tools with a unified evaluate() expression engine. Supports matrices, eigenvalues, SVD, integrals, limits, derivatives, and more.
An MCP interface for Atlassian products, including Jira and Bitbucket.
The Outcome Backcasting MCP is a strategic planning tool that helps you work backwards from a desired future outcome to identify the specific steps, resources, and dependencies needed to achieve your goals. Unlike traditional forward planning, backcasting starts with your end goal and creates a reverse roadmap to get there.
About A repo-native task graph as plain Markdown files, served to AI agents over MCP and to humans over a clean web UI .
Integrate ClickUp with AI applications to manage tasks, spaces, lists, and folders.
Interact with the ClickUp API to manage tasks, lists, and spaces, automating project planning and workflows.
Sign in to leave a review
Use Google, GitHub, or an email account so ratings stay tied to real people.
No reviews posted yet.


