@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,139 @@
1
+ import { z } from 'zod';
2
+ import { createClickUpClient } from '../clickup-client/index.js';
3
+ import { createChecklistsClient } from '../clickup-client/checklists.js';
4
+ // Create clients
5
+ const clickUpClient = createClickUpClient();
6
+ const checklistsClient = createChecklistsClient(clickUpClient);
7
+ export function setupChecklistTools(server) {
8
+ // Register create_checklist tool
9
+ server.tool('create_checklist', 'Create a new checklist in a ClickUp task. Returns the created checklist details.', {
10
+ task_id: z.string().describe('The ID of the task to create the checklist in'),
11
+ name: z.string().describe('The name of the checklist')
12
+ }, async ({ task_id, name }) => {
13
+ try {
14
+ const checklist = await checklistsClient.createChecklist(task_id, { name });
15
+ return {
16
+ content: [{ type: 'text', text: JSON.stringify(checklist, null, 2) }]
17
+ };
18
+ }
19
+ catch (error) {
20
+ console.error('Error creating checklist:', error);
21
+ return {
22
+ content: [{ type: 'text', text: `Error creating checklist: ${error.message}` }],
23
+ isError: true
24
+ };
25
+ }
26
+ });
27
+ // Register update_checklist tool
28
+ server.tool('update_checklist', 'Update an existing ClickUp checklist\'s name.', {
29
+ checklist_id: z.string().describe('The ID of the checklist to update'),
30
+ name: z.string().describe('The new name of the checklist')
31
+ }, async ({ checklist_id, name }) => {
32
+ try {
33
+ const checklist = await checklistsClient.updateChecklist(checklist_id, { name });
34
+ return {
35
+ content: [{ type: 'text', text: JSON.stringify(checklist, null, 2) }]
36
+ };
37
+ }
38
+ catch (error) {
39
+ console.error('Error updating checklist:', error);
40
+ return {
41
+ content: [{ type: 'text', text: `Error updating checklist: ${error.message}` }],
42
+ isError: true
43
+ };
44
+ }
45
+ });
46
+ // Register delete_checklist tool
47
+ server.tool('delete_checklist', 'Delete a checklist from a ClickUp task. Removes the checklist and all its items.', {
48
+ checklist_id: z.string().describe('The ID of the checklist to delete')
49
+ }, async ({ checklist_id }) => {
50
+ try {
51
+ const result = await checklistsClient.deleteChecklist(checklist_id);
52
+ return {
53
+ content: [{ type: 'text', text: JSON.stringify(result, null, 2) }]
54
+ };
55
+ }
56
+ catch (error) {
57
+ console.error('Error deleting checklist:', error);
58
+ return {
59
+ content: [{ type: 'text', text: `Error deleting checklist: ${error.message}` }],
60
+ isError: true
61
+ };
62
+ }
63
+ });
64
+ // Register create_checklist_item tool
65
+ server.tool('create_checklist_item', 'Create a new item in a ClickUp checklist. Supports optional assignee and resolved status.', {
66
+ checklist_id: z.string().describe('The ID of the checklist to create the item in'),
67
+ name: z.string().describe('The name of the checklist item'),
68
+ assignee: z.number().optional().describe('The ID of the user to assign to the checklist item'),
69
+ resolved: z.boolean().optional().describe('Whether the checklist item is resolved')
70
+ }, async ({ checklist_id, name, assignee, resolved }) => {
71
+ try {
72
+ const itemParams = { name };
73
+ if (assignee !== undefined)
74
+ itemParams.assignee = assignee;
75
+ if (resolved !== undefined)
76
+ itemParams.resolved = resolved;
77
+ const checklistItem = await checklistsClient.createChecklistItem(checklist_id, itemParams);
78
+ return {
79
+ content: [{ type: 'text', text: JSON.stringify(checklistItem, null, 2) }]
80
+ };
81
+ }
82
+ catch (error) {
83
+ console.error('Error creating checklist item:', error);
84
+ return {
85
+ content: [{ type: 'text', text: `Error creating checklist item: ${error.message}` }],
86
+ isError: true
87
+ };
88
+ }
89
+ });
90
+ // Register update_checklist_item tool
91
+ server.tool('update_checklist_item', 'Update an existing ClickUp checklist item\'s properties including name, assignee, and resolved status.', {
92
+ checklist_id: z.string().describe('The ID of the checklist containing the item'),
93
+ checklist_item_id: z.string().describe('The ID of the checklist item to update'),
94
+ name: z.string().optional().describe('The new name of the checklist item'),
95
+ assignee: z.number().optional().describe('The ID of the user to assign to the checklist item'),
96
+ resolved: z.boolean().optional().describe('Whether the checklist item is resolved')
97
+ }, async ({ checklist_id, checklist_item_id, name, assignee, resolved }) => {
98
+ try {
99
+ const itemParams = {};
100
+ if (name !== undefined)
101
+ itemParams.name = name;
102
+ if (assignee !== undefined)
103
+ itemParams.assignee = assignee;
104
+ if (resolved !== undefined)
105
+ itemParams.resolved = resolved;
106
+ const checklistItem = await checklistsClient.updateChecklistItem(checklist_id, checklist_item_id, itemParams);
107
+ return {
108
+ content: [{ type: 'text', text: JSON.stringify(checklistItem, null, 2) }]
109
+ };
110
+ }
111
+ catch (error) {
112
+ console.error('Error updating checklist item:', error);
113
+ return {
114
+ content: [{ type: 'text', text: `Error updating checklist item: ${error.message}` }],
115
+ isError: true
116
+ };
117
+ }
118
+ });
119
+ // Register delete_checklist_item tool
120
+ server.tool('delete_checklist_item', 'Delete an item from a ClickUp checklist.', {
121
+ checklist_id: z.string().describe('The ID of the checklist containing the item'),
122
+ checklist_item_id: z.string().describe('The ID of the checklist item to delete')
123
+ }, async ({ checklist_id, checklist_item_id }) => {
124
+ try {
125
+ const result = await checklistsClient.deleteChecklistItem(checklist_id, checklist_item_id);
126
+ return {
127
+ content: [{ type: 'text', text: JSON.stringify(result, null, 2) }]
128
+ };
129
+ }
130
+ catch (error) {
131
+ console.error('Error deleting checklist item:', error);
132
+ return {
133
+ content: [{ type: 'text', text: `Error deleting checklist item: ${error.message}` }],
134
+ isError: true
135
+ };
136
+ }
137
+ });
138
+ }
139
+ //# sourceMappingURL=checklist-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checklist-tools.js","sourceRoot":"","sources":["../../src/tools/checklist-tools.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,sBAAsB,EAA4G,MAAM,iCAAiC,CAAC;AAEnL,iBAAiB;AACjB,MAAM,aAAa,GAAG,mBAAmB,EAAE,CAAC;AAC5C,MAAM,gBAAgB,GAAG,sBAAsB,CAAC,aAAa,CAAC,CAAC;AAE/D,MAAM,UAAU,mBAAmB,CAAC,MAAiB;IACnD,iCAAiC;IACjC,MAAM,CAAC,IAAI,CACT,kBAAkB,EAClB,kFAAkF,EAClF;QACE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,+CAA+C,CAAC;QAC7E,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,2BAA2B,CAAC;KACvD,EACD,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE;QAC1B,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,MAAM,gBAAgB,CAAC,eAAe,CAAC,OAAO,EAAE,EAAE,IAAI,EAA2B,CAAC,CAAC;YAErG,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;aACtE,CAAC;QACJ,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAE,KAAK,CAAC,CAAC;YAClD,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,6BAA6B,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;gBAC/E,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;IAEF,iCAAiC;IACjC,MAAM,CAAC,IAAI,CACT,kBAAkB,EAClB,+CAA+C,EAC/C;QACE,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC;QACtE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,+BAA+B,CAAC;KAC3D,EACD,KAAK,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,EAAE;QAC/B,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,MAAM,gBAAgB,CAAC,eAAe,CAAC,YAAY,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;YAEjF,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;aACtE,CAAC;QACJ,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAE,KAAK,CAAC,CAAC;YAClD,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,6BAA6B,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;gBAC/E,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;IAEF,iCAAiC;IACjC,MAAM,CAAC,IAAI,CACT,kBAAkB,EAClB,kFAAkF,EAClF;QACE,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC;KACvE,EACD,KAAK,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE;QACzB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;YAEpE,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;aACnE,CAAC;QACJ,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAE,KAAK,CAAC,CAAC;YAClD,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,6BAA6B,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;gBAC/E,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;IAEF,sCAAsC;IACtC,MAAM,CAAC,IAAI,CACT,uBAAuB,EACvB,2FAA2F,EAC3F;QACE,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,+CAA+C,CAAC;QAClF,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;QAC3D,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oDAAoD,CAAC;QAC9F,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wCAAwC,CAAC;KACpF,EACD,KAAK,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE;QACnD,IAAI,CAAC;YACH,MAAM,UAAU,GAA8B,EAAE,IAAI,EAAE,CAAC;YACvD,IAAI,QAAQ,KAAK,SAAS;gBAAE,UAAU,CAAC,QAAQ,GAAG,QAAQ,CAAC;YAC3D,IAAI,QAAQ,KAAK,SAAS;gBAAE,UAAU,CAAC,QAAQ,GAAG,QAAQ,CAAC;YAE3D,MAAM,aAAa,GAAG,MAAM,gBAAgB,CAAC,mBAAmB,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;YAE3F,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;aAC1E,CAAC;QACJ,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO,CAAC,KAAK,CAAC,gCAAgC,EAAE,KAAK,CAAC,CAAC;YACvD,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,kCAAkC,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;gBACpF,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;IAEF,sCAAsC;IACtC,MAAM,CAAC,IAAI,CACT,uBAAuB,EACvB,wGAAwG,EACxG;QACE,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,6CAA6C,CAAC;QAChF,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wCAAwC,CAAC;QAChF,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oCAAoC,CAAC;QAC1E,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oDAAoD,CAAC;QAC9F,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wCAAwC,CAAC;KACpF,EACD,KAAK,EAAE,EAAE,YAAY,EAAE,iBAAiB,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,EAAE;QACtE,IAAI,CAAC;YACH,MAAM,UAAU,GAA8B,EAAE,CAAC;YACjD,IAAI,IAAI,KAAK,SAAS;gBAAE,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC;YAC/C,IAAI,QAAQ,KAAK,SAAS;gBAAE,UAAU,CAAC,QAAQ,GAAG,QAAQ,CAAC;YAC3D,IAAI,QAAQ,KAAK,SAAS;gBAAE,UAAU,CAAC,QAAQ,GAAG,QAAQ,CAAC;YAE3D,MAAM,aAAa,GAAG,MAAM,gBAAgB,CAAC,mBAAmB,CAAC,YAAY,EAAE,iBAAiB,EAAE,UAAU,CAAC,CAAC;YAE9G,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;aAC1E,CAAC;QACJ,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO,CAAC,KAAK,CAAC,gCAAgC,EAAE,KAAK,CAAC,CAAC;YACvD,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,kCAAkC,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;gBACpF,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;IAEF,sCAAsC;IACtC,MAAM,CAAC,IAAI,CACT,uBAAuB,EACvB,0CAA0C,EAC1C;QACE,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,6CAA6C,CAAC;QAChF,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wCAAwC,CAAC;KACjF,EACD,KAAK,EAAE,EAAE,YAAY,EAAE,iBAAiB,EAAE,EAAE,EAAE;QAC5C,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,mBAAmB,CAAC,YAAY,EAAE,iBAAiB,CAAC,CAAC;YAE3F,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;aACnE,CAAC;QACJ,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO,CAAC,KAAK,CAAC,gCAAgC,EAAE,KAAK,CAAC,CAAC;YACvD,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,kCAAkC,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;gBACpF,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ export declare function setupCommentTools(server: McpServer): void;
@@ -0,0 +1,295 @@
1
+ import { z } from 'zod';
2
+ import { createClickUpClient } from '../clickup-client/index.js';
3
+ import { CommentsEnhancedClient } from '../clickup-client/comments-enhanced.js';
4
+ import { /* applyMarkdownStyling, */ createMarkdownPreview } from '../utils/markdown-styling.js';
5
+ import { processCommentBlocks } from '../utils/clickup-comment-formatter.js';
6
+ // Create clients
7
+ const clickUpClient = createClickUpClient();
8
+ const commentsClient = new CommentsEnhancedClient(clickUpClient);
9
+ /**
10
+ * Format comment response with enhanced markdown styling
11
+ */
12
+ function formatCommentResponse(result, title) {
13
+ try {
14
+ // Create a styled preview if we have markdown content
15
+ if (result.comment_markdown) {
16
+ const styledPreview = createMarkdownPreview(result.comment_markdown, title || 'Comment Preview', { useColors: true, useEmojis: true });
17
+ // Add the styled preview to the response
18
+ result.styled_preview = styledPreview;
19
+ }
20
+ // If we have multiple comments, style each one
21
+ if (result.comments && Array.isArray(result.comments)) {
22
+ result.comments = result.comments.map((comment, index) => {
23
+ if (comment.comment_markdown) {
24
+ comment.styled_preview = createMarkdownPreview(comment.comment_markdown, `Comment ${index + 1}`, { useColors: true, useEmojis: true });
25
+ }
26
+ return comment;
27
+ });
28
+ }
29
+ return result;
30
+ }
31
+ catch (error) {
32
+ console.warn('Failed to apply markdown styling:', error);
33
+ return result;
34
+ }
35
+ }
36
+ export function setupCommentTools(server) {
37
+ // Register raw API test tool for debugging
38
+ server.tool('create_task_comment_raw_test', 'RAW API TEST: Create a comment bypassing ALL MCP processing to isolate duplication issue. Returns raw ClickUp API response.', {
39
+ task_id: z.string().describe('The ID of the task to comment on'),
40
+ comment_text: z.string().describe('The text content of the comment')
41
+ }, async ({ task_id, comment_text }) => {
42
+ try {
43
+ const result = await commentsClient.createTaskCommentRaw(task_id, comment_text);
44
+ return {
45
+ content: [{ type: 'text', text: JSON.stringify(result, null, 2) }]
46
+ };
47
+ }
48
+ catch (error) {
49
+ console.error('Error in raw API test:', error);
50
+ return {
51
+ content: [{ type: 'text', text: `Error in raw API test: ${error.message}` }],
52
+ isError: true
53
+ };
54
+ }
55
+ });
56
+ // Register get_task_comments tool
57
+ server.tool('get_task_comments', 'Get comments for a ClickUp task. Returns comment details including text, author, and timestamps with enhanced markdown styling.', {
58
+ task_id: z.string().describe('The ID of the task to get comments for'),
59
+ start: z.number().optional().describe('Pagination start (timestamp)'),
60
+ start_id: z.string().optional().describe('Pagination start ID')
61
+ }, async ({ task_id, ...params }) => {
62
+ try {
63
+ const result = await commentsClient.getTaskComments(task_id, params);
64
+ const styledResult = formatCommentResponse(result, 'Task Comments');
65
+ return {
66
+ content: [{ type: 'text', text: JSON.stringify(styledResult, null, 2) }]
67
+ };
68
+ }
69
+ catch (error) {
70
+ console.error('Error getting task comments:', error);
71
+ return {
72
+ content: [{ type: 'text', text: `Error getting task comments: ${error.message}` }],
73
+ isError: true
74
+ };
75
+ }
76
+ });
77
+ // Register create_task_comment tool
78
+ server.tool('create_task_comment', 'Create a new comment on a ClickUp task using structured array format. Supports optional assignee and notification settings.', {
79
+ task_id: z.string().describe('The ID of the task to comment on'),
80
+ comment: z.array(z.object({
81
+ text: z.string().describe('The text content of this block'),
82
+ attributes: z.object({
83
+ bold: z.boolean().optional().describe('Whether text is bold'),
84
+ italic: z.boolean().optional().describe('Whether text is italic'),
85
+ underline: z.boolean().optional().describe('Whether text is underlined'),
86
+ strikethrough: z.boolean().optional().describe('Whether text is strikethrough'),
87
+ code: z.boolean().optional().describe('Whether text is code'),
88
+ color: z.string().optional().describe('Text color'),
89
+ background_color: z.string().optional().describe('Background color'),
90
+ link: z.object({
91
+ url: z.string().describe('Link URL')
92
+ }).optional().describe('Link attributes'),
93
+ 'code-block': z.object({
94
+ 'code-block': z.string().describe('Programming language for syntax highlighting (e.g., "javascript", "python", "bash", "plain")')
95
+ }).optional().describe('Code block attributes for multi-line code with syntax highlighting')
96
+ }).optional().describe('Text formatting attributes')
97
+ })).describe('Array of comment blocks with text and formatting'),
98
+ assignee: z.number().optional().describe('The ID of the user to assign to the comment'),
99
+ notify_all: z.boolean().optional().describe('Whether to notify all assignees')
100
+ }, async ({ task_id, comment, ...commentParams }) => {
101
+ try {
102
+ // Process comment blocks to ensure proper code block separation
103
+ const processedComment = processCommentBlocks(comment);
104
+ // Create payload with processed structured comment array
105
+ const payload = {
106
+ notify_all: commentParams.notify_all || false,
107
+ assignee: commentParams.assignee,
108
+ comment: processedComment
109
+ };
110
+ // DEBUG: Log exactly what we're sending to ClickUp API
111
+ console.log('=== DEBUG: Sending to ClickUp API ===');
112
+ console.log('URL:', `/task/${task_id}/comment`);
113
+ console.log('Original comment blocks:', JSON.stringify(comment, null, 2));
114
+ console.log('Processed comment blocks:', JSON.stringify(processedComment, null, 2));
115
+ console.log('Full payload:', JSON.stringify(payload, null, 2));
116
+ console.log('=====================================');
117
+ const result = await clickUpClient.post(`/task/${task_id}/comment`, payload);
118
+ // DEBUG: Log what ClickUp returns
119
+ console.log('=== DEBUG: ClickUp API Response ===');
120
+ console.log('Raw Response:', JSON.stringify(result, null, 2));
121
+ console.log('===================================');
122
+ return {
123
+ content: [{ type: 'text', text: JSON.stringify(result, null, 2) }]
124
+ };
125
+ }
126
+ catch (error) {
127
+ console.error('Error creating task comment:', error);
128
+ return {
129
+ content: [{ type: 'text', text: `Error creating task comment: ${error.message}` }],
130
+ isError: true
131
+ };
132
+ }
133
+ });
134
+ // Register get_chat_view_comments tool
135
+ server.tool('get_chat_view_comments', 'Get comments for a ClickUp chat view. Returns comment details with pagination support.', {
136
+ view_id: z.string().describe('The ID of the chat view to get comments for'),
137
+ start: z.number().optional().describe('Pagination start (timestamp)'),
138
+ start_id: z.string().optional().describe('Pagination start ID')
139
+ }, async ({ view_id, ...params }) => {
140
+ try {
141
+ const result = await commentsClient.getChatViewComments(view_id, params);
142
+ return {
143
+ content: [{ type: 'text', text: JSON.stringify(result, null, 2) }]
144
+ };
145
+ }
146
+ catch (error) {
147
+ console.error('Error getting chat view comments:', error);
148
+ return {
149
+ content: [{ type: 'text', text: `Error getting chat view comments: ${error.message}` }],
150
+ isError: true
151
+ };
152
+ }
153
+ });
154
+ // Register create_chat_view_comment tool
155
+ server.tool('create_chat_view_comment', 'Create a new comment in a ClickUp chat view. Supports notification settings. Supports GitHub Flavored Markdown in comment text.', {
156
+ view_id: z.string().describe('The ID of the chat view to comment on'),
157
+ comment_text: z.string().describe('The text content of the comment (supports GitHub Flavored Markdown including headers, bold, italic, code blocks, links, lists, etc.)'),
158
+ notify_all: z.boolean().optional().describe('Whether to notify all assignees')
159
+ }, async ({ view_id, ...commentParams }) => {
160
+ try {
161
+ const result = await commentsClient.createChatViewComment(view_id, commentParams);
162
+ return {
163
+ content: [{ type: 'text', text: JSON.stringify(result, null, 2) }]
164
+ };
165
+ }
166
+ catch (error) {
167
+ console.error('Error creating chat view comment:', error);
168
+ return {
169
+ content: [{ type: 'text', text: `Error creating chat view comment: ${error.message}` }],
170
+ isError: true
171
+ };
172
+ }
173
+ });
174
+ // Register get_list_comments tool
175
+ server.tool('get_list_comments', 'Get comments for a ClickUp list. Returns comment details with pagination support.', {
176
+ list_id: z.string().describe('The ID of the list to get comments for'),
177
+ start: z.number().optional().describe('Pagination start (timestamp)'),
178
+ start_id: z.string().optional().describe('Pagination start ID')
179
+ }, async ({ list_id, ...params }) => {
180
+ try {
181
+ const result = await commentsClient.getListComments(list_id, params);
182
+ return {
183
+ content: [{ type: 'text', text: JSON.stringify(result, null, 2) }]
184
+ };
185
+ }
186
+ catch (error) {
187
+ console.error('Error getting list comments:', error);
188
+ return {
189
+ content: [{ type: 'text', text: `Error getting list comments: ${error.message}` }],
190
+ isError: true
191
+ };
192
+ }
193
+ });
194
+ // Register create_list_comment tool
195
+ server.tool('create_list_comment', 'Create a new comment on a ClickUp list. Supports optional assignee and notification settings. Supports GitHub Flavored Markdown in comment text.', {
196
+ list_id: z.string().describe('The ID of the list to comment on'),
197
+ comment_text: z.string().describe('The text content of the comment (supports GitHub Flavored Markdown including headers, bold, italic, code blocks, links, lists, etc.)'),
198
+ assignee: z.number().optional().describe('The ID of the user to assign to the comment'),
199
+ notify_all: z.boolean().optional().describe('Whether to notify all assignees')
200
+ }, async ({ list_id, ...commentParams }) => {
201
+ try {
202
+ const result = await commentsClient.createListComment(list_id, commentParams);
203
+ return {
204
+ content: [{ type: 'text', text: JSON.stringify(result, null, 2) }]
205
+ };
206
+ }
207
+ catch (error) {
208
+ console.error('Error creating list comment:', error);
209
+ return {
210
+ content: [{ type: 'text', text: `Error creating list comment: ${error.message}` }],
211
+ isError: true
212
+ };
213
+ }
214
+ });
215
+ // Register update_comment tool
216
+ server.tool('update_comment', 'Update an existing ClickUp comment\'s properties including text, assignee, and resolved status. Supports GitHub Flavored Markdown in comment text.', {
217
+ comment_id: z.string().describe('The ID of the comment to update'),
218
+ comment_text: z.string().describe('The new text content of the comment (supports GitHub Flavored Markdown including headers, bold, italic, code blocks, links, lists, etc.)'),
219
+ assignee: z.number().optional().describe('The ID of the user to assign to the comment'),
220
+ resolved: z.boolean().optional().describe('Whether the comment is resolved')
221
+ }, async ({ comment_id, ...commentParams }) => {
222
+ try {
223
+ const result = await commentsClient.updateComment(comment_id, commentParams);
224
+ return {
225
+ content: [{ type: 'text', text: JSON.stringify(result, null, 2) }]
226
+ };
227
+ }
228
+ catch (error) {
229
+ console.error('Error updating comment:', error);
230
+ return {
231
+ content: [{ type: 'text', text: `Error updating comment: ${error.message}` }],
232
+ isError: true
233
+ };
234
+ }
235
+ });
236
+ // Register delete_comment tool
237
+ server.tool('delete_comment', 'Delete a comment from ClickUp.', {
238
+ comment_id: z.string().describe('The ID of the comment to delete')
239
+ }, async ({ comment_id }) => {
240
+ try {
241
+ const result = await commentsClient.deleteComment(comment_id);
242
+ return {
243
+ content: [{ type: 'text', text: JSON.stringify(result, null, 2) }]
244
+ };
245
+ }
246
+ catch (error) {
247
+ console.error('Error deleting comment:', error);
248
+ return {
249
+ content: [{ type: 'text', text: `Error deleting comment: ${error.message}` }],
250
+ isError: true
251
+ };
252
+ }
253
+ });
254
+ // Register get_threaded_comments tool
255
+ server.tool('get_threaded_comments', 'Get threaded comments (replies) for a parent comment. Returns comment details with pagination support.', {
256
+ comment_id: z.string().describe('The ID of the parent comment'),
257
+ start: z.number().optional().describe('Pagination start (timestamp)'),
258
+ start_id: z.string().optional().describe('Pagination start ID')
259
+ }, async ({ comment_id, ...params }) => {
260
+ try {
261
+ const result = await commentsClient.getThreadedComments(comment_id, params);
262
+ return {
263
+ content: [{ type: 'text', text: JSON.stringify(result, null, 2) }]
264
+ };
265
+ }
266
+ catch (error) {
267
+ console.error('Error getting threaded comments:', error);
268
+ return {
269
+ content: [{ type: 'text', text: `Error getting threaded comments: ${error.message}` }],
270
+ isError: true
271
+ };
272
+ }
273
+ });
274
+ // Register create_threaded_comment tool
275
+ server.tool('create_threaded_comment', 'Create a new threaded comment (reply) to a parent comment. Supports notification settings. Supports GitHub Flavored Markdown in comment text.', {
276
+ comment_id: z.string().describe('The ID of the parent comment'),
277
+ comment_text: z.string().describe('The text content of the comment (supports GitHub Flavored Markdown including headers, bold, italic, code blocks, links, lists, etc.)'),
278
+ notify_all: z.boolean().optional().describe('Whether to notify all assignees')
279
+ }, async ({ comment_id, ...commentParams }) => {
280
+ try {
281
+ const result = await commentsClient.createThreadedComment(comment_id, commentParams);
282
+ return {
283
+ content: [{ type: 'text', text: JSON.stringify(result, null, 2) }]
284
+ };
285
+ }
286
+ catch (error) {
287
+ console.error('Error creating threaded comment:', error);
288
+ return {
289
+ content: [{ type: 'text', text: `Error creating threaded comment: ${error.message}` }],
290
+ isError: true
291
+ };
292
+ }
293
+ });
294
+ }
295
+ //# sourceMappingURL=comment-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"comment-tools.js","sourceRoot":"","sources":["../../src/tools/comment-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 setupCustomFieldTools(server: McpServer): void;