Skip to main content
Glama

Properly Connect ClickUp to AI Agents and Agentic Workflows

A high-performance Model Context Protocol (MCP) server for managing tasks, checklists, sprints, comments, tags, spaces, lists, folders, files, docs, chat, and time using natural language.

⭐️ Proven Performance: 460+ Stars (from previous public repo) & thousands of weekly NPM downloads.
The industry-standard ClickUp integration for AI.


📚 Table of Contents


Related MCP server: ClickUp MCP Server

✨ Features

🔥 Multi-Account Support: Manage multiple authorized workspaces seamlessly in a single session. See setup


💎 Premium Access

This project transitioned from open-source to a paid model for sustainable full-time development and priority support. A license grants full, unrestricted access to all features across your agents⎯no limits.

Monthly $9/mo

Annual $59/yr

Lifetime

$89 w/ code

• Pay-as-you-go flexibility

• 3 device activations

• Cancel anytime

Save 45% ($4.92/mo)

• 3 device activations

• Priority support all year

Best Value — One payment

• 3 device activations

25% OFF code: APR25

⚡️ Instant Key Delivery (Polar.sh)   •   Setup takes less than 2 mins      


🚀 Quick Start

1. Prerequisites

  • License Key: See above

  • ClickUp API Key (Optional - not needed for Remote MCP)

  • ClickUp Team ID (Optional - not needed for Remote MCP)

    • Open ClickUp in your browser.

    • Look at the URL: https://app.clickup.com/1234567/v/li/987654321.

    • The first number (1234567) directly after clickup.com/ is your Team ID (Workspace ID).

2. Choose your MCP Host & Transport

1. Enable mcporter in ~/.openclaw/openclaw.json:

{ "skills": { "allowBundled": ["mcporter"] } }

2. Configure & Auth Connect the server and authorize via browser (tokens are cached):

# Add ClickUp as a remote server
mcporter config add ClickUp https://clickup-mcp.taazkareem.com/mcp --auth oauth --header "X-License-Key=your-license-key"

# Authenticate session
mcporter auth ClickUp

Optional: Multiple Personas The most robust and flexible way to manage personas is to define multiple named configurations in your agent-specific mcporter.json file. This isolates credentials and policies per-agent.

# Define an Auditor persona (Read-only) in your workspace config
mcporter --config <agent-workspace>/config/mcporter.json config add ClickUp-Auditor https://clickup-mcp.taazkareem.com/mcp \
  --header "X-Persona=auditor" \
  --header "X-License-Key=your-license-key" \
  --header "X-ClickUp-Key=your-api-key" \
  --header "X-ClickUp-Team-Id=your-team-id"

# Define a Task Worker persona (Daily CRUD) in the same or different workspace
mcporter --config <agent-workspace-2>/config/mcporter.json config add ClickUp-Worker https://clickup-mcp.taazkareem.com/mcp \
  --header "X-Persona=task_worker" \
  --header "X-License-Key=your-license-key" \
  --header "X-ClickUp-Key=your-api-key" \
  --header "X-ClickUp-Team-Id=your-team-id"

# Now the OpenClaw sub-agent can see the optimized schema and call its focused tools like:
mcporter list ClickUp-Auditor --schema
mcporter call ClickUp-Auditor.get_workspace

mcporter list ClickUp-Worker --schema
mcporter call ClickUp-Worker.create_task listId="123456789" name="New Task"

Isolation: You can add X-Enabled-Tools or X-Disabled-Tools to mix and match tools and personas, or perhaps enable just a single tool. You can assign different ClickUp API Keys, Team IDs, or even different License Keys to each config/persona. Since the agent only reads the tool definitions and not the sensitive headers directly, this is the most secure way to handle multi-agent ClickUp configurations.

To see all available personas and what they do, see the Advanced Configuration section below.

Configuration Path: <project-root>/.cursor/mcp.json

Option A: Remote / Streamable HTTP (Easiest)

{
  "mcpServers": {
    "ClickUp": {
      "url": "https://clickup-mcp.taazkareem.com/mcp",
      "headers": {
        "X-License-Key": "your-license-key"
      }
    }
  }
}

Option B: Local / STDIO

{
  "mcpServers": {
    "ClickUp": {
      "command": "npx",
      "args": ["-y", "@taazkareem/clickup-mcp-server@latest"],
      "env": {
        "CLICKUP_API_KEY": "your-api-key",
        "CLICKUP_TEAM_ID": "your-team-id",
        "CLICKUP_MCP_LICENSE_KEY": "your-license-key"
      }
    }
  }
}

Configuration Paths:

  • Global: ~/Library/Application Support/Code/User/mcp.json

  • Local: <project-root>/.vscode/mcp.json

Option A: Remote / Streamable HTTP (Easiest)

{
  "mcpServers": {
    "ClickUp": {
      "url": "https://clickup-mcp.taazkareem.com/mcp",
      "headers": {
        "X-License-Key": "your-license-key"
      }
    }
  }
}

Option B: Local / STDIO

{
  "mcpServers": {
    "ClickUp": {
      "command": "npx",
      "args": ["-y", "@taazkareem/clickup-mcp-server@latest"],
      "env": {
        "CLICKUP_API_KEY": "your-api-key",
        "CLICKUP_TEAM_ID": "your-team-id",
        "CLICKUP_MCP_LICENSE_KEY": "your-license-key"
      }
    }
  }
}

Configuration Path: <project-root>/.roo/mcp.json

Option A: Remote / Streamable HTTP (Easiest)

{
  "mcpServers": {
    "ClickUp": {
      "url": "https://clickup-mcp.taazkareem.com/mcp",
      "headers": {
        "X-License-Key": "your-license-key"
      }
    }
  }
}

Option B: Local / STDIO

{
  "mcpServers": {
    "ClickUp": {
      "command": "npx",
      "args": ["-y", "@taazkareem/clickup-mcp-server@latest"],
      "env": {
        "CLICKUP_API_KEY": "your-api-key",
        "CLICKUP_TEAM_ID": "your-team-id",
        "CLICKUP_MCP_LICENSE_KEY": "your-license-key"
      }
    }
  }
}

Configuration Path: ~/Library/Application Support/Claude/claude_desktop_config.json

Remote Setup (Requires mcp-remote adapter):

{
  "mcpServers": {
    "ClickUp": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://clickup-mcp.taazkareem.com/mcp",
        "--header",
        "X-License-Key: your-license-key"
      ]
    }
  }
}

Run this command in your terminal:

claude mcp add --transport http ClickUp https://clickup-mcp.taazkareem.com/mcp \
  --header "X-License-Key: your-license-key"

Option A: Remote / Streamable HTTP (Recommended)

  1. In n8n, add an "MCP Client" node.

  2. Set Connection Type to Streamable HTTP.

  3. Auth Type: Multiple Headers Auth.

  4. Header: X-License-Key Value: your-license-key

  5. URL: https://clickup-mcp.taazkareem.com/mcp

Option B: Self-Hosted Docker Run the container:

docker run -d -p 3231:3231 ghcr.io/taazkareem/clickup-mcp-server:latest

In n8n, use URL: http://host.docker.internal:3231/mcp

Configuration Path: ~/.gemini/settings.json

{
  "mcpServers": {
    "ClickUp": {
      "httpUrl": "https://clickup-mcp.taazkareem.com/mcp",
      "headers": { "X-License-Key": "your-license-key" }
    }
  }
}

Configuration Path: ~/.gemini/antigravity/mcp_config.json

{
  "mcpServers": {
    "ClickUp": {
      "serverUrl": "https://clickup-mcp.taazkareem.com/mcp",
      "headers": { "X-License-Key": "your-license-key" }
    }
  }
}

Codex clients (CLI, Desktop App, and VS Code extension) share a single source of truth for configuration.

Configuration Paths:

  • Global: ~/.codex/config.toml

  • Local: <project-root>/.codex/config.toml

Option A: Remote / Streamable HTTP (Easiest)

[mcp_servers.ClickUp]
url = "https://clickup-mcp.taazkareem.com/mcp"
http_headers = { "X-License-Key" = "your-license-key" }

Option B: Local / STDIO

[mcp_servers.ClickUp]
command = "npx"
args = ["-y", "@taazkareem/clickup-mcp-server@latest"]
env = {
  CLICKUP_API_KEY = "your-api-key",
  CLICKUP_TEAM_ID = "your-team-id",
  CLICKUP_MCP_LICENSE_KEY = "your-license-key"
}

Quick Tips:

  • Codex CLI: Run codex mcp list to verify. Use codex mcp add ... as a CLI alternative to editing the file.

  • VS Code Extension: Click ⚙ → MCP settings → Open config.toml.

  • Desktop App: Go to Settings → Integrations & MCP.

Note: Requires a Business, Enterprise, or Edu workspace with Developer Mode enabled.

  1. Enable Developer Mode: Ask your workspace admin to enable this under Workspace Settings → Permissions & Roles → Connected Data.

  2. Connect MCP: Go to Settings → Connectors and toggle Developer Mode on.

  3. Add Custom Connector:

    • Click Add connector (or "Create custom connector").

    • Choose MCP as the source type.

  4. Configure:

    • Server URL: https://clickup-mcp.taazkareem.com/mcp

    • Authentication: Add HTTP header X-License-Key: your-license-key.

  5. Use: Start a Developer Mode chat and select your ClickUp connector via Add sources.

Configuration Path: <project-root>/.augment/settings.json

{
  "mcpServers": {
    "ClickUp": {
      "url": "https://clickup-mcp.taazkareem.com/mcp",
      "headers": {
        "X-License-Key": "your-license-key"
      }
    }
  }
}

Run this command in your terminal:

auggie mcp add ClickUp --url https://clickup-mcp.taazkareem.com/mcp \
  --header "X-License-Key: your-license-key"

Configuration Path: <project-root>/.codeium/windsurf/mcp_config.json

Option A: Remote / Streamable HTTP (Easiest)

{
  "mcpServers": {
    "ClickUp": {
      "url": "https://clickup-mcp.taazkareem.com/mcp",
      "headers": {
        "X-License-Key": "your-license-key"
      }
    }
  }
}

Option B: Local / STDIO

{
  "mcpServers": {
    "ClickUp": {
      "command": "npx",
      "args": ["-y", "@taazkareem/clickup-mcp-server@latest"],
      "env": {
        "CLICKUP_API_KEY": "your-api-key",
        "CLICKUP_TEAM_ID": "your-team-id",
        "CLICKUP_MCP_LICENSE_KEY": "your-license-key"
      }
    }
  }
}

For most MCP-compliant hosts (e.g. Smithery, MCP Inspector, custom GUIs):

  • Server URL: https://clickup-mcp.taazkareem.com/mcp

  • Auth Header: X-License-Key: your-license-key (Required for HTTP/SSE connections)


Advanced: OpenAI Agents SDK For developers building custom agents.

Python SDK:

from agents import Agent, Runner
from agents.mcp import MCPServerStreamableHttp

async with MCPServerStreamableHttp(
    name="clickup",
    params={
        "url": "https://clickup-mcp.taazkareem.com/mcp",
        "headers": {"X-License-Key": "your-license-key"},
    },
) as server:
    agent = Agent(
        name="Assistant",
        instructions="Use the ClickUp MCP tools when helpful.",
        mcp_servers=[server],
    )
    result = await Runner.run(agent, "List my workspaces.")

3. Restart

Restart your MCP Host (e.g., Cursor IDE). The server will validate your License Key and start automatically.


🛠️ Available Tools

Category

Tool

Description

Workspace

get_workspace

Get workspace structure and metadata (hierarchy, members, plan, seats, shared items, custom task types)

get_workspace_seats

Get member and guest seat utilization (used, total, available)

get_workspace_plan

Get plan details for the workspace (plan_name, plan_id)

get_audit_logs

Retrieve workspace audit logs (Enterprise only)

Tasks

create_task

Create a task

get_task

Get single task details

update_task

Modify task properties

move_task

Move task to new list

duplicate_task

Copy task

delete_task

Remove task

add_task_to_list

Associate task with additional list (TIML)

remove_task_from_list

Remove task list association (TIML)

create_bulk_tasks

Create multiple tasks

update_bulk_tasks

Update multiple tasks

move_bulk_tasks

Move multiple tasks

delete_bulk_tasks

Delete multiple tasks

get_workspace_tasks

Search tasks with Deep Search filtering

get_comments

Get comments on a task, list, or view

create_comment

Create a comment on a task, list, or view

update_comment

Edit or resolve a comment

delete_comment

Delete a comment

get_comment_replies

Get threaded replies for a comment

create_comment_reply

Reply to a comment in a thread

add_comment_reaction

Add an emoji reaction to a comment

remove_comment_reaction

Remove an emoji reaction from a comment

get_comment_subtypes

Get post subtype IDs for the workspace

add_task_link

Link two tasks together

get_task_links

Get task links

delete_task_link

Remove a task link

add_task_dependency

Set a blocking dependency between tasks

delete_task_dependency

Remove a blocking dependency between tasks

Attachments

list_attachments

List attachments for a task or file custom field (v3)

get_attachment

Get a specific attachment by ID or name (v3)

upload_attachment

Upload a file to a task or file custom field (v3)

Checklists

create_checklist

Add a checklist to a task

edit_checklist

Rename or reorder a checklist

delete_checklist

Delete a checklist and all its items

create_checklist_item

Add an item to a checklist

edit_checklist_item

Update a checklist item (name, resolved, assignee, nesting)

delete_checklist_item

Remove an item from a checklist

Sprints

get_active_sprint

Auto-detect the currently active sprint; returns tasks if exactly one found

list_sprints

List all sprints in a folder

get_sprint_tasks

Get tasks for a specific sprint list

Lists

list_lists

Retrieve lists in a space (folderless) or in a folder

get_list

Get list details

create_list

Create a list in a space or folder

create_list_from_template

Create a new list from a template

update_list

Update list properties

delete_list

Delete a list

move_list

Move a list to a different space or folder (high-integrity)

set_list_permissions

Update list privacy and sharing (ACLs)

Custom Fields

list_custom_fields

List field definitions for a list, folder, or space

create_custom_field

Add a new field definition to a list

set_custom_field_value

Set a field value on a task

remove_custom_field_value

Clear a field value from a task

Spaces

list_spaces

List all spaces in the workspace

get_space

Get space details

create_space

Create a new space

update_space

Update space properties

delete_space

Delete a space

set_space_permissions

Update space privacy and sharing (ACLs)

Goals

list_goals

List all goals in the workspace

get_goal

Get a goal with its key results

create_goal

Create a new goal

update_goal

Update a goal's properties

delete_goal

Delete a goal

create_key_result

Add a key result to a goal

update_key_result

Update a key result

delete_key_result

Delete a key result

Views

list_views

List views for a space, folder, list, or workspace

get_view

Get a single view

create_view

Create a new view

update_view

Update a view

delete_view

Delete a view

get_view_tasks

Get tasks in a view

Folders

list_folders

List all folders in a space

get_folder

Get folder details and its contained lists

create_folder

Create a folder in a space

update_folder

Update folder properties

delete_folder

Delete a folder

move_folder

Move a folder to a different space (high-integrity)

set_folder_permissions

Update folder privacy and sharing (ACLs)

create_folder_from_template

Create a folder from a template in a space

Tags

list_space_tags

List all tags in a space

create_space_tag

Create a new space tag

update_space_tag

Update a space tag's name or colors

delete_space_tag

Delete a tag from a space

add_tag_to_task

Add tag to task

remove_tag_from_task

Remove tag from task

Time Tracking

get_time_entries

Fetch historical time entries

get_current_time_entry

Get currently running timer

start_time_entry

Start tracking time for a task

stop_time_entry

Stop the active timer

add_time_entry

Manually log a time entry

update_time_entry

Modify an existing time entry

delete_time_entry

Delete a time entry

get_time_entry_tags

Fetch all workspace time entry tags

add_time_entry_tags

Add a tag to a time entry

update_time_entry_tags

Rename a workspace time entry tag globally

delete_time_entry_tags

Remove a tag from a time entry

get_time_entry_history

View edit history of a time entry

get_time_in_status

Get time-in-status for multiple tasks

Docs

list_documents

List documents in a workspace or container

get_document

Get document metadata

create_document

Create a new standalone document

list_document_pages

List all pages in a document

get_document_page

Get content for a single page

get_document_pages

Get content for multiple pages in one call

create_document_page

Add a new page to a document

update_document_page

Modify an existing page (replace/append/prepend)

Chat

list_chat_channels

List all channels in the workspace

get_chat_channel

Get a single channel

create_chat_channel

Create a new channel

update_chat_channel

Update a channel

delete_chat_channel

Delete a channel

get_chat_channel_members

Get members of a channel

get_chat_channel_followers

Get followers of a channel

create_chat_dm

Create a direct message channel

get_chat_messages

Get messages from a channel

create_chat_message

Send a message to a channel

update_chat_message

Edit a message

delete_chat_message

Delete a message

get_chat_message_replies

Get threaded replies to a message

create_chat_message_reply

Reply to a message in a thread

add_chat_reaction

Add an emoji reaction to a message

remove_chat_reaction

Remove an emoji reaction

get_chat_reactions

Get all reactions on a message

get_chat_tagged_users

Get users tagged in a message

get_chat_message_subtypes

Get post subtype IDs for the workspace

Webhooks

list_webhooks

List all webhooks in the workspace

create_webhook

Create a new webhook

update_webhook

Update an existing webhook

delete_webhook

Delete a webhook permanently

User Groups

list_user_groups

List all user groups in the workspace

create_user_group

Create a new user group

update_user_group

Rename a group or add/remove members

delete_user_group

Delete a user group

Guests

invite_guest

Invite a guest to the workspace (Enterprise)

get_guest

Get guest details (Enterprise)

edit_guest

Edit guest display name or permissions (Enterprise)

remove_guest

Remove a guest from the workspace (Enterprise)

add_guest_to_task

Grant guest access to a task (Enterprise)

remove_guest_from_task

Revoke guest access from a task (Enterprise)

add_guest_to_list

Grant guest access to a list (Enterprise)

remove_guest_from_list

Revoke guest access from a list (Enterprise)

add_guest_to_folder

Grant guest access to a folder (Enterprise)

remove_guest_from_folder

Revoke guest access from a folder (Enterprise)

Task Templates

get_task_templates

List available workspace templates

create_task_from_template

Create a task from a template

Feedback

submit_feedback

Submit feedback or bug reports

See full documentation for parameters and advanced usage.


⚙️ Advanced Configuration

Filter Available Tools

💡 Pro Tip! Reduce context noise for the AI by limiting available tools. There are 3 ways to do this. You can filter by exact tool name, by tool category, by personas (presets), or a combination of all three.

Local (Environment Variable):

"ENABLED_TOOLS": "tool_1,tool_2,tool_3",
"ENABLED_CATEGORIES": "task,time_tracking,workspace"

-or- Remote (Header):

"X-Enabled-Tools": "tool_1,tool_2,tool_3",
"X-Enabled-Categories": "task,time_tracking,workspace"

Preset Configurations

Simplify setup by using Personas. You can set a persona via the CLICKUP_MCP_PERSONA environment variable or the X-Persona HTTP header to automatically filter a set of tools.

Multiple personas can be combined (e.g., "X-Persona": "task_worker,time_specialist").

Local (Environment Variable):

"CLICKUP_MCP_PERSONA": "task_worker"

-or- Remote (Header):

"X-Persona": "task_worker"

💡 Need to customize? To view the exact tools included in each preset or to build a custom list based on a persona, see the Personas Reference Guide.


🌍 Multi-Workspace Support

Simultaneously federate OAuth and multiple API keys to manage tasks across different authorized ClickUp accounts/workspaces in a single session. Easily move or duplicate tasks between workspaces, configure AI Agents for cross-workspace automation, and more.

Remote (Headers):

{
  "mcpServers": {
    "ClickUp": {
      "url": "https://clickup-mcp.taazkareem.com/mcp",
      "headers": {
        "X-License-Key": "your-license-key",
        "X-ClickUp-Additional-Keys": "shared_ws_api_key1,shared_ws_api_key2"
      }
    }
  }
}

❓ FAQ

Why isn't this free anymore? Building reliable MCP integrations requires significant maintenance. Moving to a paid model allows us to support this as a product rather than a hobby, ensuring compatibility with API changes.

I have an old version. Will it stop working? Existing local clones will continue to work, but you will not receive updates, bug fixes, or support without a license.

How do I get support? Premium users get priority support. Please open an issue in this repository.


⚖️ Disclaimer

Originally developed as open source and refined during a consultancy with ClickUp, this project is now independently maintained.

This software makes use of third-party APIs and may reference trademarks or brands owned by third parties. The use of such APIs or references does not imply any affiliation with or endorsement by the respective companies. All trademarks and brand names are the property of their respective owners. This project is an independent work and is not officially associated with or sponsored by any third-party company mentioned.

Install Server
F
license - not found
-
quality - not tested
B
maintenance

Maintenance

Maintainers
12hResponse time
Release cycle
Releases (12mo)
Issues opened vs closed

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/taazkareem/clickup-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server