clickup-mcp-server

clickup-mcp-server

170

The ClickUp MCP Server is a tool for integrating ClickUp task management with AI applications, allowing seamless interaction with tasks, spaces, lists, and folders. It supports task, tag, and time management functionalities, providing flexible installation options and comprehensive API coverage.

ClickUp MCP Server

Total Supporters GitHub Stars Maintenance

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.

🚀 Status Update: v0.7.2 now available with complete Time Tracking support and Document Management features.

Setup

  1. Get your credentials:
  2. Choose either hosted installation (sends webhooks) or NPX installation (downloads to local path and installs dependencies)
  3. Use natural language to manage your workspace!

Smithery Installation (Quick Start)

smithery badge

The server is hosted on Smithery. There, you can preview the available tools or copy the commands to run on your specific client app.

NPX Installation

NPM Version Dependency Status NPM Downloads

Add this entry to your client's MCP settings JSON file:

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

Or use this npx command:

npx -y @taazkareem/clickup-mcp-server@latest --env CLICKUP_API_KEY=your-api-key --env CLICKUP_TEAM_ID=your-team-id

Obs: if you don't pass "DOCUMENT_SUPPORT": "true", the default is false and document support will not be active.

Additionally, you can use the DISABLED_TOOLS environment variable or --env DISABLED_TOOLS argument to disable specific tools. Provide a comma-separated list of tool names to disable (e.g., create_task,delete_task).

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

Running with SSE Support

Server can be run in SSE (Server-Sent Events) mode by setting the following environment variables:

{
  "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": "8000"  // Optional, defaults to 3231
      }
    }
  }
}

Or via command line:

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=8000

Docker-compose example

version: '3.8'

services:
  clickup-mcp-server:
    build:
      context: .
      dockerfile: Dockerfile
    ports:
      - '3231:8000'
    environment:
      - CLICKUP_API_KEY=${CLICKUP_API_KEY}
      - CLICKUP_TEAM_ID=${CLICKUP_TEAM_ID}
      - ENABLE_SSE=true
      - LOG_LEVEL=info
      - DOCUMENT_SUPPORT=true
    volumes:
      - ./src:/app/src
    restart: unless-stopped
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:8000/health"]
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 5s

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
• 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
• Support for user IDs, emails, or usernames
• Team-wide user management
Integration Features
• Global name or ID-based lookups
• Case-insensitive matching
• Markdown formatting support
• Built-in rate limiting
• Error handling and validation
• Comprehensive API coverage

Available Tools

ToolDescriptionRequired Parameters
Get workspace structureNone
Create a taskname, (listId/listName)
Create multiple taskstasks[]
Modify tasktaskId/taskName
Update multiple taskstasks[] with IDs or names
Get tasks from listlistId/listName
Get single task detailstaskId/taskName (with smart disambiguation)
Get tasks with filteringAt least one filter (tags, list_ids, space_ids, etc.)
Get comments on a tasktaskId/taskName
Add a comment to a taskcommentText, (taskId/(taskName+listName))
Attach file to a tasktaskId/taskName, (file_data or file_url)
Remove tasktaskId/taskName
Remove multiple taskstasks[] with IDs or names
Move tasktaskId/taskName, listId/listName
Move multiple taskstasks[] with IDs or names, target list
Copy tasktaskId/taskName, listId/listName
Create list in spacename, spaceId/spaceName
Create foldername, spaceId/spaceName
Create list in foldername, folderId/folderName
Get folder detailsfolderId/folderName
Update folder propertiesfolderId/folderName
Delete folderfolderId/folderName
Get list detailslistId/listName
Update list propertieslistId/listName
Delete listlistId/listName
Get space tagsspaceId/spaceName
Create tagtagName, spaceId/spaceName
Update tagtagName, spaceId/spaceName
Delete tagtagName, spaceId/spaceName
Add tag to tasktagName, taskId/(taskName+listName)
Remove tag from tasktagName, taskId/(taskName+listName)
Get time entries for a tasktaskId/taskName
Start time tracking on a tasktaskId/taskName
Stop current time trackingNone
Add manual time entry to a tasktaskId/taskName, start, duration
Delete a time entrytimeEntryId
Get currently running timerNone
Get all workspace membersNone
Find member by name or emailnameOrEmail
Resolve member names to IDsassignees[]
Create a documentworkspaceId, name, parentId/parentType, visibility, create_pages
Get a documentworkspaceId/documentId
List documentsworkspaceId, documentId/creator/deleted/archived/parent_id/parent_type/limit/next_cursor
List document pagesdocumentId/documentName
Get document pagesdocumentId/documentName, pageIds
Create a document pageworkspaceId/documentId, parent_page_id/name/sub_title,content/content_format
Update a document pageworkspaceId/documentId, name/sub_title,content/content_edit_mode/content_format

See for optional parameters and advanced usage.

Member Management Tools

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

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

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:

PromptPurposeFeatures
Task overviewStatus summary, priorities, relationships
Priority optimizationDistribution analysis, sequencing
Task description creationObjectives, 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.

Support the Developer

When using this server, you may occasionally see a small sponsor message with a link to this repository included in tool responses. I hope you can support the project! If you find this project useful, please consider supporting:

Sponsor TaazKareem

Buy Me A Coffee

Acknowledgements

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

Contributing

Contributions are welcome! Please read our for details.

License

License: MIT

This project is licensed under the MIT License - see the file for details.

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.