JSPM

  • Created
  • Published
  • Downloads 22536
  • Score
    100M100P100Q166582F
  • License UNLICENSED

ClickUp MCP Server - Integrate ClickUp tasks with AI through Model Context Protocol

Package Exports

  • @taazkareem/clickup-mcp-server
  • @taazkareem/clickup-mcp-server/build/index.js

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@taazkareem/clickup-mcp-server) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

ClickUp MCP Server

ClickUp MCP Server

🔒 Premium Version - Requires license key from Polar.sh

License Maintained

A Model Context Protocol (MCP) server for integrating ClickUp tasks with AI applications. This server allows AI agents to interact with ClickUp tasks, spaces, lists, and folders through a standardized protocol.

🚀 Quick Start

1. Get Your License Key

Purchase a license at polar.sh/taazkareem

2. Add to Your MCP Configuration

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

3. Restart Your MCP Client

That's it! The server will validate your license key and start automatically.

📖 Full Installation Guide for detailed setup instructions.

Requirements

  • Node.js v18.0.0 or higher (required for MCP SDK compatibility)
  • Valid license key from Polar.sh
  • ClickUp API key and Team ID

Configuration

Getting Your ClickUp Credentials

  1. ClickUp API Key:

  2. ClickUp Team ID:

    • This is the first UUID in your ClickUp workspace URL when viewing it in your browser
    • Example: In https://app.clickup.com/[TEAM_ID]/v/l/[PROJECT_ID], use the [TEAM_ID] portion
    • Note: ClickUp's API documentation refers to this as team_id, but it actually represents your Workspace ID (this naming is due to legacy API design)
    • For reference: In ClickUp's API, team_id = Workspace ID, and group_id = Team (group of users)

Tool Filtering

You can control which tools are available using two complementary environment variables:

Use ENABLED_TOOLS to specify exactly which tools should be available:

# Environment variable
export ENABLED_TOOLS="create_task,get_task,update_task,get_workspace_hierarchy"

# Command line argument
--env ENABLED_TOOLS=create_task,get_task,update_task,get_workspace_hierarchy

DISABLED_TOOLS (Legacy)

Use DISABLED_TOOLS to disable specific tools while keeping all others enabled:

# Environment variable
export DISABLED_TOOLS="delete_task,delete_bulk_tasks"

# Command line argument
--env DISABLED_TOOLS=delete_task,delete_bulk_tasks

Precedence Rules

  • If ENABLED_TOOLS is specified, only those tools will be available (takes precedence over DISABLED_TOOLS)
  • If only DISABLED_TOOLS is specified, all tools except those listed will be available
  • If neither is specified, all tools are available (default behavior)

Example:

# Only enable task creation and reading tools
npx -y @taazkareem/clickup-mcp-server@latest \
  --env CLICKUP_API_KEY=your-api-key \
  --env CLICKUP_TEAM_ID=your-team-id \
  --env ENABLED_TOOLS=create_task,get_task,get_workspace_hierarchy

Please filter tools you don't need if you are having issues with the number of tools or any context limitations.

Running with HTTP Transport Support

The server supports both modern HTTP Streamable transport (MCP Inspector compatible) and legacy SSE (Server-Sent Events) transport for backwards compatibility.

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

Endpoints:

  • Primary: http://127.0.0.1:3231/mcp (Streamable HTTP)
  • Legacy: http://127.0.0.1:3231/sse (SSE for backwards compatibility)

Command Line Usage

```bash
npx -y @taazkareem/clickup-mcp-server@latest --env CLICKUP_API_KEY=your-api-key --env CLICKUP_TEAM_ID=your-team-id --env ENABLE_SSE=true --env PORT=3231 --env HOST=0.0.0.0

Available configuration options:

Option Description Default
ENABLED_TOOLS Comma-separated list of tools to enable (takes precedence) All tools
DISABLED_TOOLS Comma-separated list of tools to disable None
ENABLE_SSE Enable the HTTP/SSE transport false
PORT Port for the HTTP server 3231
HOST Binding address (use 0.0.0.0 for Docker/external) 127.0.0.1
ENABLE_STDIO Enable the STDIO transport true
ENABLE_SECURITY_FEATURES Enable security headers and logging false
ENABLE_HTTPS Enable HTTPS/TLS encryption false
ENABLE_ORIGIN_VALIDATION Validate Origin header against whitelist false
ENABLE_RATE_LIMIT Enable rate limiting protection false

🔒 Security Features

The server includes optional security enhancements for production deployments. All security features are opt-in and disabled by default to maintain backwards compatibility.

Quick security setup:

# Generate SSL certificates for HTTPS
./scripts/generate-ssl-cert.sh

# Start with full security
ENABLE_SECURITY_FEATURES=true \
ENABLE_HTTPS=true \
ENABLE_ORIGIN_VALIDATION=true \
ENABLE_RATE_LIMIT=true \
SSL_KEY_PATH=./ssl/server.key \
SSL_CERT_PATH=./ssl/server.crt \
npx @taazkareem/clickup-mcp-server@latest --env CLICKUP_API_KEY=your-key --env CLICKUP_TEAM_ID=your-team --env ENABLE_SSE=true

HTTPS Endpoints:

  • Primary: https://127.0.0.1:3443/mcp (Streamable HTTPS)
  • Legacy: https://127.0.0.1:3443/sse (SSE HTTPS for backwards compatibility)
  • Health: https://127.0.0.1:3443/health (Health check)

For detailed security configuration, see Security Features Documentation.

n8n Integration

To integrate with n8n:

  1. Start the clickup-mcp-server with SSE enabled
  2. In n8n, add a new "MCP AI Tool" node
  3. Configure the node with:
    • Transport: SSE
    • Server URL: http://localhost:3231 (or your server address)
    • Tools: Select the ClickUp tools you want to use

Example Client

An example SSE client is provided in the examples directory. To run it:

# Start the server with SSE enabled
ENABLE_SSE=true PORT=3231 npx -y @taazkareem/clickup-mcp-server@latest --env CLICKUP_API_KEY=your-api-key --env CLICKUP_TEAM_ID=your-team-id

# In another terminal, run the example client
cd examples
npm install
npm run sse-client

Features

📝 Task Management 🏷️ Tag Management
• Create, update, and delete tasks
• Move and duplicate tasks anywhere
• Support for single and bulk operations
• Set start/due dates with natural language
• Create and manage subtasks
• Add comments and attachments
• Link tasks and manage dependencies
• Create, update, and delete space tags
• Add and remove tags from tasks
• Use natural language color commands
• Automatic contrasting foreground colors
• View all space tags
• Tag-based task organization across workspace
⏱️ Time Tracking 🌳 Workspace Organization
• View time entries for tasks
• Start/stop time tracking on tasks
• Add manual time entries
• Delete time entries
• View currently running timer
• Track billable and non-billable time
• Navigate spaces, folders, and lists
• Create and manage folders
• Organize lists within spaces
• Create lists in folders
• View workspace hierarchy
• Efficient path navigation
📄 Document Management 👥 Member Management
• Document Listing through all workspace
• Document Page listing
• Document Page Details
• Document Creation
• Document page update (append & prepend)
• Find workspace members by name or email
• Resolve assignees for tasks
• View member details and permissions
• Assign tasks to users during creation and updates
• Support for user IDs, emails, or usernames
• Team-wide user management
Integration Features 🏗️ Architecture & Performance
• Global name or ID-based lookups
• Case-insensitive matching
• Markdown formatting support
• Built-in rate limiting
• Error handling and validation
• Comprehensive API coverage
70% codebase reduction for improved performance
Unified architecture across all transport types
Zero code duplication
HTTP Streamable transport (MCP Inspector compatible)
Legacy SSE support for backwards compatibility

Available Tools (50 Total)

Tool Description Required Parameters
get_workspace_hierarchy Get workspace structure None
create_task Create a task name, (listId/listName)
create_bulk_tasks Create multiple tasks tasks[]
update_task Modify task taskId/taskName
update_bulk_tasks Update multiple tasks tasks[] with IDs or names
get_tasks Get tasks from list listId/listName
get_task Get single task details taskId/taskName (with smart disambiguation)
get_workspace_tasks Get tasks with filtering At least one filter (tags, list_ids, space_ids, etc.)
get_task_comments Get comments on a task taskId/taskName, include_replies
create_task_comment Add a comment to a task commentText, (taskId/(taskName+listName))
attach_task_file Attach file to a task taskId/taskName, (file_data or file_url)
delete_task Remove task taskId/taskName
delete_bulk_tasks Remove multiple tasks tasks[] with IDs or names
move_task Move task taskId/taskName, listId/listName
move_bulk_tasks Move multiple tasks tasks[] with IDs or names, target list
duplicate_task Copy task taskId/taskName, listId/listName
add_task_link Link two tasks together taskId/taskName, targetTaskId/targetTaskName
get_task_links Get all links for a task taskId/taskName
delete_task_link Remove a task link taskId/taskName, linkId/targetTaskName
create_list Create list in space name, spaceId/spaceName
create_folder Create folder name, spaceId/spaceName
create_list_in_folder Create list in folder name, folderId/folderName
get_folder Get folder details folderId/folderName
update_folder Update folder properties folderId/folderName
delete_folder Delete folder folderId/folderName
get_list Get list details listId/listName
update_list Update list properties listId/listName
delete_list Delete list listId/listName
get_space_tags Get space tags spaceId/spaceName
create_space_tag Create tag tagName, spaceId/spaceName
update_space_tag Update tag tagName, spaceId/spaceName
delete_space_tag Delete tag tagName, spaceId/spaceName
add_tag_to_task Add tag to task tagName, taskId/(taskName+listName)
remove_tag_from_task Remove tag from task tagName, taskId/(taskName+listName)
get_task_time_entries Get time entries for a task taskId/taskName
start_time_tracking Start time tracking on a task taskId/taskName
stop_time_tracking Stop current time tracking None
add_time_entry Add manual time entry to a task taskId/taskName, start, duration
delete_time_entry Delete a time entry timeEntryId
get_current_time_entry Get currently running timer None
get_workspace_members Get all workspace members None
find_member_by_name Find member by name or email nameOrEmail
resolve_assignees Resolve member names to IDs assignees[]
create_document Create a document workspaceId, name, parentId/parentType, visibility, create_pages
get_document Get a document workspaceId/documentId
list_documents List documents workspaceId, documentId/creator/deleted/archived/parent_id/parent_type/limit/next_cursor
list_document_pages List document pages documentId/documentName
get_document_pages Get document pages documentId/documentName, pageIds
create_document_pages Create a document page workspaceId/documentId, parent_page_id/name/sub_title,content/content_format
update_document_page Update a document page workspaceId/documentId, name/sub_title,content/content_edit_mode/content_format

See full documentation for optional parameters and advanced usage.

Member Management Tools

When creating or updating tasks, you can assign users using the assignees parameter. The parameter accepts an array of user IDs, emails, or usernames:

Creating tasks with assignees:

{
  "name": "New Task",
  "description": "This is a new task.",
  "assignees": ["jdoe@example.com", "Jane Smith"]  // Emails, usernames, or user IDs
}

Updating task assignees:

{
  "taskId": "abc123",
  "assignees": ["newuser@example.com"]  // Replace existing assignees
}

The member management tools help resolve user references when needed.

Prompts

Not yet implemented and not supported by all client apps. Request a feature for a Prompt implementation that would be most beneficial for your workflow (without it being too specific). Examples:

Prompt Purpose Features
summarize_tasks Task overview Status summary, priorities, relationships
analyze_priorities Priority optimization Distribution analysis, sequencing
generate_description Task description creation Objectives, criteria, dependencies

Error Handling

The server provides clear error messages for:

  • Missing required parameters
  • Invalid IDs or names
  • Items not found
  • Permission issues
  • API errors
  • Rate limiting

The LOG_LEVEL environment variable can be specified to control the verbosity of server logs. Valid values are trace, debug, info, warn, and error (default). This can be also be specified on the command line as, e.g. --env LOG_LEVEL=info.

Premium Support

As a premium user, you have access to:

  • Priority Support: Open issues directly in this private repository
  • Feature Requests: Request new features and capabilities
  • Automatic Updates: Pull the latest features and bug fixes
  • Direct Communication: Get help from the maintainer

To get support, open an issue in this repository.

Acknowledgements

Special thanks to ClickUp for their excellent API and services that make this integration possible.

Thank you to all supporters who make continued development possible! 🙏

License

License

This project is licensed under a proprietary license - see the LICENSE file for details.

All Rights Reserved - Unauthorized copying, modification, distribution, or use is strictly prohibited.

Disclaimer

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.