@taazkareem/clickup-mcp-server 0.4.73 → 0.4.75
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/README.md +4 -0
- package/build/server.js +1 -1
- package/build/server.log +101 -31
- package/build/services/clickup/task.js +26 -0
- package/build/tools/folder.js +87 -58
- package/build/tools/list.js +123 -86
- package/build/tools/task/bulk-operations.js +69 -5
- package/build/tools/task/handlers.js +7 -6
- package/build/tools/task/single-operations.js +112 -14
- package/build/tools/task/utilities.js +72 -11
- package/build/tools/workspace.js +46 -32
- package/build/utils/sponsor-service.js +24 -5
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -126,6 +126,10 @@ If you find this project useful, please consider supporting:
|
|
|
126
126
|
|
|
127
127
|
[](https://github.com/sponsors/TaazKareem)
|
|
128
128
|
|
|
129
|
+
## Acknowledgements
|
|
130
|
+
|
|
131
|
+
Special thanks to [ClickUp](https://clickup.com) for their excellent API and services that make this integration possible.
|
|
132
|
+
|
|
129
133
|
## Contributing
|
|
130
134
|
|
|
131
135
|
Contributions are welcome! Please read our [Contributing Guide](CONTRIBUTING.md) for details.
|
package/build/server.js
CHANGED
package/build/server.log
CHANGED
|
@@ -1,51 +1,51 @@
|
|
|
1
|
-
[2025-03-
|
|
1
|
+
[2025-03-21T18:53:07.767Z] [PID:44431] INFO: [SponsorService] SponsorService initialized
|
|
2
2
|
{
|
|
3
3
|
"enabled": true
|
|
4
4
|
}
|
|
5
|
-
[2025-03-
|
|
6
|
-
[2025-03-
|
|
5
|
+
[2025-03-21T18:53:07.789Z] [PID:44431] INFO: [SharedServices] Creating shared ClickUp services singleton
|
|
6
|
+
[2025-03-21T18:53:07.790Z] [PID:44431] INFO: [ClickUpServices] Starting ClickUp services initialization
|
|
7
7
|
{
|
|
8
8
|
"teamId": "9014370478",
|
|
9
9
|
"baseUrl": "https://api.clickup.com/api/v2"
|
|
10
10
|
}
|
|
11
|
-
[2025-03-
|
|
12
|
-
[2025-03-
|
|
11
|
+
[2025-03-21T18:53:07.790Z] [PID:44431] INFO: [ClickUpServices] Initializing ClickUp Workspace service
|
|
12
|
+
[2025-03-21T18:53:07.792Z] [PID:44431] DEBUG: [ClickUp:WorkspaceService] Initialized WorkspaceService
|
|
13
13
|
{
|
|
14
14
|
"teamId": "9014370478",
|
|
15
15
|
"baseUrl": "https://api.clickup.com/api/v2"
|
|
16
16
|
}
|
|
17
|
-
[2025-03-
|
|
18
|
-
[2025-03-
|
|
17
|
+
[2025-03-21T18:53:07.792Z] [PID:44431] INFO: [ClickUpServices] Initializing ClickUp Task service
|
|
18
|
+
[2025-03-21T18:53:07.792Z] [PID:44431] DEBUG: [ClickUp:TaskService] Initialized TaskService
|
|
19
19
|
{
|
|
20
20
|
"teamId": "9014370478",
|
|
21
21
|
"baseUrl": "https://api.clickup.com/api/v2"
|
|
22
22
|
}
|
|
23
|
-
[2025-03-
|
|
23
|
+
[2025-03-21T18:53:07.792Z] [PID:44431] INFO: [ClickUp:TaskService] Operation: constructor
|
|
24
24
|
{
|
|
25
25
|
"usingSharedWorkspaceService": true
|
|
26
26
|
}
|
|
27
|
-
[2025-03-
|
|
27
|
+
[2025-03-21T18:53:07.793Z] [PID:44431] DEBUG: [ClickUp:ListService] Initialized ListService
|
|
28
28
|
{
|
|
29
29
|
"teamId": "9014370478",
|
|
30
30
|
"baseUrl": "https://api.clickup.com/api/v2"
|
|
31
31
|
}
|
|
32
|
-
[2025-03-
|
|
32
|
+
[2025-03-21T18:53:07.793Z] [PID:44431] INFO: [ClickUp:TaskService] Operation: constructor
|
|
33
33
|
{
|
|
34
34
|
"initialized": true
|
|
35
35
|
}
|
|
36
|
-
[2025-03-
|
|
37
|
-
[2025-03-
|
|
36
|
+
[2025-03-21T18:53:07.793Z] [PID:44431] INFO: [ClickUpServices] Initializing ClickUp List service
|
|
37
|
+
[2025-03-21T18:53:07.793Z] [PID:44431] DEBUG: [ClickUp:ListService] Initialized ListService
|
|
38
38
|
{
|
|
39
39
|
"teamId": "9014370478",
|
|
40
40
|
"baseUrl": "https://api.clickup.com/api/v2"
|
|
41
41
|
}
|
|
42
|
-
[2025-03-
|
|
43
|
-
[2025-03-
|
|
42
|
+
[2025-03-21T18:53:07.794Z] [PID:44431] INFO: [ClickUpServices] Initializing ClickUp Folder service
|
|
43
|
+
[2025-03-21T18:53:07.794Z] [PID:44431] DEBUG: [ClickUp:FolderService] Initialized FolderService
|
|
44
44
|
{
|
|
45
45
|
"teamId": "9014370478",
|
|
46
46
|
"baseUrl": "https://api.clickup.com/api/v2"
|
|
47
47
|
}
|
|
48
|
-
[2025-03-
|
|
48
|
+
[2025-03-21T18:53:07.794Z] [PID:44431] INFO: [ClickUpServices] All ClickUp services initialized successfully
|
|
49
49
|
{
|
|
50
50
|
"services": [
|
|
51
51
|
"workspace",
|
|
@@ -55,30 +55,30 @@
|
|
|
55
55
|
],
|
|
56
56
|
"baseUrl": "https://api.clickup.com/api/v2"
|
|
57
57
|
}
|
|
58
|
-
[2025-03-
|
|
58
|
+
[2025-03-21T18:53:07.794Z] [PID:44431] INFO: [SharedServices] Services initialization complete
|
|
59
59
|
{
|
|
60
60
|
"services": "workspace, task, list, folder",
|
|
61
61
|
"teamId": "9014370478"
|
|
62
62
|
}
|
|
63
|
-
[2025-03-
|
|
64
|
-
[2025-03-
|
|
65
|
-
[2025-03-
|
|
66
|
-
[2025-03-
|
|
63
|
+
[2025-03-21T18:53:07.794Z] [PID:44431] INFO: [BulkService] BulkService initialized
|
|
64
|
+
[2025-03-21T18:53:07.795Z] [PID:44431] INFO: [BulkService] BulkService initialized
|
|
65
|
+
[2025-03-21T18:53:07.795Z] [PID:44431] INFO: Starting ClickUp MCP Server...
|
|
66
|
+
[2025-03-21T18:53:08.317Z] [PID:44431] INFO: Server environment
|
|
67
67
|
{
|
|
68
|
-
"pid":
|
|
68
|
+
"pid": 44431,
|
|
69
69
|
"node": "v23.5.0",
|
|
70
70
|
"os": "darwin",
|
|
71
71
|
"arch": "x64"
|
|
72
72
|
}
|
|
73
|
-
[2025-03-
|
|
74
|
-
[2025-03-
|
|
75
|
-
[2025-03-
|
|
73
|
+
[2025-03-21T18:53:08.318Z] [PID:44431] INFO: Initializing workspace tools
|
|
74
|
+
[2025-03-21T18:53:08.318Z] [PID:44431] INFO: [WorkspaceTool] Initializing workspace tool
|
|
75
|
+
[2025-03-21T18:53:08.318Z] [PID:44431] INFO: [WorkspaceTool] Workspace tool initialized successfully
|
|
76
76
|
{
|
|
77
77
|
"serviceType": "WorkspaceService"
|
|
78
78
|
}
|
|
79
|
-
[2025-03-
|
|
80
|
-
[2025-03-
|
|
81
|
-
[2025-03-
|
|
79
|
+
[2025-03-21T18:53:08.318Z] [PID:44431] INFO: Configuring server request handlers
|
|
80
|
+
[2025-03-21T18:53:08.319Z] [PID:44431] INFO: [Server] Registering server request handlers
|
|
81
|
+
[2025-03-21T18:53:08.319Z] [PID:44431] INFO: [Server] Registering tool handlers
|
|
82
82
|
{
|
|
83
83
|
"toolCount": 22,
|
|
84
84
|
"categories": [
|
|
@@ -88,7 +88,77 @@
|
|
|
88
88
|
"folder"
|
|
89
89
|
]
|
|
90
90
|
}
|
|
91
|
-
[2025-03-
|
|
92
|
-
[2025-03-
|
|
93
|
-
[2025-03-
|
|
94
|
-
[2025-03-
|
|
91
|
+
[2025-03-21T18:53:08.319Z] [PID:44431] INFO: Connecting to MCP stdio transport
|
|
92
|
+
[2025-03-21T18:53:08.319Z] [PID:44431] INFO: Server startup complete - ready to handle requests
|
|
93
|
+
[2025-03-21T18:53:08.337Z] [PID:44431] DEBUG: [Server] Received ListTools request
|
|
94
|
+
[2025-03-21T18:53:15.519Z] [PID:44431] INFO: [Server] Received CallTool request for tool: get_workspace_hierarchy
|
|
95
|
+
{
|
|
96
|
+
"params": {}
|
|
97
|
+
}
|
|
98
|
+
[2025-03-21T18:53:15.919Z] [PID:44431] DEBUG: [ClickUp:WorkspaceService] Request completed successfully in 399ms
|
|
99
|
+
[2025-03-21T18:53:16.322Z] [PID:44431] DEBUG: [ClickUp:WorkspaceService] Request completed successfully in 403ms
|
|
100
|
+
[2025-03-21T18:53:16.693Z] [PID:44431] DEBUG: [ClickUp:WorkspaceService] Request completed successfully in 370ms
|
|
101
|
+
[2025-03-21T18:53:17.078Z] [PID:44431] DEBUG: [ClickUp:WorkspaceService] Request completed successfully in 385ms
|
|
102
|
+
[2025-03-21T18:53:17.079Z] [PID:44431] DEBUG: [ClickUp:WorkspaceService] Found 2 folderless lists in space 90141365861
|
|
103
|
+
[2025-03-21T18:53:17.079Z] [PID:44431] DEBUG: [ClickUp:WorkspaceService] Adding 2 lists directly to space Talib's Space (90141365861)
|
|
104
|
+
[2025-03-21T18:53:17.079Z] [PID:44431] DEBUG: [ClickUp:WorkspaceService] Adding list directly to space: Personal List (901403617613)
|
|
105
|
+
[2025-03-21T18:53:17.079Z] [PID:44431] DEBUG: [ClickUp:WorkspaceService] Adding list directly to space: Work List (901403621899)
|
|
106
|
+
[2025-03-21T18:53:17.532Z] [PID:44431] DEBUG: [ClickUp:WorkspaceService] Request completed successfully in 453ms
|
|
107
|
+
[2025-03-21T18:53:17.950Z] [PID:44431] DEBUG: [ClickUp:WorkspaceService] Request completed successfully in 417ms
|
|
108
|
+
[2025-03-21T18:53:18.312Z] [PID:44431] DEBUG: [ClickUp:WorkspaceService] Request completed successfully in 361ms
|
|
109
|
+
[2025-03-21T18:53:18.312Z] [PID:44431] DEBUG: [ClickUp:WorkspaceService] Found 0 folderless lists in space 90141864154
|
|
110
|
+
[2025-03-21T18:53:18.312Z] [PID:44431] DEBUG: [ClickUp:WorkspaceService] Adding 0 lists directly to space Education (90141864154)
|
|
111
|
+
[2025-03-21T18:53:18.683Z] [PID:44431] DEBUG: [ClickUp:WorkspaceService] Request completed successfully in 371ms
|
|
112
|
+
[2025-03-21T18:53:19.187Z] [PID:44431] DEBUG: [ClickUp:WorkspaceService] Request completed successfully in 504ms
|
|
113
|
+
[2025-03-21T18:53:19.187Z] [PID:44431] DEBUG: [ClickUp:WorkspaceService] Found 1 folderless lists in space 90141369187
|
|
114
|
+
[2025-03-21T18:53:19.187Z] [PID:44431] DEBUG: [ClickUp:WorkspaceService] Adding 1 lists directly to space Social Media Content (90141369187)
|
|
115
|
+
[2025-03-21T18:53:19.187Z] [PID:44431] DEBUG: [ClickUp:WorkspaceService] Adding list directly to space: VibeCase (901403679582)
|
|
116
|
+
[2025-03-21T18:53:19.583Z] [PID:44431] DEBUG: [ClickUp:WorkspaceService] Request completed successfully in 396ms
|
|
117
|
+
[2025-03-21T18:53:20.005Z] [PID:44431] DEBUG: [ClickUp:WorkspaceService] Request completed successfully in 421ms
|
|
118
|
+
[2025-03-21T18:53:20.386Z] [PID:44431] DEBUG: [ClickUp:WorkspaceService] Request completed successfully in 380ms
|
|
119
|
+
[2025-03-21T18:53:20.793Z] [PID:44431] DEBUG: [ClickUp:WorkspaceService] Request completed successfully in 407ms
|
|
120
|
+
[2025-03-21T18:53:21.171Z] [PID:44431] DEBUG: [ClickUp:WorkspaceService] Request completed successfully in 378ms
|
|
121
|
+
[2025-03-21T18:53:21.518Z] [PID:44431] DEBUG: [ClickUp:WorkspaceService] Request completed successfully in 347ms
|
|
122
|
+
[2025-03-21T18:53:21.888Z] [PID:44431] DEBUG: [ClickUp:WorkspaceService] Request completed successfully in 369ms
|
|
123
|
+
[2025-03-21T18:53:22.256Z] [PID:44431] DEBUG: [ClickUp:WorkspaceService] Request completed successfully in 367ms
|
|
124
|
+
[2025-03-21T18:53:22.672Z] [PID:44431] DEBUG: [ClickUp:WorkspaceService] Request completed successfully in 416ms
|
|
125
|
+
[2025-03-21T18:53:23.078Z] [PID:44431] DEBUG: [ClickUp:WorkspaceService] Request completed successfully in 406ms
|
|
126
|
+
[2025-03-21T18:53:23.475Z] [PID:44431] DEBUG: [ClickUp:WorkspaceService] Request completed successfully in 397ms
|
|
127
|
+
[2025-03-21T18:53:23.832Z] [PID:44431] DEBUG: [ClickUp:WorkspaceService] Request completed successfully in 357ms
|
|
128
|
+
[2025-03-21T18:53:23.833Z] [PID:44431] DEBUG: [ClickUp:WorkspaceService] Found 9 folderless lists in space 90141392755
|
|
129
|
+
[2025-03-21T18:53:23.833Z] [PID:44431] DEBUG: [ClickUp:WorkspaceService] Adding 9 lists directly to space Custom Space (90141392755)
|
|
130
|
+
[2025-03-21T18:53:23.833Z] [PID:44431] DEBUG: [ClickUp:WorkspaceService] Adding list directly to space: Job Applications (901404823810)
|
|
131
|
+
[2025-03-21T18:53:23.833Z] [PID:44431] DEBUG: [ClickUp:WorkspaceService] Adding list directly to space: goal-tracker (901408127809)
|
|
132
|
+
[2025-03-21T18:53:23.833Z] [PID:44431] DEBUG: [ClickUp:WorkspaceService] Adding list directly to space: Bulk Test List 1 (901408285531)
|
|
133
|
+
[2025-03-21T18:53:23.833Z] [PID:44431] DEBUG: [ClickUp:WorkspaceService] Adding list directly to space: Bulk Test List 2 (901408285532)
|
|
134
|
+
[2025-03-21T18:53:23.833Z] [PID:44431] DEBUG: [ClickUp:WorkspaceService] Adding list directly to space: Style Scraper (901408105509)
|
|
135
|
+
[2025-03-21T18:53:23.833Z] [PID:44431] DEBUG: [ClickUp:WorkspaceService] Adding list directly to space: Prompts | Snippets | Commands (901407112060)
|
|
136
|
+
[2025-03-21T18:53:23.833Z] [PID:44431] DEBUG: [ClickUp:WorkspaceService] Adding list directly to space: cursor-rules-mcp-server (901408144363)
|
|
137
|
+
[2025-03-21T18:53:23.833Z] [PID:44431] DEBUG: [ClickUp:WorkspaceService] Adding list directly to space: Items to Sell Online (901404691843)
|
|
138
|
+
[2025-03-21T18:53:23.833Z] [PID:44431] DEBUG: [ClickUp:WorkspaceService] Adding list directly to space: clickup-mcp-server (901408020907)
|
|
139
|
+
[2025-03-21T18:53:29.131Z] [PID:44431] INFO: [Server] Received CallTool request for tool: create_task
|
|
140
|
+
{
|
|
141
|
+
"params": {
|
|
142
|
+
"name": "🧪 Test task for sponsor message",
|
|
143
|
+
"listName": "Bulk Test List 1",
|
|
144
|
+
"description": "This is a test task to verify sponsor message positioning"
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
[2025-03-21T18:53:29.131Z] [PID:44431] INFO: [ClickUp:TaskService] Operation: createTask
|
|
148
|
+
{
|
|
149
|
+
"listId": "901408285531",
|
|
150
|
+
"name": "🧪 Test task for sponsor message",
|
|
151
|
+
"description": "This is a test task to verify sponsor message positioning"
|
|
152
|
+
}
|
|
153
|
+
[2025-03-21T18:53:29.779Z] [PID:44431] DEBUG: [ClickUp:TaskService] Request completed successfully in 648ms
|
|
154
|
+
[2025-03-21T18:53:49.644Z] [PID:44431] INFO: [Server] Received CallTool request for tool: get_task
|
|
155
|
+
{
|
|
156
|
+
"params": {
|
|
157
|
+
"taskId": "86b4c2nqd"
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
[2025-03-21T18:53:49.644Z] [PID:44431] INFO: [ClickUp:TaskService] Operation: getTask
|
|
161
|
+
{
|
|
162
|
+
"taskId": "86b4c2nqd"
|
|
163
|
+
}
|
|
164
|
+
[2025-03-21T18:53:50.129Z] [PID:44431] DEBUG: [ClickUp:TaskService] Request completed successfully in 485ms
|
|
@@ -204,6 +204,32 @@ export class TaskService extends BaseClickUpService {
|
|
|
204
204
|
throw this.handleError(error, `Failed to get task ${taskId}`);
|
|
205
205
|
}
|
|
206
206
|
}
|
|
207
|
+
/**
|
|
208
|
+
* Get a specific task by its custom ID
|
|
209
|
+
* @param customTaskId The custom ID of the task (e.g., "DEV-1234")
|
|
210
|
+
* @param listId Optional list ID to search within for better performance
|
|
211
|
+
* @returns The task details
|
|
212
|
+
*/
|
|
213
|
+
async getTaskByCustomId(customTaskId, listId) {
|
|
214
|
+
this.logOperation('getTaskByCustomId', { customTaskId, listId });
|
|
215
|
+
try {
|
|
216
|
+
return await this.makeRequest(async () => {
|
|
217
|
+
// Build query with custom_task_ids=true
|
|
218
|
+
const params = new URLSearchParams({ custom_task_ids: 'true' });
|
|
219
|
+
// Use the ClickUp API endpoint for retrieving tasks by ID
|
|
220
|
+
// With custom_task_ids=true parameter, it will treat the ID as a custom ID
|
|
221
|
+
const response = await this.client.get(`/task/${customTaskId}?${params.toString()}`);
|
|
222
|
+
return response.data;
|
|
223
|
+
});
|
|
224
|
+
}
|
|
225
|
+
catch (error) {
|
|
226
|
+
// Enhance error message for custom ID lookups
|
|
227
|
+
if (error?.response?.status === 404) {
|
|
228
|
+
throw this.handleError(error, `Task with custom ID ${customTaskId} not found`);
|
|
229
|
+
}
|
|
230
|
+
throw this.handleError(error, `Failed to get task with custom ID ${customTaskId}`);
|
|
231
|
+
}
|
|
232
|
+
}
|
|
207
233
|
/**
|
|
208
234
|
* Update an existing task
|
|
209
235
|
* @param taskId ID of the task to update
|
package/build/tools/folder.js
CHANGED
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
* updating, and deleting folders in the ClickUp workspace hierarchy.
|
|
6
6
|
*/
|
|
7
7
|
import { clickUpServices } from '../services/shared.js';
|
|
8
|
+
import { sponsorService } from '../utils/sponsor-service.js';
|
|
8
9
|
// Use shared services instance
|
|
9
10
|
const { folder: folderService, workspace: workspaceService } = clickUpServices;
|
|
10
11
|
/**
|
|
@@ -12,7 +13,19 @@ const { folder: folderService, workspace: workspaceService } = clickUpServices;
|
|
|
12
13
|
*/
|
|
13
14
|
export const createFolderTool = {
|
|
14
15
|
name: "create_folder",
|
|
15
|
-
description:
|
|
16
|
+
description: `Purpose: Create a new folder in a ClickUp space for organizing related lists.
|
|
17
|
+
|
|
18
|
+
Valid Usage:
|
|
19
|
+
1. Provide spaceId (preferred) + folder name
|
|
20
|
+
2. Provide spaceName + folder name
|
|
21
|
+
|
|
22
|
+
Requirements:
|
|
23
|
+
- name: REQUIRED
|
|
24
|
+
- EITHER spaceId OR spaceName: REQUIRED
|
|
25
|
+
|
|
26
|
+
Notes:
|
|
27
|
+
- After creating a folder, you can add lists to it using create_list_in_folder
|
|
28
|
+
- Use override_statuses to set folder-specific statuses`,
|
|
16
29
|
inputSchema: {
|
|
17
30
|
type: "object",
|
|
18
31
|
properties: {
|
|
@@ -41,7 +54,18 @@ export const createFolderTool = {
|
|
|
41
54
|
*/
|
|
42
55
|
export const getFolderTool = {
|
|
43
56
|
name: "get_folder",
|
|
44
|
-
description:
|
|
57
|
+
description: `Purpose: Retrieve details about a specific folder including name, status, and metadata.
|
|
58
|
+
|
|
59
|
+
Valid Usage:
|
|
60
|
+
1. Use folderId alone (preferred)
|
|
61
|
+
2. Use folderName + (spaceId or spaceName)
|
|
62
|
+
|
|
63
|
+
Requirements:
|
|
64
|
+
- EITHER folderId OR (folderName + space information) is REQUIRED
|
|
65
|
+
- When using folderName, you MUST provide EITHER spaceId OR spaceName
|
|
66
|
+
|
|
67
|
+
Notes:
|
|
68
|
+
- Helps you understand folder structure before creating or updating lists`,
|
|
45
69
|
inputSchema: {
|
|
46
70
|
type: "object",
|
|
47
71
|
properties: {
|
|
@@ -70,7 +94,19 @@ export const getFolderTool = {
|
|
|
70
94
|
*/
|
|
71
95
|
export const updateFolderTool = {
|
|
72
96
|
name: "update_folder",
|
|
73
|
-
description:
|
|
97
|
+
description: `Purpose: Modify an existing folder's properties.
|
|
98
|
+
|
|
99
|
+
Valid Usage:
|
|
100
|
+
1. Use folderId alone (preferred)
|
|
101
|
+
2. Use folderName + (spaceId or spaceName)
|
|
102
|
+
|
|
103
|
+
Requirements:
|
|
104
|
+
- At least one update field (name or override_statuses) must be provided
|
|
105
|
+
- EITHER folderId OR (folderName + space information) is REQUIRED
|
|
106
|
+
- When using folderName, you MUST provide EITHER spaceId OR spaceName
|
|
107
|
+
|
|
108
|
+
Notes:
|
|
109
|
+
- Changes apply immediately to all lists within the folder`,
|
|
74
110
|
inputSchema: {
|
|
75
111
|
type: "object",
|
|
76
112
|
properties: {
|
|
@@ -107,7 +143,20 @@ export const updateFolderTool = {
|
|
|
107
143
|
*/
|
|
108
144
|
export const deleteFolderTool = {
|
|
109
145
|
name: "delete_folder",
|
|
110
|
-
description:
|
|
146
|
+
description: `Purpose: PERMANENTLY DELETE a folder and all its contents.
|
|
147
|
+
|
|
148
|
+
Valid Usage:
|
|
149
|
+
1. Use folderId alone (preferred and safest)
|
|
150
|
+
2. Use folderName + (spaceId or spaceName)
|
|
151
|
+
|
|
152
|
+
Requirements:
|
|
153
|
+
- EITHER folderId OR (folderName + space information) is REQUIRED
|
|
154
|
+
- When using folderName, you MUST provide EITHER spaceId OR spaceName
|
|
155
|
+
|
|
156
|
+
⚠️ CRITICAL WARNING:
|
|
157
|
+
- This action CANNOT be undone
|
|
158
|
+
- All lists and tasks within the folder will also be permanently deleted
|
|
159
|
+
- Using folderName is risky as names may not be unique across different spaces`,
|
|
111
160
|
inputSchema: {
|
|
112
161
|
type: "object",
|
|
113
162
|
properties: {
|
|
@@ -163,23 +212,18 @@ export async function handleCreateFolder(parameters) {
|
|
|
163
212
|
try {
|
|
164
213
|
// Create the folder
|
|
165
214
|
const newFolder = await folderService.createFolder(targetSpaceId, folderData);
|
|
166
|
-
return {
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
},
|
|
176
|
-
message: `Folder "${newFolder.name}" created successfully`
|
|
177
|
-
}, null, 2)
|
|
178
|
-
}]
|
|
179
|
-
};
|
|
215
|
+
return sponsorService.createResponse({
|
|
216
|
+
id: newFolder.id,
|
|
217
|
+
name: newFolder.name,
|
|
218
|
+
space: {
|
|
219
|
+
id: newFolder.space.id,
|
|
220
|
+
name: newFolder.space.name
|
|
221
|
+
},
|
|
222
|
+
message: `Folder "${newFolder.name}" created successfully`
|
|
223
|
+
}, true);
|
|
180
224
|
}
|
|
181
225
|
catch (error) {
|
|
182
|
-
|
|
226
|
+
return sponsorService.createErrorResponse(`Failed to create folder: ${error.message}`);
|
|
183
227
|
}
|
|
184
228
|
}
|
|
185
229
|
/**
|
|
@@ -215,22 +259,17 @@ export async function handleGetFolder(parameters) {
|
|
|
215
259
|
try {
|
|
216
260
|
// Get the folder
|
|
217
261
|
const folder = await folderService.getFolder(targetFolderId);
|
|
218
|
-
return {
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
name: folder.space.name
|
|
227
|
-
}
|
|
228
|
-
}, null, 2)
|
|
229
|
-
}]
|
|
230
|
-
};
|
|
262
|
+
return sponsorService.createResponse({
|
|
263
|
+
id: folder.id,
|
|
264
|
+
name: folder.name,
|
|
265
|
+
space: {
|
|
266
|
+
id: folder.space.id,
|
|
267
|
+
name: folder.space.name
|
|
268
|
+
}
|
|
269
|
+
}, true);
|
|
231
270
|
}
|
|
232
271
|
catch (error) {
|
|
233
|
-
|
|
272
|
+
return sponsorService.createErrorResponse(`Failed to retrieve folder: ${error.message}`);
|
|
234
273
|
}
|
|
235
274
|
}
|
|
236
275
|
/**
|
|
@@ -276,23 +315,18 @@ export async function handleUpdateFolder(parameters) {
|
|
|
276
315
|
try {
|
|
277
316
|
// Update the folder
|
|
278
317
|
const updatedFolder = await folderService.updateFolder(targetFolderId, updateData);
|
|
279
|
-
return {
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
},
|
|
289
|
-
message: `Folder "${updatedFolder.name}" updated successfully`
|
|
290
|
-
}, null, 2)
|
|
291
|
-
}]
|
|
292
|
-
};
|
|
318
|
+
return sponsorService.createResponse({
|
|
319
|
+
id: updatedFolder.id,
|
|
320
|
+
name: updatedFolder.name,
|
|
321
|
+
space: {
|
|
322
|
+
id: updatedFolder.space.id,
|
|
323
|
+
name: updatedFolder.space.name
|
|
324
|
+
},
|
|
325
|
+
message: `Folder "${updatedFolder.name}" updated successfully`
|
|
326
|
+
}, true);
|
|
293
327
|
}
|
|
294
328
|
catch (error) {
|
|
295
|
-
|
|
329
|
+
return sponsorService.createErrorResponse(`Failed to update folder: ${error.message}`);
|
|
296
330
|
}
|
|
297
331
|
}
|
|
298
332
|
/**
|
|
@@ -331,17 +365,12 @@ export async function handleDeleteFolder(parameters) {
|
|
|
331
365
|
const folderName = folder.name;
|
|
332
366
|
// Delete the folder
|
|
333
367
|
await folderService.deleteFolder(targetFolderId);
|
|
334
|
-
return {
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
success: true,
|
|
339
|
-
message: `Folder "${folderName || targetFolderId}" deleted successfully`
|
|
340
|
-
}, null, 2)
|
|
341
|
-
}]
|
|
342
|
-
};
|
|
368
|
+
return sponsorService.createResponse({
|
|
369
|
+
success: true,
|
|
370
|
+
message: `Folder "${folderName || targetFolderId}" deleted successfully`
|
|
371
|
+
}, true);
|
|
343
372
|
}
|
|
344
373
|
catch (error) {
|
|
345
|
-
|
|
374
|
+
return sponsorService.createErrorResponse(`Failed to delete folder: ${error.message}`);
|
|
346
375
|
}
|
|
347
376
|
}
|