New:Introducing Socket Scanning for VS Code Marketplace Extensions.Learn more →
Get Started

@griffinwork40/clickup-mcp-server

Package Overview
Dependencies
Maintainers
1
Versions
7
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@griffinwork40/clickup-mcp-server

MCP server for ClickUp API integration - manage tasks, projects, and workflows

latest
Source
npmnpm
Version
1.1.6
Version published
Maintainers
1
Created
Source

ClickUp MCP Server

npm version License: MIT

A Model Context Protocol (MCP) server that provides comprehensive integration with the ClickUp API. This server enables LLMs like Claude to manage tasks, projects, teams, and workflows programmatically.

Table of Contents

Features

Organization & Hierarchy

  • List teams/workspaces
  • Browse spaces, folders, and lists
  • Get list details including statuses and custom fields

Task Management

  • Create, read, update, and delete tasks
  • Set task status, priority, assignees, and due dates
  • Manage task descriptions and details
  • Count tasks by status with pagination handling
  • Export tasks to CSV format

Search & Collaboration

  • Search tasks across teams with filters
  • Add and retrieve comments on tasks

Advanced Features

  • Set custom field values
  • Track time on tasks
  • Get time entries
  • Export to CSV with E.164 phone number normalization

Installation

From npm

npm install -g @griffinwork40/clickup-mcp-server

From source

git clone https://github.com/griffinwork40/clickup-mcp.git
cd clickup-mcp
npm install
npm run build

Configuration

Environment Variables

VariableRequiredDescription
CLICKUP_API_TOKENYesYour ClickUp API token (starts with pk_)

Getting Your API Token

Setting the Environment Variable

Linux/macOS:

export CLICKUP_API_TOKEN="pk_your_token_here"

Windows (Command Prompt):

set CLICKUP_API_TOKEN=pk_your_token_here

Windows (PowerShell):

$env:CLICKUP_API_TOKEN="pk_your_token_here"

Usage

Running the Server

Standalone mode:

# If installed globally
clickup-mcp

# If installed from source
npm start

Development mode with auto-reload:

npm run dev

Claude Desktop Integration

Add the following to your Claude Desktop configuration file:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json Windows: %APPDATA%\Claude\claude_desktop_config.json Linux: ~/.config/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "clickup": {
      "command": "node",
      "args": ["/path/to/clickup-mcp-server/dist/index.js"],
      "env": {
        "CLICKUP_API_TOKEN": "pk_your_token_here"
      }
    }
  }
}

Using npx (no installation required):

{
  "mcpServers": {
    "clickup": {
      "command": "npx",
      "args": ["-y", "@griffinwork40/clickup-mcp-server"],
      "env": {
        "CLICKUP_API_TOKEN": "pk_your_token_here"
      }
    }
  }
}

Cursor IDE Integration

Add to your Cursor MCP settings (.cursor/mcp.json in your project or global settings):

{
  "mcpServers": {
    "clickup": {
      "command": "npx",
      "args": ["-y", "@griffinwork40/clickup-mcp-server"],
      "env": {
        "CLICKUP_API_TOKEN": "pk_your_token_here"
      }
    }
  }
}

API Reference

Organization Tools

clickup_get_teams

List all teams/workspaces accessible to the authenticated user.

Parameters:

NameTypeRequiredDescription
response_format"markdown" | "json"NoOutput format (default: "markdown")

Example:

{
  "tool": "clickup_get_teams",
  "arguments": {
    "response_format": "json"
  }
}

clickup_get_spaces

Get all spaces in a team/workspace.

Parameters:

NameTypeRequiredDescription
team_idstringYesTeam/workspace ID
archivedbooleanNoInclude archived spaces (default: false)
response_format"markdown" | "json"NoOutput format (default: "markdown")

Example:

{
  "tool": "clickup_get_spaces",
  "arguments": {
    "team_id": "123456",
    "archived": false
  }
}

clickup_get_folders

Get all folders in a space.

Parameters:

NameTypeRequiredDescription
space_idstringYesSpace ID
archivedbooleanNoInclude archived folders (default: false)
response_format"markdown" | "json"NoOutput format (default: "markdown")

clickup_get_lists

Get all lists in a folder or space.

Parameters:

NameTypeRequiredDescription
folder_idstringNo*Folder ID
space_idstringNo*Space ID (for folderless lists)
archivedbooleanNoInclude archived lists (default: false)
response_format"markdown" | "json"NoOutput format (default: "markdown")

*Must provide either folder_id OR space_id, but not both.

clickup_get_list_details

Get detailed information about a specific list, including available statuses and custom fields.

Parameters:

NameTypeRequiredDescription
list_idstringYesList ID
response_format"markdown" | "json"NoOutput format (default: "markdown")

Task Management Tools

clickup_get_tasks

Get tasks in a specific list with filtering and pagination.

Parameters:

NameTypeRequiredDescription
list_idstringYesList ID
archivedbooleanNoInclude archived tasks (default: false)
include_closedbooleanNoInclude closed tasks (default: false)
statusesstring[]NoFilter by status names
assigneesnumber[]NoFilter by assignee IDs
limitnumberNoMax results 1-100 (default: 20)
offsetnumberNoPagination offset (default: 0)
response_format"markdown" | "json"NoOutput format (default: "markdown")
response_mode"full" | "compact" | "summary"NoDetail level (default: "full")

Example:

{
  "tool": "clickup_get_tasks",
  "arguments": {
    "list_id": "123456",
    "statuses": ["in progress", "review"],
    "response_mode": "compact",
    "limit": 50
  }
}

clickup_get_task

Get detailed information about a specific task.

Parameters:

NameTypeRequiredDescription
task_idstringYesTask ID
response_format"markdown" | "json"NoOutput format (default: "markdown")

clickup_create_task

Create a new task in a list.

Parameters:

NameTypeRequiredDescription
list_idstringYesList ID
namestringYesTask name
descriptionstringNoTask description (markdown supported)
statusstringNoTask status (must match list statuses)
priority1-4NoPriority: 1=Urgent, 2=High, 3=Normal, 4=Low
assigneesnumber[]NoAssignee user IDs
due_datenumberNoDue date (Unix timestamp in milliseconds)
start_datenumberNoStart date (Unix timestamp in milliseconds)
tagsstring[]NoTag names
response_format"markdown" | "json"NoOutput format (default: "markdown")

Example:

{
  "tool": "clickup_create_task",
  "arguments": {
    "list_id": "123456",
    "name": "Implement user authentication",
    "description": "Add OAuth2 login support for Google and GitHub",
    "priority": 2,
    "status": "to do",
    "assignees": [12345678],
    "tags": ["feature", "security"]
  }
}

clickup_update_task

Update an existing task's properties.

Parameters:

NameTypeRequiredDescription
task_idstringYesTask ID
namestringNoNew task name
descriptionstringNoNew description
statusstringNoNew status
priority1-4NoNew priority
assignees_addnumber[]NoUser IDs to add as assignees
assignees_remnumber[]NoUser IDs to remove from assignees
due_datenumberNoNew due date (Unix timestamp)
response_format"markdown" | "json"NoOutput format (default: "markdown")

Example:

{
  "tool": "clickup_update_task",
  "arguments": {
    "task_id": "abc123",
    "status": "in progress",
    "priority": 1,
    "assignees_add": [12345678]
  }
}

clickup_delete_task

Delete a task permanently. ⚠️ This action cannot be undone.

Parameters:

NameTypeRequiredDescription
task_idstringYesTask ID to delete

clickup_count_tasks_by_status

Count tasks in a list by status. Handles pagination internally for accurate counts.

Parameters:

NameTypeRequiredDescription
list_idstringYesList ID
statusesstring[]NoFilter by specific status names
archivedbooleanNoInclude archived tasks (default: false)
include_closedbooleanNoInclude closed tasks (default: false)
response_format"markdown" | "json"NoOutput format (default: "markdown")

Example:

{
  "tool": "clickup_count_tasks_by_status",
  "arguments": {
    "list_id": "123456",
    "statuses": ["#1 - phone call", "#2 - follow up"]
  }
}

clickup_export_tasks_to_csv

Export tasks from a list to CSV format with custom field support.

Parameters:

NameTypeRequiredDescription
list_idstringYesList ID
statusesstring[]NoFilter by status names
archivedbooleanNoInclude archived tasks (default: false)
include_closedbooleanNoInclude closed tasks (default: false)
custom_fieldsstring[]NoSpecific custom field names to include
include_standard_fieldsbooleanNoInclude standard fields (default: true)
add_phone_number_columnbooleanNoAdd E.164 formatted phone column (default: false)

Example:

{
  "tool": "clickup_export_tasks_to_csv",
  "arguments": {
    "list_id": "123456",
    "statuses": ["#1 - phone call"],
    "custom_fields": ["Email", "Company", "Phone"],
    "add_phone_number_column": true
  }
}

Search & Comments Tools

clickup_search_tasks

Search for tasks across a team with advanced filtering.

Parameters:

NameTypeRequiredDescription
team_idstringYesTeam ID to search in
querystringNoSearch query string
statusesstring[]NoFilter by status names
assigneesnumber[]NoFilter by assignee IDs
tagsstring[]NoFilter by tag names
date_created_gtnumberNoCreated after (Unix timestamp)
date_updated_gtnumberNoUpdated after (Unix timestamp)
limitnumberNoMax results 1-100 (default: 20)
offsetnumberNoPagination offset (default: 0)
response_format"markdown" | "json"NoOutput format (default: "markdown")
response_mode"full" | "compact" | "summary"NoDetail level (default: "full")

Example:

{
  "tool": "clickup_search_tasks",
  "arguments": {
    "team_id": "123456",
    "query": "authentication",
    "statuses": ["in progress", "to do"],
    "response_mode": "compact"
  }
}

clickup_add_comment

Add a comment to a task.

Parameters:

NameTypeRequiredDescription
task_idstringYesTask ID
comment_textstringYesComment text (markdown supported)
notify_allbooleanNoNotify all task watchers (default: false)

Example:

{
  "tool": "clickup_add_comment",
  "arguments": {
    "task_id": "abc123",
    "comment_text": "Great progress! Ready for review.",
    "notify_all": true
  }
}

clickup_get_comments

Get all comments on a task.

Parameters:

NameTypeRequiredDescription
task_idstringYesTask ID
response_format"markdown" | "json"NoOutput format (default: "markdown")

Advanced Tools

clickup_set_custom_field

Set a custom field value on a task.

Parameters:

NameTypeRequiredDescription
task_idstringYesTask ID
field_idstringYesCustom field ID
valueanyYesValue to set (format depends on field type)

Value formats by field type:

  • Text/URL/Email: "string value"
  • Number/Currency: 123
  • Date: Unix timestamp in milliseconds
  • Dropdown: "option_uuid"
  • Checkbox: true or false

Example:

{
  "tool": "clickup_set_custom_field",
  "arguments": {
    "task_id": "abc123",
    "field_id": "cf_123456",
    "value": "completed"
  }
}

clickup_start_time_entry

Start tracking time on a task.

Parameters:

NameTypeRequiredDescription
team_idstringYesTeam ID
task_idstringYesTask ID
descriptionstringNoDescription of work

clickup_stop_time_entry

Stop the currently running time entry.

Parameters:

NameTypeRequiredDescription
team_idstringYesTeam ID

clickup_get_time_entries

Get time tracking entries for a team.

Parameters:

NameTypeRequiredDescription
team_idstringYesTeam ID
assigneenumberNoFilter by assignee user ID
start_datenumberNoFilter after date (Unix timestamp)
end_datenumberNoFilter before date (Unix timestamp)
response_format"markdown" | "json"NoOutput format (default: "markdown")

Examples

Get Team Structure

"List all my ClickUp teams and their spaces"

The assistant will call clickup_get_teams followed by clickup_get_spaces for each team.

Create and Assign a Task

"Create a task called 'Fix login bug' in list 123456, assign it to user 789, and set it as urgent"
{
  "tool": "clickup_create_task",
  "arguments": {
    "list_id": "123456",
    "name": "Fix login bug",
    "priority": 1,
    "assignees": [789]
  }
}

Search for Tasks

"Find all in-progress tasks about authentication in team 123456"
{
  "tool": "clickup_search_tasks",
  "arguments": {
    "team_id": "123456",
    "query": "authentication",
    "statuses": ["in progress"]
  }
}

Export Leads to CSV

"Export all leads with status '#1 - phone call' from list 123456 to CSV with phone numbers"
{
  "tool": "clickup_export_tasks_to_csv",
  "arguments": {
    "list_id": "123456",
    "statuses": ["#1 - phone call"],
    "add_phone_number_column": true
  }
}

Response Formats

All tools support two response formats:

FormatDescriptionUse Case
markdownHuman-readable formatted textDefault, best for conversational AI
jsonStructured JSON dataProgrammatic processing

Response Modes (Task Tools)

Task-related tools also support response modes:

ModeDescriptionUse Case
fullComplete task details with all fieldsIndividual task inspection
compactEssential fields only (id, name, status, assignees)Large result sets
summaryStatistical overview by status/assigneeQuick status reports

Rate Limits

ClickUp API rate limits vary by plan:

PlanRequests/Minute
Free/Unlimited100
Business100
Business Plus1,000
Enterprise10,000

The server includes automatic error handling for rate limit responses (HTTP 429).

Development

Prerequisites

  • Node.js 18 or higher
  • npm or yarn

Building

npm run build

Running Tests

npm test

Test with Coverage

npm run test:coverage

Clean Build

npm run clean
npm run build

Project Structure

clickup-mcp/
├── src/
│   ├── index.ts      # MCP server entry point and tool definitions
│   ├── constants.ts  # Configuration constants and enums
│   ├── types.ts      # TypeScript type definitions
│   └── utils.ts      # Utility functions for API and formatting
├── dist/             # Compiled JavaScript output
├── package.json
├── tsconfig.json
└── README.md

Contributing

  • Fork the repository
  • Create your feature branch (git checkout -b feature/amazing-feature)
  • Make your changes with appropriate tests
  • Run lint and tests (npm test)
  • Commit your changes (git commit -m 'Add amazing feature')
  • Push to the branch (git push origin feature/amazing-feature)
  • Open a Pull Request

Coding Standards

  • Use TypeScript strict mode
  • Include JSDoc comments for all public functions
  • Follow existing code style and patterns
  • Write tests for new functionality

License

MIT License - see LICENSE file for details.

Keywords

mcp

FAQs

Package last updated on 28 Dec 2025

Related posts