@taazkareem/clickup-mcp-server 0.4.49 → 0.4.52

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2024 taazkareem
3
+ Copyright (c) 2025 Talib Kareem
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
@@ -18,4 +18,10 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
18
  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
19
  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
20
  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
21
+ SOFTWARE.
22
+
23
+ Disclaimer: This software makes use of third-party APIs and may reference trademarks
24
+ or brands owned by third parties. The use of such APIs or references does not imply
25
+ any affiliation with or endorsement by the respective companies. All trademarks and
26
+ brand names are the property of their respective owners. This project is an independent
27
+ work and is not officially associated with or sponsored by any third-party company mentioned.
package/README.md CHANGED
@@ -1,235 +1,94 @@
1
- # ClickUp MCP Server
1
+ <img src="https://clickup.com/assets/brand/logo-v3-clickup-dark.svg" alt="ClickUp" height="40" style="vertical-align: middle; margin-top: -4px;">
2
+
3
+ # MCP Server
2
4
 
3
5
  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.
4
6
 
5
- ## Features
7
+ ## Quick Start
6
8
 
7
- - 🔄 **Resource Management**
8
- - List and read ClickUp tasks as resources
9
- - View task details, status, and assignments
10
- - Access task history and relationships
9
+ Directions for use with Cursor Composer Agent:
11
10
 
12
- - 📂 **Workspace Organization**
13
- - Create and manage spaces
14
- - Create, update, and delete folders
15
- - Create and manage lists (in spaces or folders)
16
- - Flexible identification using IDs or names
17
-
18
- - ✨ **Task Operations**
19
- - Create single or bulk tasks
20
- - Move tasks between lists
21
- - Duplicate tasks
22
- - Set priorities and due dates
23
- - Assign team members
24
-
25
- - 📊 **Information Retrieval**
26
- - Get complete hierarchy of spaces, folders, and lists with IDs
27
- - List available statuses
28
- - Find items by name (case-insensitive)
29
- - View task relationships
30
-
31
- - 🔍 **Smart Name Resolution**
32
- - Use names instead of IDs for lists and folders
33
- - Global search across all spaces
34
- - Case-insensitive matching
35
- - Automatic location of items
36
-
37
- - 📝 **AI Integration**
38
- - Generate task descriptions with AI
39
- - Summarize tasks and analyze priorities
40
- - Get AI-powered task recommendations
41
-
42
- - 🔒 **Security**
43
- - Secure API key management
44
- - Environment-based configuration
45
-
46
- ## Installation
47
-
48
- ### Using npx
11
+ 1. Get your credentials:
12
+ - ClickUp API key from [ClickUp Settings](https://app.clickup.com/settings/apps)
13
+ - Team ID from your ClickUp workspace URL
14
+ 2. Go to Features in settings
15
+ 3. Add under MCP Servers:
49
16
  ```bash
50
- npx @taazkareem/clickup-mcp-server
51
- ```
52
-
53
- ## Configuration
54
-
55
- 1. Get your ClickUp API key from [ClickUp Settings](https://app.clickup.com/settings/apps)
56
- 2. Create a `.env` file:
57
- ```env
58
- CLICKUP_API_KEY=your_api_key_here
59
- TEAM_ID=your_team_id_here
17
+ npx -y @taazkareem/clickup-mcp-server \
18
+ --env CLICKUP_API_KEY=your_api_key_here \
19
+ --env CLICKUP_TEAM_ID=your_team_id_here
60
20
  ```
21
+ 4. Replace the credentials and click Save
22
+ 5. Use Natural Language to interact with your ClickUp Workspace!
61
23
 
62
- ## Using with Cursor AI Composer Agent
63
-
64
- To add this server to Cursor AI Composer, follow these steps:
24
+ ## Features
65
25
 
66
- 1. Go to the Features section in the settings.
67
- 2. Add the following command under MCP Servers:
26
+ - 🎯 **Task Management**
27
+ - Create, update, and delete individual tasks
28
+ - Move and duplicate tasks between lists, spaces, and folders
29
+ - Create multiple tasks in bulk
30
+ - View and modify task details and properties
68
31
 
69
- ```bash
70
- npx -y @taazkareem/clickup-mcp-server --stdio \
71
- --env CLICKUP_API_KEY=your_api_key_here \
72
- --env TEAM_ID=your_team_id_here
73
- ```
74
- 3. Replace `your_api_key_here` and `your_team_id_here` with your actual ClickUp credentials.
75
- 4. Click on 'Save' to add the server.
76
-
77
- > **Security Note**: Your API key will be stored securely and will not be exposed to AI models.
78
-
79
- ### Available Tools
80
-
81
- 1. **workspace_hierarchy**
82
- - Lists complete hierarchy of the ClickUp workspace
83
- - Shows spaces, folders, and lists with their IDs
84
- - Shows available statuses for each list
85
- - Provides a tree view of your workspace organization
86
- - No parameters required
87
-
88
- 2. **create_task**
89
- - Creates a new task in ClickUp
90
- - Required parameters:
91
- - `name`: Name of the task
92
- - Optional parameters:
93
- - `listId`: ID of the list (optional if listName provided)
94
- - `listName`: Name of the list (optional if listId provided)
95
- - `description`: Task description
96
- - `status`: Task status
97
- - `priority`: Priority level (1-4)
98
- - `dueDate`: Due date (ISO string)
99
- - `assignees`: Array of user IDs
100
-
101
- 3. **create_bulk_tasks**
102
- - Creates multiple tasks simultaneously in a list
103
- - Required parameters:
104
- - `tasks`: Array of task objects, each containing:
105
- - `name`: Name of the task (required)
106
- - `description`: Task description (optional)
107
- - `status`: Task status (optional)
108
- - `priority`: Priority level 1-4 (optional)
109
- - `dueDate`: Due date ISO string (optional)
110
- - `assignees`: Array of user IDs (optional)
111
- - Optional parameters:
112
- - `listId`: ID of the list (optional if listName provided)
113
- - `listName`: Name of the list (optional if listId provided)
114
-
115
- 4. **create_list**
116
- - Creates a new list in a space
117
- - Required parameters:
118
- - `name`: Name of the list
119
- - Optional parameters:
120
- - `spaceId`: ID of the space (optional if spaceName provided)
121
- - `spaceName`: Name of the space (optional if spaceId provided)
122
- - `content`: List description
123
- - `status`: List status
124
- - `priority`: Priority level (1-4)
125
- - `dueDate`: Due date (ISO string)
126
-
127
- 5. **create_folder**
128
- - Creates a new folder in a space
129
- - Required parameters:
130
- - `name`: Name of the folder
131
- - Optional parameters:
132
- - `spaceId`: ID of the space (optional if spaceName provided)
133
- - `spaceName`: Name of the space (optional if spaceId provided)
134
- - `override_statuses`: Whether to override space statuses
135
-
136
- 6. **create_list_in_folder**
137
- - Creates a new list within a folder
138
- - Required parameters:
139
- - `name`: Name of the list
140
- - Optional parameters:
141
- - `folderId`: ID of the folder (optional if using folderName)
142
- - `folderName`: Name of the folder
143
- - `spaceId`: ID of the space (required if using folderName)
144
- - `spaceName`: Name of the space (alternative to spaceId)
145
- - `content`: List description
146
- - `status`: List status
147
-
148
- 7. **move_task**
149
- - Moves a task to a different list
150
- - Required parameters:
151
- - `taskId`: ID of the task to move
152
- - Optional parameters:
153
- - `listId`: ID of destination list (optional if listName provided)
154
- - `listName`: Name of destination list (optional if listId provided)
155
-
156
- 8. **duplicate_task**
157
- - Creates a copy of a task in a specified list
158
- - Required parameters:
159
- - `taskId`: ID of the task to duplicate
160
- - Optional parameters:
161
- - `listId`: ID of destination list (optional if listName provided)
162
- - `listName`: Name of destination list (optional if listId provided)
163
-
164
- 9. **update_task**
165
- - Updates an existing task
166
- - Required parameters:
167
- - `taskId`: ID of the task to update
168
- - Optional parameters:
169
- - `name`: New task name
170
- - `description`: New description
171
- - `status`: New status
172
- - `priority`: New priority level (1-4)
173
- - `dueDate`: New due date (ISO string)
174
-
175
- ### Available Prompts
176
-
177
- 1. **summarize_tasks**
178
- - Provides a comprehensive summary of tasks
179
- - Groups tasks by status
180
- - Highlights priorities and deadlines
181
- - Suggests task relationships
182
-
183
- 2. **analyze_priorities**
184
- - Analyzes task priority distribution
185
- - Identifies misaligned priorities
186
- - Suggests priority adjustments
187
- - Recommends task sequencing
188
-
189
- 3. **generate_description**
190
- - Helps generate detailed task descriptions
191
- - Includes:
192
- - Clear objectives
193
- - Success criteria
194
- - Required resources
195
- - Dependencies
196
- - Potential risks
197
-
198
- ## Name Resolution
199
-
200
- Most tools support finding items by either ID or name:
201
- - Spaces can be referenced by `spaceId` or `spaceName`
202
- - Folders can be referenced by `folderId` or `folderName` (with space information)
203
- - Lists can be referenced by `listId` or found within spaces/folders
204
-
205
- Name matching is case-insensitive for convenience.
32
+ - 📂 **Workspace Organization**
33
+ - Complete workspace hierarchy (spaces, folders, lists)
34
+ - Tree structure with clear relationships
35
+ - Create and manage lists and folders
36
+ - Efficient path-based navigation
37
+
38
+ - 🔄 **Integration Features**
39
+ - Name or ID-based item lookup
40
+ - Case-insensitive name matching
41
+ - Markdown formatting support
42
+ - Built-in API rate limiting
43
+
44
+ - 🤖 **AI-Powered Analysis**
45
+ - Task status summaries and overviews
46
+ - Priority analysis and recommendations
47
+ - Structured description generation
48
+ - Task relationship mapping
49
+
50
+ ## Available Tools
51
+
52
+ | Tool | Description | Required Parameters |
53
+ |------|-------------|-------------------|
54
+ | [get_workspace_hierarchy](docs/api-reference.md#workspace-navigation) | Get workspace structure | None |
55
+ | [create_task](docs/api-reference.md#task-management) | Create a task | `name`, (`listId`/`listName`) |
56
+ | [create_bulk_tasks](docs/api-reference.md#task-management) | Create multiple tasks | `tasks[]` |
57
+ | [update_task](docs/api-reference.md#task-management) | Modify task | `taskId`/`taskName` |
58
+ | [get_tasks](docs/api-reference.md#task-retrieval) | Get tasks from list | `listId`/`listName` |
59
+ | [get_task](docs/api-reference.md#task-retrieval) | Get task details | `taskId`/`taskName` |
60
+ | [delete_task](docs/api-reference.md#task-management) | Remove task | `taskId` |
61
+ | [move_task](docs/api-reference.md#task-management) | Move task | `taskId`/`taskName`, `listId`/`listName` |
62
+ | [duplicate_task](docs/api-reference.md#task-management) | Copy task | `taskId`/`taskName`, `listId`/`listName` |
63
+ | [create_list](docs/api-reference.md#list-management) | Create list in space | `name`, `spaceId`/`spaceName` |
64
+ | [create_folder](docs/api-reference.md#folder-management) | Create folder | `name`, `spaceId`/`spaceName` |
65
+ | [create_list_in_folder](docs/api-reference.md#list-management) | Create list in folder | `name`, `folderId`/`folderName` |
66
+
67
+ See [full documentation](docs/api-reference.md) for optional parameters and advanced usage.
68
+
69
+ ## Available Prompts
70
+
71
+ | Prompt | Purpose | Features |
72
+ |--------|---------|----------|
73
+ | [summarize_tasks](docs/api-reference.md#prompts) | Task overview | Status summary, priorities, relationships |
74
+ | [analyze_priorities](docs/api-reference.md#prompts) | Priority optimization | Distribution analysis, sequencing |
75
+ | [generate_description](docs/api-reference.md#prompts) | Task description creation | Objectives, criteria, dependencies |
206
76
 
207
77
  ## Error Handling
208
78
 
209
- The server provides clear error messages for common scenarios:
79
+ The server provides clear error messages for:
210
80
  - Missing required parameters
211
81
  - Invalid IDs or names
212
82
  - Items not found
213
83
  - Permission issues
214
84
  - API errors
85
+ - Rate limiting
215
86
 
216
- ## Development
217
-
218
- 1. Clone the repository:
219
- ```bash
220
- git clone https://github.com/taazkareem/clickup-mcp-server.git
221
- cd clickup-mcp-server
222
- ```
87
+ ## Support the Developer
223
88
 
224
- 2. Install dependencies:
225
- ```bash
226
- npm install
227
- ```
89
+ If you find this project useful, please consider supporting
228
90
 
229
- 3. Start in development mode:
230
- ```bash
231
- npm run dev
232
- ```
91
+ [![Sponsor TaazKareem](https://img.shields.io/badge/Sponsor-TaazKareem-orange?logo=github)](https://github.com/sponsors/TaazKareem)
233
92
 
234
93
  ## Contributing
235
94
 
@@ -238,3 +97,4 @@ Contributions are welcome! Please read our [Contributing Guide](CONTRIBUTING.md)
238
97
  ## License
239
98
 
240
99
  This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
100
+
package/build/config.js CHANGED
@@ -1,31 +1,19 @@
1
- import dotenv from 'dotenv';
2
- // Load environment variables from .env file
3
- dotenv.config();
4
- console.log('Environment variables received:', {
5
- CLICKUP_API_KEY: process.env.CLICKUP_API_KEY,
6
- TEAM_ID: process.env.TEAM_ID
7
- });
8
- // Parse command line arguments for --env flags
9
1
  const args = process.argv.slice(2);
10
- console.log('Command line arguments:', args);
11
2
  const envArgs = {};
12
3
  for (let i = 0; i < args.length; i++) {
13
4
  if (args[i] === '--env' && i + 1 < args.length) {
14
5
  const [key, value] = args[i + 1].split('=');
15
6
  if (key === 'CLICKUP_API_KEY')
16
7
  envArgs.clickupApiKey = value;
17
- if (key === 'TEAM_ID')
18
- envArgs.teamId = value;
19
- i++; // Skip the next argument since we used it
8
+ if (key === 'CLICKUP_TEAM_ID')
9
+ envArgs.clickupTeamId = value;
10
+ i++;
20
11
  }
21
12
  }
22
- console.log('Parsed environment arguments:', envArgs);
23
13
  const configuration = {
24
14
  clickupApiKey: envArgs.clickupApiKey || process.env.CLICKUP_API_KEY || '',
25
- teamId: envArgs.teamId || process.env.TEAM_ID || ''
15
+ clickupTeamId: envArgs.clickupTeamId || process.env.CLICKUP_TEAM_ID || '',
26
16
  };
27
- console.log('Final configuration:', configuration);
28
- // Check for missing environment variables
29
17
  const missingEnvVars = Object.entries(configuration)
30
18
  .filter(([_, value]) => !value)
31
19
  .map(([key]) => key);