@chykalophia/clickup-mcp-server 3.2.0

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.
Files changed (211) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +467 -0
  3. package/bin/clickup-mcp-server-ai.js +9 -0
  4. package/bin/clickup-mcp-server-basic.js +9 -0
  5. package/bin/clickup-mcp-server-efficiency.js +9 -0
  6. package/bin/clickup-mcp-server-enhanced.js +9 -0
  7. package/build/app.d.ts +1 -0
  8. package/build/app.js +2 -0
  9. package/build/app.js.map +1 -0
  10. package/build/clickup-client/attachments-enhanced.d.ts +128 -0
  11. package/build/clickup-client/attachments-enhanced.js +212 -0
  12. package/build/clickup-client/attachments-enhanced.js.map +1 -0
  13. package/build/clickup-client/auth.d.ts +254 -0
  14. package/build/clickup-client/auth.js +105 -0
  15. package/build/clickup-client/auth.js.map +1 -0
  16. package/build/clickup-client/chat-enhanced.d.ts +141 -0
  17. package/build/clickup-client/chat-enhanced.js +196 -0
  18. package/build/clickup-client/chat-enhanced.js.map +1 -0
  19. package/build/clickup-client/checklists.d.ts +87 -0
  20. package/build/clickup-client/checklists.js +63 -0
  21. package/build/clickup-client/checklists.js.map +1 -0
  22. package/build/clickup-client/comments-enhanced.d.ts +176 -0
  23. package/build/clickup-client/comments-enhanced.js +230 -0
  24. package/build/clickup-client/comments-enhanced.js.map +1 -0
  25. package/build/clickup-client/comments.d.ts +173 -0
  26. package/build/clickup-client/comments.js +312 -0
  27. package/build/clickup-client/comments.js.map +1 -0
  28. package/build/clickup-client/custom-fields-enhanced.d.ts +286 -0
  29. package/build/clickup-client/custom-fields-enhanced.js +416 -0
  30. package/build/clickup-client/custom-fields-enhanced.js.map +1 -0
  31. package/build/clickup-client/dependencies-enhanced.d.ts +144 -0
  32. package/build/clickup-client/dependencies-enhanced.js +142 -0
  33. package/build/clickup-client/dependencies-enhanced.js.map +1 -0
  34. package/build/clickup-client/docs-enhanced.d.ts +176 -0
  35. package/build/clickup-client/docs-enhanced.js +374 -0
  36. package/build/clickup-client/docs-enhanced.js.map +1 -0
  37. package/build/clickup-client/docs.d.ts +84 -0
  38. package/build/clickup-client/docs.js +156 -0
  39. package/build/clickup-client/docs.js.map +1 -0
  40. package/build/clickup-client/folders.d.ts +62 -0
  41. package/build/clickup-client/folders.js +53 -0
  42. package/build/clickup-client/folders.js.map +1 -0
  43. package/build/clickup-client/goals-enhanced.d.ts +163 -0
  44. package/build/clickup-client/goals-enhanced.js +309 -0
  45. package/build/clickup-client/goals-enhanced.js.map +1 -0
  46. package/build/clickup-client/index.d.ts +16 -0
  47. package/build/clickup-client/index.js +61 -0
  48. package/build/clickup-client/index.js.map +1 -0
  49. package/build/clickup-client/lists.d.ts +105 -0
  50. package/build/clickup-client/lists.js +108 -0
  51. package/build/clickup-client/lists.js.map +1 -0
  52. package/build/clickup-client/secure-client.d.ts +88 -0
  53. package/build/clickup-client/secure-client.js +275 -0
  54. package/build/clickup-client/secure-client.js.map +1 -0
  55. package/build/clickup-client/spaces.d.ts +58 -0
  56. package/build/clickup-client/spaces.js +28 -0
  57. package/build/clickup-client/spaces.js.map +1 -0
  58. package/build/clickup-client/tasks.d.ts +161 -0
  59. package/build/clickup-client/tasks.js +99 -0
  60. package/build/clickup-client/tasks.js.map +1 -0
  61. package/build/clickup-client/time-tracking-enhanced.d.ts +153 -0
  62. package/build/clickup-client/time-tracking-enhanced.js +292 -0
  63. package/build/clickup-client/time-tracking-enhanced.js.map +1 -0
  64. package/build/clickup-client/views-enhanced.d.ts +149 -0
  65. package/build/clickup-client/views-enhanced.js +210 -0
  66. package/build/clickup-client/views-enhanced.js.map +1 -0
  67. package/build/clickup-client/webhooks-enhanced.d.ts +119 -0
  68. package/build/clickup-client/webhooks-enhanced.js +169 -0
  69. package/build/clickup-client/webhooks-enhanced.js.map +1 -0
  70. package/build/controllers/lists.controller.d.ts +1 -0
  71. package/build/controllers/lists.controller.js +2 -0
  72. package/build/controllers/lists.controller.js.map +1 -0
  73. package/build/index-efficiency-simple.d.ts +2 -0
  74. package/build/index-efficiency-simple.js +379 -0
  75. package/build/index-efficiency-simple.js.map +1 -0
  76. package/build/index-enhanced-efficiency.d.ts +2 -0
  77. package/build/index-enhanced-efficiency.js +275 -0
  78. package/build/index-enhanced-efficiency.js.map +1 -0
  79. package/build/index-enhanced.d.ts +2 -0
  80. package/build/index-enhanced.js +74 -0
  81. package/build/index-enhanced.js.map +1 -0
  82. package/build/index.d.ts +2 -0
  83. package/build/index.js +77 -0
  84. package/build/index.js.map +1 -0
  85. package/build/resources/checklist-resources.d.ts +2 -0
  86. package/build/resources/checklist-resources.js +102 -0
  87. package/build/resources/checklist-resources.js.map +1 -0
  88. package/build/resources/comment-resources.d.ts +2 -0
  89. package/build/resources/comment-resources.js +152 -0
  90. package/build/resources/comment-resources.js.map +1 -0
  91. package/build/resources/doc-resources.d.ts +2 -0
  92. package/build/resources/doc-resources.js +77 -0
  93. package/build/resources/doc-resources.js.map +1 -0
  94. package/build/resources/folder-resources.d.ts +2 -0
  95. package/build/resources/folder-resources.js +160 -0
  96. package/build/resources/folder-resources.js.map +1 -0
  97. package/build/resources/list-resources.d.ts +2 -0
  98. package/build/resources/list-resources.js +104 -0
  99. package/build/resources/list-resources.js.map +1 -0
  100. package/build/resources/space-resources.d.ts +2 -0
  101. package/build/resources/space-resources.js +104 -0
  102. package/build/resources/space-resources.js.map +1 -0
  103. package/build/resources/task-resources.d.ts +2 -0
  104. package/build/resources/task-resources.js +57 -0
  105. package/build/resources/task-resources.js.map +1 -0
  106. package/build/routes/lists.routes.d.ts +1 -0
  107. package/build/routes/lists.routes.js +2 -0
  108. package/build/routes/lists.routes.js.map +1 -0
  109. package/build/schemas/attachments-schemas.d.ts +201 -0
  110. package/build/schemas/attachments-schemas.js +250 -0
  111. package/build/schemas/attachments-schemas.js.map +1 -0
  112. package/build/schemas/chat-schemas.d.ts +478 -0
  113. package/build/schemas/chat-schemas.js +173 -0
  114. package/build/schemas/chat-schemas.js.map +1 -0
  115. package/build/schemas/custom-field-schemas.d.ts +1617 -0
  116. package/build/schemas/custom-field-schemas.js +384 -0
  117. package/build/schemas/custom-field-schemas.js.map +1 -0
  118. package/build/schemas/dependencies-schemas.d.ts +274 -0
  119. package/build/schemas/dependencies-schemas.js +176 -0
  120. package/build/schemas/dependencies-schemas.js.map +1 -0
  121. package/build/schemas/document-schemas.d.ts +433 -0
  122. package/build/schemas/document-schemas.js +168 -0
  123. package/build/schemas/document-schemas.js.map +1 -0
  124. package/build/schemas/goals-schemas.d.ts +961 -0
  125. package/build/schemas/goals-schemas.js +293 -0
  126. package/build/schemas/goals-schemas.js.map +1 -0
  127. package/build/schemas/time-tracking-schemas.d.ts +741 -0
  128. package/build/schemas/time-tracking-schemas.js +234 -0
  129. package/build/schemas/time-tracking-schemas.js.map +1 -0
  130. package/build/schemas/views-schemas.d.ts +1168 -0
  131. package/build/schemas/views-schemas.js +221 -0
  132. package/build/schemas/views-schemas.js.map +1 -0
  133. package/build/schemas/webhook-schemas.d.ts +1127 -0
  134. package/build/schemas/webhook-schemas.js +137 -0
  135. package/build/schemas/webhook-schemas.js.map +1 -0
  136. package/build/services/lists.service.d.ts +1 -0
  137. package/build/services/lists.service.js +2 -0
  138. package/build/services/lists.service.js.map +1 -0
  139. package/build/tools/attachments-tools-setup.d.ts +2 -0
  140. package/build/tools/attachments-tools-setup.js +387 -0
  141. package/build/tools/attachments-tools-setup.js.map +1 -0
  142. package/build/tools/chat-tools-enhanced.d.ts +5 -0
  143. package/build/tools/chat-tools-enhanced.js +396 -0
  144. package/build/tools/chat-tools-enhanced.js.map +1 -0
  145. package/build/tools/chat-tools.d.ts +2 -0
  146. package/build/tools/chat-tools.js +614 -0
  147. package/build/tools/chat-tools.js.map +1 -0
  148. package/build/tools/checklist-tools.d.ts +2 -0
  149. package/build/tools/checklist-tools.js +139 -0
  150. package/build/tools/checklist-tools.js.map +1 -0
  151. package/build/tools/comment-tools.d.ts +2 -0
  152. package/build/tools/comment-tools.js +295 -0
  153. package/build/tools/comment-tools.js.map +1 -0
  154. package/build/tools/custom-field-tools.d.ts +2 -0
  155. package/build/tools/custom-field-tools.js +578 -0
  156. package/build/tools/custom-field-tools.js.map +1 -0
  157. package/build/tools/dependencies-tools-setup.d.ts +2 -0
  158. package/build/tools/dependencies-tools-setup.js +319 -0
  159. package/build/tools/dependencies-tools-setup.js.map +1 -0
  160. package/build/tools/doc-tools-enhanced.d.ts +2 -0
  161. package/build/tools/doc-tools-enhanced.js +417 -0
  162. package/build/tools/doc-tools-enhanced.js.map +1 -0
  163. package/build/tools/doc-tools.d.ts +2 -0
  164. package/build/tools/doc-tools.js +109 -0
  165. package/build/tools/doc-tools.js.map +1 -0
  166. package/build/tools/goals-tools.d.ts +2 -0
  167. package/build/tools/goals-tools.js +422 -0
  168. package/build/tools/goals-tools.js.map +1 -0
  169. package/build/tools/helper-tools.d.ts +2 -0
  170. package/build/tools/helper-tools.js +363 -0
  171. package/build/tools/helper-tools.js.map +1 -0
  172. package/build/tools/space-tools.d.ts +2 -0
  173. package/build/tools/space-tools.js +45 -0
  174. package/build/tools/space-tools.js.map +1 -0
  175. package/build/tools/task-tools.d.ts +2 -0
  176. package/build/tools/task-tools.js +415 -0
  177. package/build/tools/task-tools.js.map +1 -0
  178. package/build/tools/time-tracking-tools.d.ts +2 -0
  179. package/build/tools/time-tracking-tools.js +329 -0
  180. package/build/tools/time-tracking-tools.js.map +1 -0
  181. package/build/tools/views-tools-setup.d.ts +2 -0
  182. package/build/tools/views-tools-setup.js +358 -0
  183. package/build/tools/views-tools-setup.js.map +1 -0
  184. package/build/tools/webhook-tools-setup.d.ts +2 -0
  185. package/build/tools/webhook-tools-setup.js +304 -0
  186. package/build/tools/webhook-tools-setup.js.map +1 -0
  187. package/build/tools/webhook-tools.d.ts +4 -0
  188. package/build/tools/webhook-tools.js +345 -0
  189. package/build/tools/webhook-tools.js.map +1 -0
  190. package/build/utils/clickup-comment-formatter.d.ts +124 -0
  191. package/build/utils/clickup-comment-formatter.js +504 -0
  192. package/build/utils/clickup-comment-formatter.js.map +1 -0
  193. package/build/utils/context-aware-suggestions.d.ts +45 -0
  194. package/build/utils/context-aware-suggestions.js +360 -0
  195. package/build/utils/context-aware-suggestions.js.map +1 -0
  196. package/build/utils/error-handling.d.ts +140 -0
  197. package/build/utils/error-handling.js +392 -0
  198. package/build/utils/error-handling.js.map +1 -0
  199. package/build/utils/markdown-styling.d.ts +40 -0
  200. package/build/utils/markdown-styling.js +344 -0
  201. package/build/utils/markdown-styling.js.map +1 -0
  202. package/build/utils/markdown.d.ts +54 -0
  203. package/build/utils/markdown.js +243 -0
  204. package/build/utils/markdown.js.map +1 -0
  205. package/build/utils/security.d.ts +79 -0
  206. package/build/utils/security.js +303 -0
  207. package/build/utils/security.js.map +1 -0
  208. package/build/utils/tool-efficiency.d.ts +59 -0
  209. package/build/utils/tool-efficiency.js +247 -0
  210. package/build/utils/tool-efficiency.js.map +1 -0
  211. package/package.json +130 -0
@@ -0,0 +1,578 @@
1
+ import { z } from 'zod';
2
+ import { createClickUpClient } from '../clickup-client/index.js';
3
+ import { createEnhancedCustomFieldsClient } from '../clickup-client/custom-fields-enhanced.js';
4
+ import { /* CustomFieldToolSchemas, */ DropdownOptionSchema } from '../schemas/custom-field-schemas.js';
5
+ // Create clients
6
+ const clickUpClient = createClickUpClient();
7
+ const customFieldsClient = createEnhancedCustomFieldsClient(clickUpClient);
8
+ export function setupCustomFieldTools(server) {
9
+ // ========================================
10
+ // GET CUSTOM FIELDS OPERATIONS
11
+ // ========================================
12
+ server.tool('get_custom_fields', 'Get custom fields for a ClickUp list, folder, or space. Returns all field definitions with their configurations.', {
13
+ container_type: z.enum(['list', 'folder', 'space']).describe('The type of container to get custom fields from'),
14
+ container_id: z.string().min(1).describe('The ID of the container (list, folder, or space)'),
15
+ include_deleted: z.boolean().optional().default(false).describe('Whether to include deleted custom fields')
16
+ }, async ({ container_type, container_id, include_deleted }) => {
17
+ try {
18
+ let fields;
19
+ switch (container_type) {
20
+ case 'list':
21
+ fields = await customFieldsClient.getListCustomFields(container_id, { include_deleted });
22
+ break;
23
+ case 'folder':
24
+ fields = await customFieldsClient.getFolderCustomFields(container_id, { include_deleted });
25
+ break;
26
+ case 'space':
27
+ fields = await customFieldsClient.getSpaceCustomFields(container_id, { include_deleted });
28
+ break;
29
+ default:
30
+ throw new Error('Invalid container type');
31
+ }
32
+ return {
33
+ content: [{
34
+ type: 'text',
35
+ text: `Custom fields for ${container_type} ${container_id}:\n\n${JSON.stringify(fields, null, 2)}`
36
+ }]
37
+ };
38
+ }
39
+ catch (error) {
40
+ console.error('Error getting custom fields:', error);
41
+ return {
42
+ content: [{ type: 'text', text: `Error getting custom fields: ${error.message}` }],
43
+ isError: true
44
+ };
45
+ }
46
+ });
47
+ // ========================================
48
+ // CREATE CUSTOM FIELD OPERATIONS
49
+ // ========================================
50
+ server.tool('create_custom_field', 'Create a new custom field in a ClickUp list, folder, or space. Supports all field types with type-specific configurations.', {
51
+ container_type: z.enum(['list', 'folder', 'space']).describe('The type of container to create the custom field in'),
52
+ container_id: z.string().min(1).describe('The ID of the container (list, folder, or space)'),
53
+ name: z.string().min(1).max(255).describe('The name of the custom field'),
54
+ type: z.enum([
55
+ 'text', 'textarea',
56
+ 'number', 'currency',
57
+ 'date',
58
+ 'drop_down', 'labels',
59
+ 'checkbox',
60
+ 'url', 'email', 'phone',
61
+ 'rating', 'progress',
62
+ 'task_relationship'
63
+ ]).describe('The type of custom field to create'),
64
+ type_config: z.record(z.any()).optional().describe('Type-specific configuration object'),
65
+ required: z.boolean().optional().default(false).describe('Whether the field is required'),
66
+ hide_from_guests: z.boolean().optional().default(false).describe('Whether to hide the field from guests')
67
+ }, async ({ container_type, container_id, name, type, type_config, required, hide_from_guests }) => {
68
+ try {
69
+ // Get default configuration for field type if not provided
70
+ const finalTypeConfig = type_config || customFieldsClient.getFieldTypeTemplate(type);
71
+ const fieldParams = {
72
+ name,
73
+ type: type,
74
+ type_config: finalTypeConfig,
75
+ required,
76
+ hide_from_guests
77
+ };
78
+ let field;
79
+ switch (container_type) {
80
+ case 'list':
81
+ field = await customFieldsClient.createListCustomField(container_id, fieldParams);
82
+ break;
83
+ case 'folder':
84
+ field = await customFieldsClient.createFolderCustomField(container_id, fieldParams);
85
+ break;
86
+ case 'space':
87
+ field = await customFieldsClient.createSpaceCustomField(container_id, fieldParams);
88
+ break;
89
+ default:
90
+ throw new Error('Invalid container type');
91
+ }
92
+ return {
93
+ content: [{
94
+ type: 'text',
95
+ text: `Custom field created successfully in ${container_type} ${container_id}!\n\n${JSON.stringify(field, null, 2)}`
96
+ }]
97
+ };
98
+ }
99
+ catch (error) {
100
+ console.error('Error creating custom field:', error);
101
+ return {
102
+ content: [{ type: 'text', text: `Error creating custom field: ${error.message}` }],
103
+ isError: true
104
+ };
105
+ }
106
+ });
107
+ // ========================================
108
+ // UPDATE CUSTOM FIELD OPERATIONS
109
+ // ========================================
110
+ server.tool('update_custom_field', 'Update an existing custom field. Can modify name, configuration, required status, and guest visibility.', {
111
+ field_id: z.string().min(1).describe('The ID of the custom field to update'),
112
+ name: z.string().min(1).max(255).optional().describe('New name for the custom field'),
113
+ type_config: z.record(z.any()).optional().describe('Updated type-specific configuration'),
114
+ required: z.boolean().optional().describe('Whether the field should be required'),
115
+ hide_from_guests: z.boolean().optional().describe('Whether to hide the field from guests')
116
+ }, async ({ field_id, name, type_config, required, hide_from_guests }) => {
117
+ try {
118
+ // Validate that at least one field is being updated
119
+ if (name === undefined && type_config === undefined &&
120
+ required === undefined && hide_from_guests === undefined) {
121
+ return {
122
+ content: [{ type: 'text', text: 'Error: Must specify at least one field to update (name, type_config, required, or hide_from_guests)' }],
123
+ isError: true
124
+ };
125
+ }
126
+ const updatedField = await customFieldsClient.updateCustomField(field_id, {
127
+ name,
128
+ type_config,
129
+ required,
130
+ hide_from_guests
131
+ });
132
+ return {
133
+ content: [{
134
+ type: 'text',
135
+ text: `Custom field updated successfully!\n\n${JSON.stringify(updatedField, null, 2)}`
136
+ }]
137
+ };
138
+ }
139
+ catch (error) {
140
+ console.error('Error updating custom field:', error);
141
+ return {
142
+ content: [{ type: 'text', text: `Error updating custom field: ${error.message}` }],
143
+ isError: true
144
+ };
145
+ }
146
+ });
147
+ // ========================================
148
+ // DELETE CUSTOM FIELD OPERATIONS
149
+ // ========================================
150
+ server.tool('delete_custom_field', 'Delete a custom field from ClickUp. This will remove the field and all its values from tasks. This action cannot be undone.', {
151
+ field_id: z.string().min(1).describe('The ID of the custom field to delete')
152
+ }, async ({ field_id }) => {
153
+ try {
154
+ await customFieldsClient.deleteCustomField(field_id);
155
+ return {
156
+ content: [{
157
+ type: 'text',
158
+ text: `Custom field ${field_id} deleted successfully. All field values have been removed from tasks.`
159
+ }]
160
+ };
161
+ }
162
+ catch (error) {
163
+ console.error('Error deleting custom field:', error);
164
+ return {
165
+ content: [{ type: 'text', text: `Error deleting custom field: ${error.message}` }],
166
+ isError: true
167
+ };
168
+ }
169
+ });
170
+ // ========================================
171
+ // CUSTOM FIELD VALUE OPERATIONS
172
+ // ========================================
173
+ server.tool('set_custom_field_value', 'Set a custom field value on a ClickUp task. The value format depends on the field type.', {
174
+ task_id: z.string().min(1).describe('The ID of the task to set the custom field value on'),
175
+ field_id: z.string().min(1).describe('The ID of the custom field'),
176
+ value: z.any().describe('The value to set (format depends on field type)')
177
+ }, async ({ task_id, field_id, value }) => {
178
+ try {
179
+ await customFieldsClient.setCustomFieldValue(task_id, field_id, value);
180
+ return {
181
+ content: [{
182
+ type: 'text',
183
+ text: `Custom field value set successfully on task ${task_id} for field ${field_id}.`
184
+ }]
185
+ };
186
+ }
187
+ catch (error) {
188
+ console.error('Error setting custom field value:', error);
189
+ return {
190
+ content: [{ type: 'text', text: `Error setting custom field value: ${error.message}` }],
191
+ isError: true
192
+ };
193
+ }
194
+ });
195
+ server.tool('remove_custom_field_value', 'Remove a custom field value from a ClickUp task. This clears the field value but keeps the field definition.', {
196
+ task_id: z.string().min(1).describe('The ID of the task to remove the custom field value from'),
197
+ field_id: z.string().min(1).describe('The ID of the custom field to clear')
198
+ }, async ({ task_id, field_id }) => {
199
+ try {
200
+ await customFieldsClient.removeCustomFieldValue(task_id, field_id);
201
+ return {
202
+ content: [{
203
+ type: 'text',
204
+ text: `Custom field value removed successfully from task ${task_id} for field ${field_id}.`
205
+ }]
206
+ };
207
+ }
208
+ catch (error) {
209
+ console.error('Error removing custom field value:', error);
210
+ return {
211
+ content: [{ type: 'text', text: `Error removing custom field value: ${error.message}` }],
212
+ isError: true
213
+ };
214
+ }
215
+ });
216
+ server.tool('get_custom_field_value', 'Get a custom field value from a ClickUp task. Returns the current value and field information.', {
217
+ task_id: z.string().min(1).describe('The ID of the task to get the custom field value from'),
218
+ field_id: z.string().min(1).describe('The ID of the custom field to retrieve')
219
+ }, async ({ task_id, field_id }) => {
220
+ try {
221
+ const value = await customFieldsClient.getCustomFieldValue(task_id, field_id);
222
+ return {
223
+ content: [{
224
+ type: 'text',
225
+ text: `Custom field value for task ${task_id}, field ${field_id}:\n\n${JSON.stringify(value, null, 2)}`
226
+ }]
227
+ };
228
+ }
229
+ catch (error) {
230
+ console.error('Error getting custom field value:', error);
231
+ return {
232
+ content: [{ type: 'text', text: `Error getting custom field value: ${error.message}` }],
233
+ isError: true
234
+ };
235
+ }
236
+ });
237
+ server.tool('bulk_set_custom_field_values', 'Set multiple custom field values on a ClickUp task in a single operation. More efficient than setting values individually.', {
238
+ task_id: z.string().min(1).describe('The ID of the task to set custom field values on'),
239
+ field_values: z.array(z.object({
240
+ field_id: z.string().min(1).describe('The ID of the custom field'),
241
+ value: z.any().describe('The value to set (format depends on field type)')
242
+ })).min(1).describe('Array of field ID and value pairs to set')
243
+ }, async ({ task_id, field_values }) => {
244
+ try {
245
+ // Ensure all field_values have the required properties
246
+ const validatedFieldValues = field_values.map(fv => ({
247
+ field_id: fv.field_id,
248
+ value: fv.value
249
+ }));
250
+ const results = await customFieldsClient.bulkSetCustomFieldValues(task_id, validatedFieldValues);
251
+ return {
252
+ content: [{
253
+ type: 'text',
254
+ text: `Bulk custom field values set successfully on task ${task_id}!\n\nResults:\n${JSON.stringify(results, null, 2)}`
255
+ }]
256
+ };
257
+ }
258
+ catch (error) {
259
+ console.error('Error bulk setting custom field values:', error);
260
+ return {
261
+ content: [{ type: 'text', text: `Error bulk setting custom field values: ${error.message}` }],
262
+ isError: true
263
+ };
264
+ }
265
+ });
266
+ server.tool('get_task_custom_field_values', 'Get all custom field values for a ClickUp task. Returns all field values with their definitions.', {
267
+ task_id: z.string().min(1).describe('The ID of the task to get custom field values from')
268
+ }, async ({ task_id }) => {
269
+ try {
270
+ const values = await customFieldsClient.getTaskCustomFieldValues(task_id);
271
+ return {
272
+ content: [{
273
+ type: 'text',
274
+ text: `All custom field values for task ${task_id}:\n\n${JSON.stringify(values, null, 2)}`
275
+ }]
276
+ };
277
+ }
278
+ catch (error) {
279
+ console.error('Error getting task custom field values:', error);
280
+ return {
281
+ content: [{ type: 'text', text: `Error getting task custom field values: ${error.message}` }],
282
+ isError: true
283
+ };
284
+ }
285
+ });
286
+ // ========================================
287
+ // HELPER TOOLS FOR FIELD CREATION
288
+ // ========================================
289
+ server.tool('create_text_custom_field', 'Create a text custom field with optional default value and placeholder.', {
290
+ container_type: z.enum(['list', 'folder', 'space']).describe('The type of container'),
291
+ container_id: z.string().min(1).describe('The ID of the container'),
292
+ name: z.string().min(1).max(255).describe('The name of the text field'),
293
+ default_value: z.string().optional().describe('Default text value'),
294
+ placeholder: z.string().optional().describe('Placeholder text'),
295
+ required: z.boolean().optional().default(false).describe('Whether the field is required'),
296
+ hide_from_guests: z.boolean().optional().default(false).describe('Whether to hide from guests')
297
+ }, async ({ container_type, container_id, name, default_value, placeholder, required, hide_from_guests }) => {
298
+ try {
299
+ const type_config = {
300
+ default: default_value,
301
+ placeholder
302
+ };
303
+ const fieldParams = {
304
+ name,
305
+ type: 'text',
306
+ type_config,
307
+ required,
308
+ hide_from_guests
309
+ };
310
+ let field;
311
+ switch (container_type) {
312
+ case 'list':
313
+ field = await customFieldsClient.createListCustomField(container_id, fieldParams);
314
+ break;
315
+ case 'folder':
316
+ field = await customFieldsClient.createFolderCustomField(container_id, fieldParams);
317
+ break;
318
+ case 'space':
319
+ field = await customFieldsClient.createSpaceCustomField(container_id, fieldParams);
320
+ break;
321
+ }
322
+ return {
323
+ content: [{
324
+ type: 'text',
325
+ text: `Text custom field created successfully!\n\n${JSON.stringify(field, null, 2)}`
326
+ }]
327
+ };
328
+ }
329
+ catch (error) {
330
+ console.error('Error creating text custom field:', error);
331
+ return {
332
+ content: [{ type: 'text', text: `Error creating text custom field: ${error.message}` }],
333
+ isError: true
334
+ };
335
+ }
336
+ });
337
+ server.tool('create_dropdown_custom_field', 'Create a dropdown custom field with specified options.', {
338
+ container_type: z.enum(['list', 'folder', 'space']).describe('The type of container'),
339
+ container_id: z.string().min(1).describe('The ID of the container'),
340
+ name: z.string().min(1).max(255).describe('The name of the dropdown field'),
341
+ options: z.array(DropdownOptionSchema).min(1).describe('Array of dropdown options'),
342
+ default_option_index: z.number().min(0).optional().describe('Index of default selected option'),
343
+ required: z.boolean().optional().default(false).describe('Whether the field is required'),
344
+ hide_from_guests: z.boolean().optional().default(false).describe('Whether to hide from guests')
345
+ }, async ({ container_type, container_id, name, options, default_option_index, required, hide_from_guests }) => {
346
+ try {
347
+ const type_config = {
348
+ options: options.map((option, index) => ({
349
+ ...option,
350
+ orderindex: option.orderindex ?? index
351
+ })),
352
+ default: default_option_index
353
+ };
354
+ const fieldParams = {
355
+ name,
356
+ type: 'drop_down',
357
+ type_config,
358
+ required,
359
+ hide_from_guests
360
+ };
361
+ let field;
362
+ switch (container_type) {
363
+ case 'list':
364
+ field = await customFieldsClient.createListCustomField(container_id, fieldParams);
365
+ break;
366
+ case 'folder':
367
+ field = await customFieldsClient.createFolderCustomField(container_id, fieldParams);
368
+ break;
369
+ case 'space':
370
+ field = await customFieldsClient.createSpaceCustomField(container_id, fieldParams);
371
+ break;
372
+ }
373
+ return {
374
+ content: [{
375
+ type: 'text',
376
+ text: `Dropdown custom field created successfully with ${options.length} options!\n\n${JSON.stringify(field, null, 2)}`
377
+ }]
378
+ };
379
+ }
380
+ catch (error) {
381
+ console.error('Error creating dropdown custom field:', error);
382
+ return {
383
+ content: [{ type: 'text', text: `Error creating dropdown custom field: ${error.message}` }],
384
+ isError: true
385
+ };
386
+ }
387
+ });
388
+ server.tool('create_number_custom_field', 'Create a number custom field with optional precision and default value.', {
389
+ container_type: z.enum(['list', 'folder', 'space']).describe('The type of container'),
390
+ container_id: z.string().min(1).describe('The ID of the container'),
391
+ name: z.string().min(1).max(255).describe('The name of the number field'),
392
+ default_value: z.number().optional().describe('Default numeric value'),
393
+ precision: z.number().min(0).max(8).optional().default(0).describe('Number of decimal places (0-8)'),
394
+ required: z.boolean().optional().default(false).describe('Whether the field is required'),
395
+ hide_from_guests: z.boolean().optional().default(false).describe('Whether to hide from guests')
396
+ }, async ({ container_type, container_id, name, default_value, precision, required, hide_from_guests }) => {
397
+ try {
398
+ const type_config = {
399
+ default: default_value,
400
+ precision
401
+ };
402
+ const fieldParams = {
403
+ name,
404
+ type: 'number',
405
+ type_config,
406
+ required,
407
+ hide_from_guests
408
+ };
409
+ let field;
410
+ switch (container_type) {
411
+ case 'list':
412
+ field = await customFieldsClient.createListCustomField(container_id, fieldParams);
413
+ break;
414
+ case 'folder':
415
+ field = await customFieldsClient.createFolderCustomField(container_id, fieldParams);
416
+ break;
417
+ case 'space':
418
+ field = await customFieldsClient.createSpaceCustomField(container_id, fieldParams);
419
+ break;
420
+ }
421
+ return {
422
+ content: [{
423
+ type: 'text',
424
+ text: `Number custom field created successfully with ${precision} decimal places!\n\n${JSON.stringify(field, null, 2)}`
425
+ }]
426
+ };
427
+ }
428
+ catch (error) {
429
+ console.error('Error creating number custom field:', error);
430
+ return {
431
+ content: [{ type: 'text', text: `Error creating number custom field: ${error.message}` }],
432
+ isError: true
433
+ };
434
+ }
435
+ });
436
+ server.tool('create_date_custom_field', 'Create a date custom field with optional time inclusion.', {
437
+ container_type: z.enum(['list', 'folder', 'space']).describe('The type of container'),
438
+ container_id: z.string().min(1).describe('The ID of the container'),
439
+ name: z.string().min(1).max(255).describe('The name of the date field'),
440
+ include_time: z.boolean().optional().default(false).describe('Whether to include time in the date field'),
441
+ default_value: z.number().positive().optional().describe('Default date value (Unix timestamp)'),
442
+ required: z.boolean().optional().default(false).describe('Whether the field is required'),
443
+ hide_from_guests: z.boolean().optional().default(false).describe('Whether to hide from guests')
444
+ }, async ({ container_type, container_id, name, include_time, default_value, required, hide_from_guests }) => {
445
+ try {
446
+ const type_config = {
447
+ include_time,
448
+ default: default_value
449
+ };
450
+ const fieldParams = {
451
+ name,
452
+ type: 'date',
453
+ type_config,
454
+ required,
455
+ hide_from_guests
456
+ };
457
+ let field;
458
+ switch (container_type) {
459
+ case 'list':
460
+ field = await customFieldsClient.createListCustomField(container_id, fieldParams);
461
+ break;
462
+ case 'folder':
463
+ field = await customFieldsClient.createFolderCustomField(container_id, fieldParams);
464
+ break;
465
+ case 'space':
466
+ field = await customFieldsClient.createSpaceCustomField(container_id, fieldParams);
467
+ break;
468
+ }
469
+ return {
470
+ content: [{
471
+ type: 'text',
472
+ text: `Date custom field created successfully${include_time ? ' with time support' : ''}!\n\n${JSON.stringify(field, null, 2)}`
473
+ }]
474
+ };
475
+ }
476
+ catch (error) {
477
+ console.error('Error creating date custom field:', error);
478
+ return {
479
+ content: [{ type: 'text', text: `Error creating date custom field: ${error.message}` }],
480
+ isError: true
481
+ };
482
+ }
483
+ });
484
+ server.tool('create_checkbox_custom_field', 'Create a checkbox (boolean) custom field with optional default value.', {
485
+ container_type: z.enum(['list', 'folder', 'space']).describe('The type of container'),
486
+ container_id: z.string().min(1).describe('The ID of the container'),
487
+ name: z.string().min(1).max(255).describe('The name of the checkbox field'),
488
+ default_value: z.boolean().optional().default(false).describe('Default checkbox state'),
489
+ required: z.boolean().optional().default(false).describe('Whether the field is required'),
490
+ hide_from_guests: z.boolean().optional().default(false).describe('Whether to hide from guests')
491
+ }, async ({ container_type, container_id, name, default_value, required, hide_from_guests }) => {
492
+ try {
493
+ const type_config = {
494
+ default: default_value
495
+ };
496
+ const fieldParams = {
497
+ name,
498
+ type: 'checkbox',
499
+ type_config,
500
+ required,
501
+ hide_from_guests
502
+ };
503
+ let field;
504
+ switch (container_type) {
505
+ case 'list':
506
+ field = await customFieldsClient.createListCustomField(container_id, fieldParams);
507
+ break;
508
+ case 'folder':
509
+ field = await customFieldsClient.createFolderCustomField(container_id, fieldParams);
510
+ break;
511
+ case 'space':
512
+ field = await customFieldsClient.createSpaceCustomField(container_id, fieldParams);
513
+ break;
514
+ }
515
+ return {
516
+ content: [{
517
+ type: 'text',
518
+ text: `Checkbox custom field created successfully!\n\n${JSON.stringify(field, null, 2)}`
519
+ }]
520
+ };
521
+ }
522
+ catch (error) {
523
+ console.error('Error creating checkbox custom field:', error);
524
+ return {
525
+ content: [{ type: 'text', text: `Error creating checkbox custom field: ${error.message}` }],
526
+ isError: true
527
+ };
528
+ }
529
+ });
530
+ // ========================================
531
+ // FIELD VALUE VALIDATION HELPER
532
+ // ========================================
533
+ server.tool('validate_custom_field_value', 'Validate a custom field value against its field type and configuration. Useful for checking values before setting them.', {
534
+ field_id: z.string().min(1).describe('The ID of the custom field'),
535
+ container_type: z.enum(['list', 'folder', 'space']).describe('The type of container the field belongs to'),
536
+ container_id: z.string().min(1).describe('The ID of the container'),
537
+ value: z.any().describe('The value to validate')
538
+ }, async ({ field_id, container_type, container_id, value }) => {
539
+ try {
540
+ // Get the field definition first
541
+ let fields;
542
+ switch (container_type) {
543
+ case 'list':
544
+ fields = await customFieldsClient.getListCustomFields(container_id);
545
+ break;
546
+ case 'folder':
547
+ fields = await customFieldsClient.getFolderCustomFields(container_id);
548
+ break;
549
+ case 'space':
550
+ fields = await customFieldsClient.getSpaceCustomFields(container_id);
551
+ break;
552
+ }
553
+ const field = fields.find(f => f.id === field_id);
554
+ if (!field) {
555
+ return {
556
+ content: [{ type: 'text', text: `Error: Custom field ${field_id} not found in ${container_type} ${container_id}` }],
557
+ isError: true
558
+ };
559
+ }
560
+ // Validate the value
561
+ const isValid = customFieldsClient.validateFieldValue(field, value);
562
+ return {
563
+ content: [{
564
+ type: 'text',
565
+ text: `Validation result for field "${field.name}" (${field.type}):\n\nValue: ${JSON.stringify(value)}\nValid: ${isValid}\n\nField Configuration:\n${JSON.stringify(field.type_config, null, 2)}`
566
+ }]
567
+ };
568
+ }
569
+ catch (error) {
570
+ console.error('Error validating custom field value:', error);
571
+ return {
572
+ content: [{ type: 'text', text: `Error validating custom field value: ${error.message}` }],
573
+ isError: true
574
+ };
575
+ }
576
+ });
577
+ }
578
+ //# sourceMappingURL=custom-field-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"custom-field-tools.js","sourceRoot":"","sources":["../../src/tools/custom-field-tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ export declare function setupDependenciesTools(server: McpServer): void;