@taazkareem/clickup-mcp-server 0.1.7 → 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
@@ -1,117 +1,324 @@
1
1
  # ClickUp MCP Server
2
2
 
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, and lists through a standardized protocol.
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
- - 🔄 List and read ClickUp tasks as resources
8
- - ✨ Create and update tasks through tools
9
- - 📊 Get spaces and lists with their IDs
10
- - 📝 Generate task descriptions with AI
11
- - 📋 Summarize tasks and analyze priorities
12
- - 🔒 Secure API key management
5
+ ## Quick Start (Recommended)
13
6
 
14
- ## Installation
15
-
16
- ### Using npx (Recommended)
7
+ 1. Install the server:
17
8
  ```bash
18
- npx @taazkareem/clickup-mcp-server
9
+ npm install -g @taazkareem/clickup-mcp-server
19
10
  ```
20
11
 
21
- ### 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:
22
17
  ```bash
23
- 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
24
19
  ```
25
20
 
26
- ## Configuration
21
+ > **Security Note**: Your API key will be stored securely and not exposed to AI models.
27
22
 
28
- 1. Get your ClickUp API key from [ClickUp Settings](https://app.clickup.com/settings/apps)
29
- 2. Create a `.env` file:
30
- ```env
31
- CLICKUP_API_KEY=your_api_key_here
32
- TEAM_ID=your_team_id_here
33
- ```
23
+ ## Using with Cursor AI Composer
34
24
 
35
- ## 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
36
31
 
37
- ### Starting the Server
32
+ ## Alternative Installation
33
+ Run directly without installing:
38
34
  ```bash
39
- clickup-mcp-server
35
+ npx @taazkareem/clickup-mcp-server --env CLICKUP_API_KEY=your_api_key_here --env TEAM_ID=your_team_id_here
40
36
  ```
41
37
 
42
- ### Available Tools
38
+ ## Features
43
39
 
44
- 1. **list_spaces**
45
- - Lists all spaces and their lists with IDs
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
45
+
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
46
70
  - No parameters required
47
-
48
- 2. **create_task**
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**
49
121
  - Creates a new task in ClickUp
50
- - Required parameters:
51
- - `listId`: ID of the list to create the task in
52
- - `name`: Name of the task
53
- - Optional parameters:
54
- - `description`: Task description
55
- - `status`: Task status
56
- - `priority`: Priority level (1-4)
57
- - `dueDate`: Due date (ISO string)
58
-
59
- 3. **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**
60
164
  - Updates an existing task
61
- - Required parameters:
62
- - `taskId`: ID of the task to update
63
- - Optional parameters:
64
- - Same as create_task
65
-
66
- ### 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
67
288
 
68
289
  1. **summarize_tasks**
69
- - Provides a summary of all tasks
70
- - Groups by status and highlights priorities
290
+ - Basic task summary by status
291
+ - Lists tasks with their current states
292
+ - Shows task relationships within lists
71
293
 
72
294
  2. **analyze_priorities**
73
- - Analyzes task priorities
74
- - Suggests optimizations and sequencing
295
+ - Reviews current task priorities
296
+ - Suggests priority adjustments
297
+ - Recommends task sequencing
75
298
 
76
299
  3. **generate_description**
77
- - Helps generate detailed task descriptions
300
+ - Interactive prompt for creating task descriptions
301
+ - Helps structure task information
78
302
  - Includes objectives, criteria, and dependencies
79
303
 
80
- ## Using with Cursor AI Composer
304
+ ## Error Handling
81
305
 
82
- To add this server to Cursor AI Composer:
306
+ The server provides clear error messages for:
307
+ - Missing required parameters
308
+ - Invalid IDs or names
309
+ - Items not found
310
+ - Permission issues
311
+ - API errors
312
+ - Rate limiting
83
313
 
84
- ```bash
85
- npx -y @taazkareem/clickup-mcp-server \
86
- --env CLICKUP_API_KEY=your_api_key_here \
87
- --env TEAM_ID=your_team_id_here
88
- ```
314
+ ## Support the Developer
89
315
 
90
- You can get these values from:
91
- - `CLICKUP_API_KEY`: Get from [ClickUp Settings > Apps](https://app.clickup.com/settings/apps)
92
- - `TEAM_ID`: Your ClickUp Team ID (found in the URL when viewing your workspace or via API)
316
+ If you find this project useful, please consider supporting the developer:
317
+ Talib Kareem (taazkareem@icloud.com)
93
318
 
94
- > ⚠️ **Important**: Make sure to replace `your_api_key_here` and `your_team_id_here` with your actual ClickUp credentials.
319
+ [![Buy me a coffee](https://img.shields.io/badge/Buy%20me%20a%20coffee-Support-orange)](https://www.buymeacoffee.com/taazkareem)
95
320
 
96
- > **Security Note**: Your API key will be stored securely and will not be exposed to AI models.
97
-
98
- ## Development
99
-
100
- 1. Clone the repository:
101
- ```bash
102
- git clone https://github.com/yourusername/clickup-mcp-server.git
103
- cd clickup-mcp-server
104
- ```
105
-
106
- 2. Install dependencies:
107
- ```bash
108
- npm install
109
- ```
110
-
111
- 3. Start in development mode:
112
- ```bash
113
- npm run dev
114
- ```
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>
115
322
 
116
323
  ## Contributing
117
324
 
@@ -120,3 +327,4 @@ Contributions are welcome! Please read our [Contributing Guide](CONTRIBUTING.md)
120
327
  ## License
121
328
 
122
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)