@taazkareem/clickup-mcp-server 0.2.0 → 0.2.1

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 ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Talib Kareem
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -2,223 +2,323 @@
2
2
 
3
3
  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
4
 
5
- ## Features
6
-
7
- - 🔄 **Resource Management**
8
- - List and read ClickUp tasks as resources
9
- - View task details, status, and assignments
10
- - Access task history and relationships
5
+ ## Quick Start (Recommended)
11
6
 
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 and update 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 spaces and lists with their IDs
27
- - List available statuses
28
- - Find items by name (case-insensitive)
29
- - View task relationships
30
-
31
- - 📝 **AI Integration**
32
- - Generate task descriptions with AI
33
- - Summarize tasks and analyze priorities
34
- - Get AI-powered task recommendations
35
-
36
- - 🔒 **Security**
37
- - Secure API key management
38
- - Environment-based configuration
39
-
40
- ## Installation
41
-
42
- ### Using npx (Recommended)
7
+ 1. Install the server:
43
8
  ```bash
44
- npx @taazkareem/clickup-mcp-server
9
+ npm install -g @taazkareem/clickup-mcp-server
45
10
  ```
46
11
 
47
- ### Global Installation
12
+ 2. Get your credentials:
13
+ - ClickUp API key from [ClickUp Settings](https://app.clickup.com/settings/apps)
14
+ - Team ID from your ClickUp workspace URL
15
+
16
+ 3. Start the server:
48
17
  ```bash
49
- npm install -g @taazkareem/clickup-mcp-server
18
+ clickup-mcp-server --env CLICKUP_API_KEY=your_api_key_here --env TEAM_ID=your_team_id_here
50
19
  ```
51
20
 
52
- ## Configuration
21
+ > **Security Note**: Your API key will be stored securely and not exposed to AI models.
53
22
 
54
- 1. Get your ClickUp API key from [ClickUp Settings](https://app.clickup.com/settings/apps)
55
- 2. Create a `.env` file:
56
- ```env
57
- CLICKUP_API_KEY=your_api_key_here
58
- TEAM_ID=your_team_id_here
59
- ```
23
+ ## Using with Cursor AI Composer
60
24
 
61
- ## Usage
25
+ 1. Go to Features in settings
26
+ 2. Add under MCP Servers:
27
+ ```bash
28
+ clickup-mcp-server --env CLICKUP_API_KEY=your_api_key_here --env TEAM_ID=your_team_id_here
29
+ ```
30
+ 3. Replace the credentials and click Save
62
31
 
63
- ### Starting the Server
32
+ ## Alternative Installation
33
+ Run directly without installing:
64
34
  ```bash
65
- clickup-mcp-server
35
+ npx @taazkareem/clickup-mcp-server --env CLICKUP_API_KEY=your_api_key_here --env TEAM_ID=your_team_id_here
66
36
  ```
67
37
 
68
- ### Available Tools
38
+ ## Features
69
39
 
70
- 1. **list_spaces**
71
- - Lists all spaces and their lists with IDs
72
- - Shows available statuses for each list
73
- - No parameters required
40
+ - 🎯 **Task Management**
41
+ - Create, update, and delete tasks
42
+ - Move and duplicate tasks between lists, spaces, and folders
43
+ - Bulk task operations
44
+ - Task details
74
45
 
75
- 2. **create_task**
46
+ - 📂 **Workspace Organization**
47
+ - Hierarchical tree structure with clear relationships
48
+ - Efficient navigation with path tracking
49
+ - List and folder management in spaces
50
+ - Smart caching to reduce API calls
51
+ - Name/ID-based item lookup
52
+ - Optimized task organization
53
+
54
+ - 🔄 **Smart Integration**
55
+ - Case-insensitive name lookups
56
+ - Markdown support
57
+ - Automatic rate limiting
58
+ - Error handling
59
+
60
+ - 🤖 **AI Assistance**
61
+ - Task analysis and insights
62
+ - Status summaries and priorities
63
+ - Description assistance
64
+ - Relationship mapping
65
+
66
+ ## Available Tools
67
+
68
+ 1. **get_workspace_hierarchy**
69
+ - Gets complete hierarchy of spaces, folders, and lists
70
+ - No parameters required
71
+ - Returns tree structure showing:
72
+ ```
73
+ Workspace (root)
74
+ ├── Space A
75
+ │ ├── List 1
76
+ │ └── Folder 1
77
+ │ ├── List 2
78
+ │ └── List 3
79
+ └── Space B
80
+ └── List 4
81
+ ```
82
+
83
+ 2. **get_tasks**
84
+ - Gets tasks from a ClickUp list with optional filters
85
+ - List Identification (required):
86
+ ```
87
+ listId: "123" # List ID from ClickUp
88
+ -- OR --
89
+ listName: "My List" # List name (case insensitive)
90
+ ```
91
+ - Optional Filters:
92
+ ```
93
+ archived: true/false # Include archived tasks
94
+ page: number # Page number for pagination
95
+ order_by: string # Field to sort by
96
+ reverse: true/false # Reverse sort order
97
+ subtasks: true/false # Include subtasks
98
+ statuses: ["status1",..] # Filter by status
99
+ include_closed: true/false # Include closed tasks
100
+ assignees: ["user1",..] # Filter by assignee
101
+ due_date_gt: timestamp # Due after date
102
+ due_date_lt: timestamp # Due before date
103
+ custom_fields: {...} # Filter by custom fields
104
+ ```
105
+
106
+ 3. **get_task**
107
+ - Gets detailed information about a specific task
108
+ - Task Identification (required):
109
+ ```
110
+ taskId: "123" # Task ID from ClickUp
111
+ -- OR --
112
+ taskName: "My Task" # Task name (case insensitive)
113
+ ```
114
+ - Optional:
115
+ ```
116
+ listName: "My List" # Narrow search to specific list
117
+ ```
118
+ - Returns full task details including attachments and custom fields
119
+
120
+ 4. **create_task**
76
121
  - Creates a new task in ClickUp
77
- - Required parameters:
78
- - `listId`: ID of the list to create the task in
79
- - `name`: Name of the task
80
- - Optional parameters:
81
- - `description`: Task description
82
- - `status`: Task status
83
- - `priority`: Priority level (1-4)
84
- - `dueDate`: Due date (ISO string)
85
- - `assignees`: Array of user IDs
86
-
87
- 3. **create_list**
88
- - Creates a new list in a space
89
- - Required parameters:
90
- - `name`: Name of the list
91
- - Optional parameters:
92
- - `spaceId`: ID of the space (optional if spaceName provided)
93
- - `spaceName`: Name of the space (optional if spaceId provided)
94
- - `content`: List description
95
- - `status`: List status
96
- - `priority`: Priority level (1-4)
97
- - `dueDate`: Due date (ISO string)
98
-
99
- 4. **create_folder**
100
- - Creates a new folder in a space
101
- - Required parameters:
102
- - `name`: Name of the folder
103
- - Optional parameters:
104
- - `spaceId`: ID of the space (optional if spaceName provided)
105
- - `spaceName`: Name of the space (optional if spaceId provided)
106
- - `override_statuses`: Whether to override space statuses
107
-
108
- 5. **create_list_in_folder**
109
- - Creates a new list within a folder
110
- - Required parameters:
111
- - `name`: Name of the list
112
- - Optional parameters:
113
- - `folderId`: ID of the folder (optional if using folderName)
114
- - `folderName`: Name of the folder
115
- - `spaceId`: ID of the space (required if using folderName)
116
- - `spaceName`: Name of the space (alternative to spaceId)
117
- - `content`: List description
118
- - `status`: List status
119
-
120
- 6. **move_task**
121
- - Moves a task to a different list
122
- - Required parameters:
123
- - `taskId`: ID of the task to move
124
- - `listId`: ID of the destination list
125
-
126
- 7. **duplicate_task**
127
- - Creates a copy of a task in a specified list
128
- - Required parameters:
129
- - `taskId`: ID of the task to duplicate
130
- - `listId`: ID of the destination list
131
-
132
- 8. **update_task**
122
+ - List Identification (required):
123
+ ```
124
+ listId: "123" # List ID from ClickUp
125
+ -- OR --
126
+ listName: "My List" # List name (case insensitive)
127
+ ```
128
+ - Task Details:
129
+ ```
130
+ # Required
131
+ taskName: "New Task" # Name of the task to create
132
+
133
+ # Optional
134
+ description: "..." # Task description (markdown supported)
135
+ status: "In Progress" # Task status
136
+ priority: 1-4 # Priority level (1=Urgent, 4=Low)
137
+ dueDate: timestamp # Due date
138
+ ```
139
+
140
+ 5. **create_bulk_tasks**
141
+ - Creates multiple tasks in a list
142
+ - List Identification (required):
143
+ ```
144
+ listId: "123" # List ID from ClickUp
145
+ -- OR --
146
+ listName: "My List" # List name (case insensitive)
147
+ ```
148
+ - Tasks Array (required):
149
+ ```
150
+ tasks: [
151
+ {
152
+ taskName: "Task 1", # Required
153
+ description: "...", # Optional
154
+ status: "In Progress", # Optional
155
+ priority: 1-4, # Optional
156
+ dueDate: timestamp # Optional
157
+ },
158
+ // ... more tasks
159
+ ]
160
+ ```
161
+ - Handles rate limiting automatically
162
+
163
+ 6. **update_task**
133
164
  - Updates an existing task
134
- - Required parameters:
135
- - `taskId`: ID of the task to update
136
- - Optional parameters:
137
- - `name`: New task name
138
- - `description`: New description
139
- - `status`: New status
140
- - `priority`: New priority level (1-4)
141
- - `dueDate`: New due date (ISO string)
142
-
143
- ### Available Prompts
165
+ - Task Identification (required):
166
+ ```
167
+ taskId: "123" # Task ID from ClickUp
168
+ -- OR --
169
+ taskName: "My Task" # Task name (case insensitive)
170
+ ```
171
+ - Optional Updates:
172
+ ```
173
+ listName: "My List" # Narrow search to specific list
174
+ newName: "Updated Task" # New task name
175
+ description: "..." # New description
176
+ status: "Done" # New status
177
+ priority: 1-4 # New priority
178
+ dueDate: timestamp # New due date
179
+ ```
180
+
181
+ 7. **delete_task**
182
+ - Permanently deletes a task
183
+ - Task Identification (required):
184
+ ```
185
+ taskId: "123" # Task ID from ClickUp
186
+ -- OR --
187
+ taskName: "My Task" # Task name (case insensitive)
188
+ ```
189
+ - Optional:
190
+ ```
191
+ listName: "My List" # Narrow search to specific list
192
+ ```
193
+
194
+ 8. **move_task**
195
+ - Moves a task to a different list
196
+ - Source Task (required):
197
+ ```
198
+ taskId: "123" # Task ID from ClickUp
199
+ -- OR --
200
+ taskName: "My Task" # Task name (case insensitive)
201
+ ```
202
+ - Destination List (required):
203
+ ```
204
+ destinationListId: "456" # Target list ID
205
+ -- OR --
206
+ destinationListName: "My List" # Target list name
207
+ ```
208
+ - Optional:
209
+ ```
210
+ sourceListName: "Old List" # Narrow task search to specific list
211
+ ```
212
+
213
+ 9. **duplicate_task**
214
+ - Creates a copy of a task in specified list
215
+ - Source Task (required):
216
+ ```
217
+ taskId: "123" # Task ID from ClickUp
218
+ -- OR --
219
+ taskName: "My Task" # Task name (case insensitive)
220
+ ```
221
+ - Destination List (required):
222
+ ```
223
+ destinationListId: "456" # Target list ID
224
+ -- OR --
225
+ destinationListName: "My List" # Target list name
226
+ ```
227
+ - Optional:
228
+ ```
229
+ sourceListName: "Current List" # Narrow task search to specific list
230
+ ```
231
+
232
+ 10. **create_list**
233
+ - Creates a new list in a space
234
+ - Space Identification (required):
235
+ ```
236
+ spaceId: "123" # Space ID from ClickUp
237
+ -- OR --
238
+ spaceName: "My Space" # Space name (case insensitive)
239
+ ```
240
+ - List Details:
241
+ ```
242
+ # Required
243
+ listName: "New List" # Name for the new list
244
+
245
+ # Optional
246
+ content: "..." # List description
247
+ dueDate: timestamp # List due date
248
+ priority: 1-4 # List priority
249
+ assignee: "user_id" # Assign to user
250
+ ```
251
+
252
+ 11. **create_folder**
253
+ - Creates a new folder in a space
254
+ - Space Identification (required):
255
+ ```
256
+ spaceId: "123" # Space ID from ClickUp
257
+ -- OR --
258
+ spaceName: "My Space" # Space name (case insensitive)
259
+ ```
260
+ - Folder Details:
261
+ ```
262
+ # Required
263
+ folderName: "New Folder" # Name for the new folder
264
+
265
+ # Optional
266
+ overrideStatuses: true/false # Override space statuses
267
+ ```
268
+
269
+ 12. **create_list_in_folder**
270
+ - Creates a new list within a folder
271
+ - Folder Identification (required):
272
+ ```
273
+ folderId: "123" # Folder ID from ClickUp
274
+ -- OR --
275
+ folderName: "My Folder" # Folder name (case insensitive)
276
+ ```
277
+ - List Details:
278
+ ```
279
+ # Required
280
+ listName: "New List" # Name for the new list
281
+
282
+ # Optional
283
+ content: "..." # List description
284
+ status: "Active" # Initial list status
285
+ ```
286
+
287
+ ## Available Prompts
144
288
 
145
289
  1. **summarize_tasks**
146
- - Provides a comprehensive summary of tasks
147
- - Groups tasks by status
148
- - Highlights priorities and deadlines
149
- - Suggests task relationships
290
+ - Basic task summary by status
291
+ - Lists tasks with their current states
292
+ - Shows task relationships within lists
150
293
 
151
294
  2. **analyze_priorities**
152
- - Analyzes task priority distribution
153
- - Identifies misaligned priorities
295
+ - Reviews current task priorities
154
296
  - Suggests priority adjustments
155
297
  - Recommends task sequencing
156
298
 
157
299
  3. **generate_description**
158
- - Helps generate detailed task descriptions
159
- - Includes:
160
- - Clear objectives
161
- - Success criteria
162
- - Required resources
163
- - Dependencies
164
- - Potential risks
165
-
166
- ## Name Resolution
167
-
168
- Most tools support finding items by either ID or name:
169
- - Spaces can be referenced by `spaceId` or `spaceName`
170
- - Folders can be referenced by `folderId` or `folderName` (with space information)
171
- - Lists can be referenced by `listId` or found within spaces/folders
172
-
173
- Name matching is case-insensitive for convenience.
300
+ - Interactive prompt for creating task descriptions
301
+ - Helps structure task information
302
+ - Includes objectives, criteria, and dependencies
174
303
 
175
304
  ## Error Handling
176
305
 
177
- The server provides clear error messages for common scenarios:
306
+ The server provides clear error messages for:
178
307
  - Missing required parameters
179
308
  - Invalid IDs or names
180
309
  - Items not found
181
310
  - Permission issues
182
311
  - API errors
312
+ - Rate limiting
183
313
 
184
- ## Using with Cursor AI Composer
185
-
186
- To add this server to Cursor AI Composer, follow these steps:
314
+ ## Support the Developer
187
315
 
188
- 1. Go to the Features section in the settings.
189
- 2. Add the following command under MCP Servers:
316
+ If you find this project useful, please consider supporting the developer:
317
+ Talib Kareem (taazkareem@icloud.com)
190
318
 
191
- ```bash
192
- npx -y @taazkareem/clickup-mcp-server \
193
- --env CLICKUP_API_KEY=your_api_key_here \
194
- --env TEAM_ID=your_team_id_here
195
- ```
196
- 3. Replace `your_api_key_here` and `your_team_id_here` with your actual ClickUp credentials.
197
- 4. Click on 'Save' to add the server.
198
-
199
- You can get these values from:
200
- - `CLICKUP_API_KEY`: Get from [ClickUp Settings > Apps](https://app.clickup.com/settings/apps)
201
- - `TEAM_ID`: Your ClickUp Team ID (found in the URL when viewing your workspace or via API)
319
+ [![Buy me a coffee](https://img.shields.io/badge/Buy%20me%20a%20coffee-Support-orange)](https://www.buymeacoffee.com/taazkareem)
202
320
 
203
- > **Security Note**: Your API key will be stored securely and will not be exposed to AI models.
204
-
205
- ## Development
206
-
207
- 1. Clone the repository:
208
- ```bash
209
- git clone https://github.com/taazkareem/clickup-mcp-server.git
210
- cd clickup-mcp-server
211
- ```
212
-
213
- 2. Install dependencies:
214
- ```bash
215
- npm install
216
- ```
217
-
218
- 3. Start in development mode:
219
- ```bash
220
- npm run dev
221
- ```
321
+ <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="vertical-align: middle; margin-right: 4px;"><path d="M4 18h12l4-4h-12z" /><path d="M8 14l-4-4h12l4 4" /><path d="M16 10l4-4h-12l-4 4" /></svg><span style="vertical-align: middle;">**Solana Wallet:** `GjtRksihd7SWQw7hJSCDMcTxPHbgpNs7xPW3nFubNjVM`</span>
222
322
 
223
323
  ## Contributing
224
324
 
@@ -226,4 +326,5 @@ Contributions are welcome! Please read our [Contributing Guide](CONTRIBUTING.md)
226
326
 
227
327
  ## License
228
328
 
229
- This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
329
+ This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
330
+
package/build/config.js CHANGED
@@ -1,6 +1,3 @@
1
- import dotenv from 'dotenv';
2
- // Load environment variables from .env file
3
- dotenv.config();
4
1
  // Parse command line arguments for --env flags
5
2
  const args = process.argv.slice(2);
6
3
  const envArgs = {};
@@ -15,8 +12,8 @@ for (let i = 0; i < args.length; i++) {
15
12
  }
16
13
  }
17
14
  const configuration = {
18
- clickupApiKey: envArgs.clickupApiKey || process.env.CLICKUP_API_KEY || '',
19
- teamId: envArgs.teamId || process.env.TEAM_ID || '',
15
+ clickupApiKey: envArgs.clickupApiKey || '',
16
+ teamId: envArgs.teamId || '',
20
17
  };
21
18
  // Check for missing environment variables
22
19
  const missingEnvVars = Object.entries(configuration)