@taazkareem/clickup-mcp-server 0.7.0 → 0.7.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +8 -8
- package/build/server.js +1 -1
- package/build/services/clickup/task/task-core.js +27 -5
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
|
|
7
7
|
A Model Context Protocol (MCP) server for integrating ClickUp tasks with AI applications. This server allows AI agents to interact with ClickUp tasks, spaces, lists, and folders through a standardized protocol.
|
|
8
8
|
|
|
9
|
-
> 🚀 **Status Update:** v0.7.
|
|
9
|
+
> 🚀 **Status Update:** v0.7.1 now available with complete Time Tracking support and Document Management features.
|
|
10
10
|
|
|
11
11
|
## Setup
|
|
12
12
|
|
|
@@ -61,13 +61,13 @@ Please disable tools you don't need if you are having issues with the number of
|
|
|
61
61
|
|
|
62
62
|
## Features
|
|
63
63
|
|
|
64
|
-
| 📝 Task Management
|
|
65
|
-
|
|
|
66
|
-
| • Create, update, and delete tasks`<br>`• Move and duplicate tasks anywhere`<br>`• Support for single and bulk operations`<br>`• Set start/due dates with natural language`<br>`• Create and manage subtasks`<br>`• Add comments and attachments | • Create, update, and delete space tags`<br>`• Add and remove tags from tasks`<br>`• Use natural language color commands`<br>`• Automatic contrasting foreground colors`<br>`• View all space tags`<br>`• Tag-based task organization across workspace |
|
|
67
|
-
| ⏱️**Time Tracking**
|
|
68
|
-
| • View time entries for tasks`<br>`• Start/stop time tracking on tasks`<br>`• Add manual time entries`<br>`• Delete time entries`<br>`• View currently running timer`<br>`• Track billable and non-billable time | • Navigate spaces, folders, and lists`<br>`• Create and manage folders`<br>`• Organize lists within spaces`<br>`• Create lists in folders`<br>`• View workspace hierarchy`<br>`• Efficient path navigation |
|
|
69
|
-
| ⚡**Integration Features**
|
|
70
|
-
| • Global name or ID-based lookups`<br>`• Case-insensitive matching`<br>`• Markdown formatting support`<br>`• Built-in rate limiting`<br>`• Error handling and validation`<br>`• Comprehensive API coverage | • Document Listing through all workspace`<br>` • Document Page listing `<br>` • Document Page Details `<br>` • Document Creation `<br>` • Document page update, modification (append and prepend) `<br>`
|
|
64
|
+
| 📝 Task Management | 🏷️ Tag Management |
|
|
65
|
+
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
66
|
+
| • Create, update, and delete tasks `<br>`• Move and duplicate tasks anywhere `<br>`• Support for single and bulk operations `<br>`• Set start/due dates with natural language `<br>`• Create and manage subtasks `<br>`• Add comments and attachments | • Create, update, and delete space tags `<br>`• Add and remove tags from tasks `<br>`• Use natural language color commands `<br>`• Automatic contrasting foreground colors `<br>`• View all space tags `<br>`• Tag-based task organization across workspace |
|
|
67
|
+
| ⏱️**Time Tracking** | 🌳**Workspace Organization** |
|
|
68
|
+
| • View time entries for tasks `<br>`• Start/stop time tracking on tasks `<br>`• Add manual time entries `<br>`• Delete time entries `<br>`• View currently running timer `<br>`• Track billable and non-billable time | • Navigate spaces, folders, and lists `<br>`• Create and manage folders `<br>`• Organize lists within spaces `<br>`• Create lists in folders `<br>`• View workspace hierarchy `<br>`• Efficient path navigation |
|
|
69
|
+
| ⚡**Integration Features** | **Document Listing, Creation and Updating!** |
|
|
70
|
+
| • Global name or ID-based lookups `<br>`• Case-insensitive matching `<br>`• Markdown formatting support `<br>`• Built-in rate limiting `<br>`• Error handling and validation `<br>`• Comprehensive API coverage | • Document Listing through all workspace `<br>` • Document Page listing `<br>` • Document Page Details `<br>` • Document Creation `<br>` • Document page update, modification (append and prepend) `<br>` |
|
|
71
71
|
|
|
72
72
|
## Available Tools
|
|
73
73
|
|
package/build/server.js
CHANGED
|
@@ -242,20 +242,42 @@ export class TaskServiceCore extends BaseClickUpService {
|
|
|
242
242
|
/**
|
|
243
243
|
* Get a task by its custom ID
|
|
244
244
|
* @param customTaskId The custom ID of the task (e.g., "ABC-123")
|
|
245
|
-
* @param listId Optional list ID to limit the search
|
|
245
|
+
* @param listId Optional list ID to limit the search (Note: ClickUp API might not filter by list_id when using custom_task_id)
|
|
246
246
|
* @returns The task details
|
|
247
247
|
*/
|
|
248
248
|
async getTaskByCustomId(customTaskId, listId) {
|
|
249
|
+
// Log the operation, including listId even if the API might ignore it for this specific lookup type
|
|
249
250
|
this.logOperation('getTaskByCustomId', { customTaskId, listId });
|
|
250
251
|
try {
|
|
251
252
|
return await this.makeRequest(async () => {
|
|
252
|
-
//
|
|
253
|
-
const url = `/task
|
|
254
|
-
|
|
255
|
-
|
|
253
|
+
// Use the standard task endpoint with the custom task ID
|
|
254
|
+
const url = `/task/${encodeURIComponent(customTaskId)}`;
|
|
255
|
+
// Add required query parameters for custom ID lookup
|
|
256
|
+
const params = new URLSearchParams({
|
|
257
|
+
custom_task_ids: 'true',
|
|
258
|
+
team_id: this.teamId // team_id is required when custom_task_ids is true
|
|
259
|
+
});
|
|
260
|
+
// Note: The ClickUp API documentation for GET /task/{task_id} doesn't explicitly mention
|
|
261
|
+
// filtering by list_id when custom_task_ids=true. This parameter might be ignored.
|
|
262
|
+
if (listId) {
|
|
263
|
+
this.logger.warn('listId provided to getTaskByCustomId, but the ClickUp API endpoint might not support it directly for custom ID lookups.', { customTaskId, listId });
|
|
264
|
+
// If ClickUp API were to support it, you would add it like this:
|
|
265
|
+
// params.append('list_id', listId);
|
|
266
|
+
}
|
|
267
|
+
const response = await this.client.get(url, { params });
|
|
268
|
+
// Handle potential non-JSON responses (though less likely with GET)
|
|
269
|
+
const data = response.data;
|
|
270
|
+
if (typeof data === 'string') {
|
|
271
|
+
throw new ClickUpServiceError('Received unexpected text response from API when fetching by custom ID', ErrorCode.UNKNOWN, data);
|
|
272
|
+
}
|
|
273
|
+
return data;
|
|
256
274
|
});
|
|
257
275
|
}
|
|
258
276
|
catch (error) {
|
|
277
|
+
// Provide more specific error context if possible
|
|
278
|
+
if (error instanceof ClickUpServiceError && error.code === ErrorCode.NOT_FOUND) {
|
|
279
|
+
throw new ClickUpServiceError(`Task with custom ID ${customTaskId} not found or not accessible for team ${this.teamId}.`, ErrorCode.NOT_FOUND, error.data);
|
|
280
|
+
}
|
|
259
281
|
throw this.handleError(error, `Failed to get task with custom ID ${customTaskId}`);
|
|
260
282
|
}
|
|
261
283
|
}
|
package/package.json
CHANGED