@griffinwork40/clickup-mcp-server 1.1.4 → 1.1.5

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 (97) hide show
  1. package/dist/schemas.d.ts +33 -0
  2. package/dist/schemas.d.ts.map +1 -0
  3. package/dist/schemas.js +34 -0
  4. package/dist/schemas.js.map +1 -0
  5. package/dist/server.d.ts +10 -0
  6. package/dist/server.d.ts.map +1 -0
  7. package/dist/server.js +56 -0
  8. package/dist/server.js.map +1 -0
  9. package/dist/tools/comments.d.ts +10 -0
  10. package/dist/tools/comments.d.ts.map +1 -0
  11. package/dist/tools/comments.js +123 -0
  12. package/dist/tools/comments.js.map +1 -0
  13. package/dist/tools/custom-fields.d.ts +10 -0
  14. package/dist/tools/custom-fields.d.ts.map +1 -0
  15. package/dist/tools/custom-fields.js +68 -0
  16. package/dist/tools/custom-fields.js.map +1 -0
  17. package/dist/tools/hierarchy.d.ts +10 -0
  18. package/dist/tools/hierarchy.d.ts.map +1 -0
  19. package/dist/tools/hierarchy.js +188 -0
  20. package/dist/tools/hierarchy.js.map +1 -0
  21. package/dist/tools/index.d.ts +13 -0
  22. package/dist/tools/index.d.ts.map +1 -0
  23. package/dist/tools/index.js +13 -0
  24. package/dist/tools/index.js.map +1 -0
  25. package/dist/tools/lists.d.ts +10 -0
  26. package/dist/tools/lists.d.ts.map +1 -0
  27. package/dist/tools/lists.js +148 -0
  28. package/dist/tools/lists.js.map +1 -0
  29. package/dist/tools/tasks-analytics.d.ts +10 -0
  30. package/dist/tools/tasks-analytics.d.ts.map +1 -0
  31. package/dist/tools/tasks-analytics.js +160 -0
  32. package/dist/tools/tasks-analytics.js.map +1 -0
  33. package/dist/tools/tasks-get.d.ts +10 -0
  34. package/dist/tools/tasks-get.d.ts.map +1 -0
  35. package/dist/tools/tasks-get.js +209 -0
  36. package/dist/tools/tasks-get.js.map +1 -0
  37. package/dist/tools/tasks-read.d.ts +10 -0
  38. package/dist/tools/tasks-read.d.ts.map +1 -0
  39. package/dist/tools/tasks-read.js +379 -0
  40. package/dist/tools/tasks-read.js.map +1 -0
  41. package/dist/tools/tasks-search.d.ts +10 -0
  42. package/dist/tools/tasks-search.d.ts.map +1 -0
  43. package/dist/tools/tasks-search.js +176 -0
  44. package/dist/tools/tasks-search.js.map +1 -0
  45. package/dist/tools/tasks-write.d.ts +10 -0
  46. package/dist/tools/tasks-write.d.ts.map +1 -0
  47. package/dist/tools/tasks-write.js +232 -0
  48. package/dist/tools/tasks-write.js.map +1 -0
  49. package/dist/tools/time-tracking.d.ts +10 -0
  50. package/dist/tools/time-tracking.d.ts.map +1 -0
  51. package/dist/tools/time-tracking.js +180 -0
  52. package/dist/tools/time-tracking.js.map +1 -0
  53. package/dist/utils/api-client.d.ts +17 -0
  54. package/dist/utils/api-client.d.ts.map +1 -0
  55. package/dist/utils/api-client.js +77 -0
  56. package/dist/utils/api-client.js.map +1 -0
  57. package/dist/utils/csv-export.d.ts +29 -0
  58. package/dist/utils/csv-export.d.ts.map +1 -0
  59. package/dist/utils/csv-export.js +204 -0
  60. package/dist/utils/csv-export.js.map +1 -0
  61. package/dist/utils/custom-fields.d.ts +25 -0
  62. package/dist/utils/custom-fields.d.ts.map +1 -0
  63. package/dist/utils/custom-fields.js +132 -0
  64. package/dist/utils/custom-fields.js.map +1 -0
  65. package/dist/utils/data-processing.d.ts +10 -0
  66. package/dist/utils/data-processing.d.ts.map +1 -0
  67. package/dist/utils/data-processing.js +18 -0
  68. package/dist/utils/data-processing.js.map +1 -0
  69. package/dist/utils/formatters/base.d.ts +21 -0
  70. package/dist/utils/formatters/base.d.ts.map +1 -0
  71. package/dist/utils/formatters/base.js +30 -0
  72. package/dist/utils/formatters/base.js.map +1 -0
  73. package/dist/utils/formatters/entities.d.ts +34 -0
  74. package/dist/utils/formatters/entities.d.ts.map +1 -0
  75. package/dist/utils/formatters/entities.js +146 -0
  76. package/dist/utils/formatters/entities.js.map +1 -0
  77. package/dist/utils/formatters/index.d.ts +6 -0
  78. package/dist/utils/formatters/index.d.ts.map +1 -0
  79. package/dist/utils/formatters/index.js +6 -0
  80. package/dist/utils/formatters/index.js.map +1 -0
  81. package/dist/utils/index.d.ts +13 -0
  82. package/dist/utils/index.d.ts.map +1 -0
  83. package/dist/utils/index.js +21 -0
  84. package/dist/utils/index.js.map +1 -0
  85. package/dist/utils/task-analytics.d.ts +14 -0
  86. package/dist/utils/task-analytics.d.ts.map +1 -0
  87. package/dist/utils/task-analytics.js +67 -0
  88. package/dist/utils/task-analytics.js.map +1 -0
  89. package/dist/utils/task-counter.d.ts +24 -0
  90. package/dist/utils/task-counter.d.ts.map +1 -0
  91. package/dist/utils/task-counter.js +52 -0
  92. package/dist/utils/task-counter.js.map +1 -0
  93. package/dist/utils/truncation.d.ts +14 -0
  94. package/dist/utils/truncation.d.ts.map +1 -0
  95. package/dist/utils/truncation.js +124 -0
  96. package/dist/utils/truncation.js.map +1 -0
  97. package/package.json +5 -5
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Shared Zod schemas for input validation in ClickUp MCP server.
3
+ */
4
+ import { z } from "zod";
5
+ import { ResponseFormat, ResponseMode } from "./constants.js";
6
+ /**
7
+ * Response format schema - markdown or JSON
8
+ */
9
+ export declare const ResponseFormatSchema: z.ZodDefault<z.ZodNativeEnum<typeof ResponseFormat>>;
10
+ /**
11
+ * Response mode schema - controls detail level
12
+ */
13
+ export declare const ResponseModeSchema: z.ZodDefault<z.ZodNativeEnum<typeof ResponseMode>>;
14
+ /**
15
+ * Pagination schema for offset-based pagination
16
+ */
17
+ export declare const PaginationSchema: z.ZodObject<{
18
+ limit: z.ZodDefault<z.ZodNumber>;
19
+ offset: z.ZodDefault<z.ZodNumber>;
20
+ }, "strip", z.ZodTypeAny, {
21
+ limit: number;
22
+ offset: number;
23
+ }, {
24
+ limit?: number | undefined;
25
+ offset?: number | undefined;
26
+ }>;
27
+ /**
28
+ * Type exports for use in tool handlers
29
+ */
30
+ export type ResponseFormatType = z.infer<typeof ResponseFormatSchema>;
31
+ export type ResponseModeType = z.infer<typeof ResponseModeSchema>;
32
+ export type PaginationType = z.infer<typeof PaginationSchema>;
33
+ //# sourceMappingURL=schemas.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../src/schemas.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,YAAY,EAA4B,MAAM,gBAAgB,CAAC;AAExF;;GAEG;AACH,eAAO,MAAM,oBAAoB,sDAEyD,CAAC;AAE3F;;GAEG;AACH,eAAO,MAAM,kBAAkB,oDAE8I,CAAC;AAE9K;;GAEG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;EAY3B,CAAC;AAEH;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AACtE,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAClE,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Shared Zod schemas for input validation in ClickUp MCP server.
3
+ */
4
+ import { z } from "zod";
5
+ import { ResponseFormat, ResponseMode, DEFAULT_LIMIT, MAX_LIMIT } from "./constants.js";
6
+ /**
7
+ * Response format schema - markdown or JSON
8
+ */
9
+ export const ResponseFormatSchema = z.nativeEnum(ResponseFormat)
10
+ .default(ResponseFormat.MARKDOWN)
11
+ .describe("Output format: 'markdown' for human-readable or 'json' for machine-readable");
12
+ /**
13
+ * Response mode schema - controls detail level
14
+ */
15
+ export const ResponseModeSchema = z.nativeEnum(ResponseMode)
16
+ .default(ResponseMode.FULL)
17
+ .describe("Response detail level: 'full' for complete task details, 'compact' for essential fields only (id, name, status, assignees), 'summary' for statistical overview");
18
+ /**
19
+ * Pagination schema for offset-based pagination
20
+ */
21
+ export const PaginationSchema = z.object({
22
+ limit: z.number()
23
+ .int()
24
+ .min(1)
25
+ .max(MAX_LIMIT)
26
+ .default(DEFAULT_LIMIT)
27
+ .describe(`Maximum results to return (1-${MAX_LIMIT})`),
28
+ offset: z.number()
29
+ .int()
30
+ .min(0)
31
+ .default(0)
32
+ .describe("Number of results to skip for pagination")
33
+ });
34
+ //# sourceMappingURL=schemas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../src/schemas.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAExF;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,UAAU,CAAC,cAAc,CAAC;KAC7D,OAAO,CAAC,cAAc,CAAC,QAAQ,CAAC;KAChC,QAAQ,CAAC,6EAA6E,CAAC,CAAC;AAE3F;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,UAAU,CAAC,YAAY,CAAC;KACzD,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC;KAC1B,QAAQ,CAAC,gKAAgK,CAAC,CAAC;AAE9K;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;SACd,GAAG,EAAE;SACL,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,SAAS,CAAC;SACd,OAAO,CAAC,aAAa,CAAC;SACtB,QAAQ,CAAC,gCAAgC,SAAS,GAAG,CAAC;IACzD,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;SACf,GAAG,EAAE;SACL,GAAG,CAAC,CAAC,CAAC;SACN,OAAO,CAAC,CAAC,CAAC;SACV,QAAQ,CAAC,0CAA0C,CAAC;CACxD,CAAC,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * ClickUp MCP Server entry point.
3
+ * Initializes the MCP server and connects via stdio transport.
4
+ */
5
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
6
+ /**
7
+ * Create and configure the MCP server with all tools
8
+ */
9
+ export declare function createServer(): McpServer;
10
+ //# sourceMappingURL=server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAepE;;GAEG;AACH,wBAAgB,YAAY,IAAI,SAAS,CAkBxC"}
package/dist/server.js ADDED
@@ -0,0 +1,56 @@
1
+ /**
2
+ * ClickUp MCP Server entry point.
3
+ * Initializes the MCP server and connects via stdio transport.
4
+ */
5
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
6
+ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
7
+ import { getApiToken } from "./utils/index.js";
8
+ import { registerHierarchyTools, registerListTools, registerTaskGetTools, registerTaskSearchTools, registerTaskWriteTools, registerTaskAnalyticsTools, registerCommentTools, registerCustomFieldTools, registerTimeTrackingTools } from "./tools/index.js";
9
+ /**
10
+ * Create and configure the MCP server with all tools
11
+ */
12
+ export function createServer() {
13
+ const server = new McpServer({
14
+ name: "clickup-mcp",
15
+ version: "1.0.0"
16
+ });
17
+ // Register all tool categories
18
+ registerHierarchyTools(server);
19
+ registerListTools(server);
20
+ registerTaskGetTools(server);
21
+ registerTaskSearchTools(server);
22
+ registerTaskWriteTools(server);
23
+ registerTaskAnalyticsTools(server);
24
+ registerCommentTools(server);
25
+ registerCustomFieldTools(server);
26
+ registerTimeTrackingTools(server);
27
+ return server;
28
+ }
29
+ /**
30
+ * Main entry point - starts the MCP server
31
+ */
32
+ async function main() {
33
+ // Verify API token is set
34
+ try {
35
+ getApiToken();
36
+ }
37
+ catch (error) {
38
+ console.error("ERROR: CLICKUP_API_TOKEN environment variable is required");
39
+ console.error("Get your token at: https://app.clickup.com/settings/apps");
40
+ process.exit(1);
41
+ }
42
+ // Create server with all tools
43
+ const server = createServer();
44
+ // Create stdio transport
45
+ const transport = new StdioServerTransport();
46
+ // Connect server to transport
47
+ await server.connect(transport);
48
+ // Log to stderr (stdout is used for MCP protocol)
49
+ console.error("ClickUp MCP server running via stdio");
50
+ }
51
+ // Run the server
52
+ main().catch((error) => {
53
+ console.error("Server error:", error);
54
+ process.exit(1);
55
+ });
56
+ //# sourceMappingURL=server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EACL,sBAAsB,EACtB,iBAAiB,EACjB,oBAAoB,EACpB,uBAAuB,EACvB,sBAAsB,EACtB,0BAA0B,EAC1B,oBAAoB,EACpB,wBAAwB,EACxB,yBAAyB,EAC1B,MAAM,kBAAkB,CAAC;AAE1B;;GAEG;AACH,MAAM,UAAU,YAAY;IAC1B,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;QAC3B,IAAI,EAAE,aAAa;QACnB,OAAO,EAAE,OAAO;KACjB,CAAC,CAAC;IAEH,+BAA+B;IAC/B,sBAAsB,CAAC,MAAM,CAAC,CAAC;IAC/B,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAC1B,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAC7B,uBAAuB,CAAC,MAAM,CAAC,CAAC;IAChC,sBAAsB,CAAC,MAAM,CAAC,CAAC;IAC/B,0BAA0B,CAAC,MAAM,CAAC,CAAC;IACnC,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAC7B,wBAAwB,CAAC,MAAM,CAAC,CAAC;IACjC,yBAAyB,CAAC,MAAM,CAAC,CAAC;IAElC,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,IAAI;IACjB,0BAA0B;IAC1B,IAAI,CAAC;QACH,WAAW,EAAE,CAAC;IAChB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,2DAA2D,CAAC,CAAC;QAC3E,OAAO,CAAC,KAAK,CAAC,0DAA0D,CAAC,CAAC;QAC1E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,+BAA+B;IAC/B,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC;IAE9B,yBAAyB;IACzB,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAE7C,8BAA8B;IAC9B,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAEhC,kDAAkD;IAClD,OAAO,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAC;AACxD,CAAC;AAED,iBAAiB;AACjB,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;IACtC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Comment tools for ClickUp MCP server.
3
+ * Tools for managing task comments.
4
+ */
5
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
6
+ /**
7
+ * Register comment tools with the MCP server
8
+ */
9
+ export declare function registerCommentTools(server: McpServer): void;
10
+ //# sourceMappingURL=comments.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"comments.d.ts","sourceRoot":"","sources":["../../src/tools/comments.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAazE;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAiI5D"}
@@ -0,0 +1,123 @@
1
+ /**
2
+ * Comment tools for ClickUp MCP server.
3
+ * Tools for managing task comments.
4
+ */
5
+ import { z } from "zod";
6
+ import { ResponseFormat } from "../constants.js";
7
+ import { ResponseFormatSchema } from "../schemas.js";
8
+ import { makeApiRequest, handleApiError, formatCommentMarkdown, truncateResponse, formatTruncationInfo } from "../utils/index.js";
9
+ /**
10
+ * Register comment tools with the MCP server
11
+ */
12
+ export function registerCommentTools(server) {
13
+ // Tool 14: Add Comment
14
+ server.registerTool("clickup_add_comment", {
15
+ title: "Add Comment to Task",
16
+ description: `Add a comment to a task.
17
+
18
+ Args:
19
+ - task_id (string): The task ID
20
+ - comment_text (string): The comment text (supports markdown)
21
+ - notify_all (boolean): Notify all task watchers (default: false)
22
+
23
+ Returns:
24
+ The created comment with metadata.
25
+
26
+ Examples:
27
+ - Use when: "Add comment 'Great work!' to task abc123"
28
+ - Use when: "Comment on task xyz with update"
29
+
30
+ Error Handling:
31
+ - Returns "Error: Resource not found" if task_id is invalid (404)`,
32
+ inputSchema: z.object({
33
+ task_id: z.string().min(1).describe("Task ID"),
34
+ comment_text: z.string().min(1).describe("Comment text (markdown supported)"),
35
+ notify_all: z.boolean().default(false).describe("Notify all task watchers")
36
+ }).strict(),
37
+ annotations: {
38
+ readOnlyHint: false,
39
+ destructiveHint: false,
40
+ idempotentHint: false,
41
+ openWorldHint: true
42
+ }
43
+ }, async (params) => {
44
+ try {
45
+ const comment = await makeApiRequest(`task/${params.task_id}/comment`, "POST", {
46
+ comment_text: params.comment_text,
47
+ notify_all: params.notify_all
48
+ });
49
+ return {
50
+ content: [{
51
+ type: "text",
52
+ text: `Comment added successfully to task ${params.task_id}\n\n${formatCommentMarkdown(comment)}`
53
+ }]
54
+ };
55
+ }
56
+ catch (error) {
57
+ return {
58
+ content: [{ type: "text", text: handleApiError(error) }]
59
+ };
60
+ }
61
+ });
62
+ // Tool 15: Get Comments
63
+ server.registerTool("clickup_get_comments", {
64
+ title: "Get Task Comments",
65
+ description: `Get all comments on a task.
66
+
67
+ Args:
68
+ - task_id (string): The task ID
69
+ - response_format ('markdown' | 'json'): Output format (default: 'markdown')
70
+
71
+ Returns:
72
+ List of comments with author, date, and text.
73
+
74
+ Examples:
75
+ - Use when: "Show me comments on task abc123"
76
+ - Use when: "Get all comments for this task"
77
+
78
+ Error Handling:
79
+ - Returns "Error: Resource not found" if task_id is invalid (404)`,
80
+ inputSchema: z.object({
81
+ task_id: z.string().min(1).describe("Task ID"),
82
+ response_format: ResponseFormatSchema
83
+ }).strict(),
84
+ annotations: {
85
+ readOnlyHint: true,
86
+ destructiveHint: false,
87
+ idempotentHint: true,
88
+ openWorldHint: true
89
+ }
90
+ }, async (params) => {
91
+ try {
92
+ const data = await makeApiRequest(`task/${params.task_id}/comment`);
93
+ const comments = data.comments || [];
94
+ let result;
95
+ if (params.response_format === ResponseFormat.MARKDOWN) {
96
+ const lines = [`# Comments on Task ${params.task_id}`, ""];
97
+ lines.push(`Found ${comments.length} comment(s)`, "");
98
+ lines.push("");
99
+ for (const comment of comments) {
100
+ lines.push(formatCommentMarkdown(comment));
101
+ lines.push("");
102
+ lines.push("---");
103
+ lines.push("");
104
+ }
105
+ result = lines.join("\n");
106
+ }
107
+ else {
108
+ result = JSON.stringify({ comments }, null, 2);
109
+ }
110
+ const { content: finalContent, truncation } = truncateResponse(result, comments.length, "comments");
111
+ result = finalContent + formatTruncationInfo(truncation);
112
+ return {
113
+ content: [{ type: "text", text: result }]
114
+ };
115
+ }
116
+ catch (error) {
117
+ return {
118
+ content: [{ type: "text", text: handleApiError(error) }]
119
+ };
120
+ }
121
+ });
122
+ }
123
+ //# sourceMappingURL=comments.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"comments.js","sourceRoot":"","sources":["../../src/tools/comments.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Custom field tools for ClickUp MCP server.
3
+ * Tools for managing task custom fields.
4
+ */
5
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
6
+ /**
7
+ * Register custom field tools with the MCP server
8
+ */
9
+ export declare function registerCustomFieldTools(server: McpServer): void;
10
+ //# sourceMappingURL=custom-fields.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"custom-fields.d.ts","sourceRoot":"","sources":["../../src/tools/custom-fields.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAOzE;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAiEhE"}
@@ -0,0 +1,68 @@
1
+ /**
2
+ * Custom field tools for ClickUp MCP server.
3
+ * Tools for managing task custom fields.
4
+ */
5
+ import { z } from "zod";
6
+ import { makeApiRequest, handleApiError } from "../utils/index.js";
7
+ /**
8
+ * Register custom field tools with the MCP server
9
+ */
10
+ export function registerCustomFieldTools(server) {
11
+ // Tool 16: Set Custom Field
12
+ server.registerTool("clickup_set_custom_field", {
13
+ title: "Set Custom Field Value",
14
+ description: `Set a custom field value on a task.
15
+
16
+ Use clickup_get_list_details first to see available custom fields.
17
+
18
+ Args:
19
+ - task_id (string): The task ID
20
+ - field_id (string): The custom field ID
21
+ - value (any): The value to set (format depends on field type)
22
+
23
+ Value format varies by field type:
24
+ - Text/URL/Email: "string value"
25
+ - Number/Currency: 123
26
+ - Date: Unix timestamp in milliseconds
27
+ - Dropdown: "option_uuid"
28
+ - Checkbox: true or false
29
+
30
+ Returns:
31
+ Confirmation of the update.
32
+
33
+ Examples:
34
+ - Use when: "Set custom field abc to 'Complete' on task xyz"
35
+ - Use after: Getting list details to know field IDs
36
+
37
+ Error Handling:
38
+ - Returns "Error: Bad request" if value format is wrong (400)
39
+ - Returns "Error: Resource not found" if IDs are invalid (404)`,
40
+ inputSchema: z.object({
41
+ task_id: z.string().min(1).describe("Task ID"),
42
+ field_id: z.string().min(1).describe("Custom field ID"),
43
+ value: z.any().describe("Value to set (format depends on field type)")
44
+ }).strict(),
45
+ annotations: {
46
+ readOnlyHint: false,
47
+ destructiveHint: false,
48
+ idempotentHint: true,
49
+ openWorldHint: true
50
+ }
51
+ }, async (params) => {
52
+ try {
53
+ await makeApiRequest(`task/${params.task_id}/field/${params.field_id}`, "POST", { value: params.value });
54
+ return {
55
+ content: [{
56
+ type: "text",
57
+ text: `Custom field ${params.field_id} updated successfully on task ${params.task_id}`
58
+ }]
59
+ };
60
+ }
61
+ catch (error) {
62
+ return {
63
+ content: [{ type: "text", text: handleApiError(error) }]
64
+ };
65
+ }
66
+ });
67
+ }
68
+ //# sourceMappingURL=custom-fields.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"custom-fields.js","sourceRoot":"","sources":["../../src/tools/custom-fields.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,cAAc,EACd,cAAc,EACf,MAAM,mBAAmB,CAAC;AAE3B;;GAEG;AACH,MAAM,UAAU,wBAAwB,CAAC,MAAiB;IACxD,4BAA4B;IAC5B,MAAM,CAAC,YAAY,CACjB,0BAA0B,EAC1B;QACE,KAAK,EAAE,wBAAwB;QAC/B,WAAW,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;iEAyB8C;QAC3D,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACpB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC;YAC9C,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,iBAAiB,CAAC;YACvD,KAAK,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,6CAA6C,CAAC;SACvE,CAAC,CAAC,MAAM,EAAE;QACX,WAAW,EAAE;YACX,YAAY,EAAE,KAAK;YACnB,eAAe,EAAE,KAAK;YACtB,cAAc,EAAE,IAAI;YACpB,aAAa,EAAE,IAAI;SACpB;KACF,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,IAAI,CAAC;YACH,MAAM,cAAc,CAClB,QAAQ,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,QAAQ,EAAE,EACjD,MAAM,EACN,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CACxB,CAAC;YAEF,OAAO;gBACL,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,gBAAgB,MAAM,CAAC,QAAQ,iCAAiC,MAAM,CAAC,OAAO,EAAE;qBACvF,CAAC;aACH,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;aACzD,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Hierarchy tools for ClickUp MCP server.
3
+ * Tools for managing teams, spaces, and folders.
4
+ */
5
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
6
+ /**
7
+ * Register hierarchy tools (teams, spaces, folders) with the MCP server
8
+ */
9
+ export declare function registerHierarchyTools(server: McpServer): void;
10
+ //# sourceMappingURL=hierarchy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hierarchy.d.ts","sourceRoot":"","sources":["../../src/tools/hierarchy.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAczE;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAkN9D"}
@@ -0,0 +1,188 @@
1
+ /**
2
+ * Hierarchy tools for ClickUp MCP server.
3
+ * Tools for managing teams, spaces, and folders.
4
+ */
5
+ import { z } from "zod";
6
+ import { ResponseFormat } from "../constants.js";
7
+ import { ResponseFormatSchema } from "../schemas.js";
8
+ import { makeApiRequest, handleApiError, formatSpaceMarkdown, formatFolderMarkdown, truncateResponse, formatTruncationInfo } from "../utils/index.js";
9
+ /**
10
+ * Register hierarchy tools (teams, spaces, folders) with the MCP server
11
+ */
12
+ export function registerHierarchyTools(server) {
13
+ // Tool 1: Get Teams/Workspaces
14
+ server.registerTool("clickup_get_teams", {
15
+ title: "Get ClickUp Teams",
16
+ description: `Get all teams/workspaces accessible to the authenticated user.
17
+
18
+ This tool retrieves the list of teams (also called workspaces) that the user has access to in ClickUp.
19
+
20
+ Args:
21
+ - response_format ('markdown' | 'json'): Output format (default: 'markdown')
22
+
23
+ Returns:
24
+ List of teams with id, name, color, and avatar.
25
+
26
+ Examples:
27
+ - Use when: "What teams do I have access to?"
28
+ - Use when: "List all my workspaces"
29
+
30
+ Error Handling:
31
+ - Returns "Error: Invalid or missing API token" if authentication fails (401)`,
32
+ inputSchema: z.object({
33
+ response_format: ResponseFormatSchema
34
+ }).strict(),
35
+ annotations: {
36
+ readOnlyHint: true,
37
+ destructiveHint: false,
38
+ idempotentHint: true,
39
+ openWorldHint: true
40
+ }
41
+ }, async (params) => {
42
+ try {
43
+ const data = await makeApiRequest("team");
44
+ const teams = data.teams || [];
45
+ let result;
46
+ if (params.response_format === ResponseFormat.MARKDOWN) {
47
+ const lines = ["# ClickUp Teams", ""];
48
+ lines.push(`Found ${teams.length} team(s)`, "");
49
+ for (const team of teams) {
50
+ lines.push(`## ${team.name} (${team.id})`);
51
+ if (team.color) {
52
+ lines.push(`- Color: ${team.color}`);
53
+ }
54
+ lines.push("");
55
+ }
56
+ result = lines.join("\n");
57
+ }
58
+ else {
59
+ result = JSON.stringify({ teams }, null, 2);
60
+ }
61
+ return {
62
+ content: [{ type: "text", text: result }]
63
+ };
64
+ }
65
+ catch (error) {
66
+ return {
67
+ content: [{ type: "text", text: handleApiError(error) }]
68
+ };
69
+ }
70
+ });
71
+ // Tool 2: Get Spaces
72
+ server.registerTool("clickup_get_spaces", {
73
+ title: "Get ClickUp Spaces",
74
+ description: `Get all spaces in a team/workspace.
75
+
76
+ Spaces are the second level in the ClickUp hierarchy (Team → Space → Folder → List → Task).
77
+
78
+ Args:
79
+ - team_id (string): The team/workspace ID
80
+ - archived (boolean): Include archived spaces (default: false)
81
+ - response_format ('markdown' | 'json'): Output format (default: 'markdown')
82
+
83
+ Examples:
84
+ - Use when: "Show me all spaces in team 123456"
85
+ - Use when: "List the spaces in my workspace"
86
+
87
+ Error Handling:
88
+ - Returns "Error: Resource not found" if team_id is invalid (404)`,
89
+ inputSchema: z.object({
90
+ team_id: z.string().min(1).describe("Team/workspace ID"),
91
+ archived: z.boolean().default(false).describe("Include archived spaces"),
92
+ response_format: ResponseFormatSchema
93
+ }).strict(),
94
+ annotations: {
95
+ readOnlyHint: true,
96
+ destructiveHint: false,
97
+ idempotentHint: true,
98
+ openWorldHint: true
99
+ }
100
+ }, async (params) => {
101
+ try {
102
+ const data = await makeApiRequest(`team/${params.team_id}/space`, "GET", undefined, { archived: params.archived });
103
+ const spaces = data.spaces || [];
104
+ let result;
105
+ if (params.response_format === ResponseFormat.MARKDOWN) {
106
+ const lines = [`# Spaces in Team ${params.team_id}`, ""];
107
+ lines.push(`Found ${spaces.length} space(s)`, "");
108
+ for (const space of spaces) {
109
+ lines.push(formatSpaceMarkdown(space));
110
+ lines.push("");
111
+ }
112
+ result = lines.join("\n");
113
+ }
114
+ else {
115
+ result = JSON.stringify({ spaces }, null, 2);
116
+ }
117
+ const { content: finalContent, truncation } = truncateResponse(result, spaces.length, "spaces");
118
+ result = finalContent + formatTruncationInfo(truncation);
119
+ return {
120
+ content: [{ type: "text", text: result }]
121
+ };
122
+ }
123
+ catch (error) {
124
+ return {
125
+ content: [{ type: "text", text: handleApiError(error) }]
126
+ };
127
+ }
128
+ });
129
+ // Tool 3: Get Folders
130
+ server.registerTool("clickup_get_folders", {
131
+ title: "Get ClickUp Folders",
132
+ description: `Get all folders in a space.
133
+
134
+ Folders are optional groupings within spaces (Team → Space → Folder → List → Task).
135
+
136
+ Args:
137
+ - space_id (string): The space ID
138
+ - archived (boolean): Include archived folders (default: false)
139
+ - response_format ('markdown' | 'json'): Output format (default: 'markdown')
140
+
141
+ Examples:
142
+ - Use when: "Show me folders in space 123456"
143
+ - Use when: "List all folders in this space"
144
+
145
+ Error Handling:
146
+ - Returns "Error: Resource not found" if space_id is invalid (404)`,
147
+ inputSchema: z.object({
148
+ space_id: z.string().min(1).describe("Space ID"),
149
+ archived: z.boolean().default(false).describe("Include archived folders"),
150
+ response_format: ResponseFormatSchema
151
+ }).strict(),
152
+ annotations: {
153
+ readOnlyHint: true,
154
+ destructiveHint: false,
155
+ idempotentHint: true,
156
+ openWorldHint: true
157
+ }
158
+ }, async (params) => {
159
+ try {
160
+ const data = await makeApiRequest(`space/${params.space_id}/folder`, "GET", undefined, { archived: params.archived });
161
+ const folders = data.folders || [];
162
+ let result;
163
+ if (params.response_format === ResponseFormat.MARKDOWN) {
164
+ const lines = [`# Folders in Space ${params.space_id}`, ""];
165
+ lines.push(`Found ${folders.length} folder(s)`, "");
166
+ for (const folder of folders) {
167
+ lines.push(formatFolderMarkdown(folder));
168
+ lines.push("");
169
+ }
170
+ result = lines.join("\n");
171
+ }
172
+ else {
173
+ result = JSON.stringify({ folders }, null, 2);
174
+ }
175
+ const { content: finalContent, truncation } = truncateResponse(result, folders.length, "folders");
176
+ result = finalContent + formatTruncationInfo(truncation);
177
+ return {
178
+ content: [{ type: "text", text: result }]
179
+ };
180
+ }
181
+ catch (error) {
182
+ return {
183
+ content: [{ type: "text", text: handleApiError(error) }]
184
+ };
185
+ }
186
+ });
187
+ }
188
+ //# sourceMappingURL=hierarchy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hierarchy.js","sourceRoot":"","sources":["../../src/tools/hierarchy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Barrel export for all ClickUp MCP tool registration functions.
3
+ */
4
+ export { registerHierarchyTools } from "./hierarchy.js";
5
+ export { registerListTools } from "./lists.js";
6
+ export { registerTaskGetTools } from "./tasks-get.js";
7
+ export { registerTaskSearchTools } from "./tasks-search.js";
8
+ export { registerTaskWriteTools } from "./tasks-write.js";
9
+ export { registerTaskAnalyticsTools } from "./tasks-analytics.js";
10
+ export { registerCommentTools } from "./comments.js";
11
+ export { registerCustomFieldTools } from "./custom-fields.js";
12
+ export { registerTimeTrackingTools } from "./time-tracking.js";
13
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Barrel export for all ClickUp MCP tool registration functions.
3
+ */
4
+ export { registerHierarchyTools } from "./hierarchy.js";
5
+ export { registerListTools } from "./lists.js";
6
+ export { registerTaskGetTools } from "./tasks-get.js";
7
+ export { registerTaskSearchTools } from "./tasks-search.js";
8
+ export { registerTaskWriteTools } from "./tasks-write.js";
9
+ export { registerTaskAnalyticsTools } from "./tasks-analytics.js";
10
+ export { registerCommentTools } from "./comments.js";
11
+ export { registerCustomFieldTools } from "./custom-fields.js";
12
+ export { registerTimeTrackingTools } from "./time-tracking.js";
13
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * List tools for ClickUp MCP server.
3
+ * Tools for managing lists.
4
+ */
5
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
6
+ /**
7
+ * Register list tools with the MCP server
8
+ */
9
+ export declare function registerListTools(server: McpServer): void;
10
+ //# sourceMappingURL=lists.d.ts.map