@taazkareem/clickup-mcp-server 0.6.2 → 0.6.3
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 +6 -6
- package/build/logger.js +26 -1
- package/build/server.js +1 -1
- package/build/services/clickup/base.js +22 -1
- package/build/services/clickup/bulk.js +76 -45
- package/build/services/clickup/index.js +2 -2
- package/build/services/clickup/task/index.js +32 -0
- package/build/services/clickup/task/task-attachments.js +97 -0
- package/build/services/clickup/task/task-comments.js +104 -0
- package/build/services/clickup/task/task-core.js +477 -0
- package/build/services/clickup/task/task-custom-fields.js +97 -0
- package/build/services/clickup/task/task-search.js +462 -0
- package/build/services/clickup/task/task-service.js +25 -0
- package/build/services/clickup/task/task-tags.js +101 -0
- package/build/services/clickup/workspace.js +81 -36
- package/build/tools/folder.js +1 -1
- package/build/tools/list.js +2 -4
- package/build/tools/task/attachments.js +18 -5
- package/build/tools/task/attachments.types.js +9 -0
- package/build/tools/task/bulk-operations.js +111 -15
- package/build/tools/task/handlers.js +169 -24
- package/build/tools/task/index.js +1 -1
- package/build/tools/task/main.js +36 -1
- package/build/tools/task/single-operations.js +51 -4
- package/build/tools/task/utilities.js +24 -71
- package/build/tools/utils.js +2 -2
- package/build/utils/date-utils.js +149 -30
- package/build/utils/resolver-utils.js +33 -40
- package/build/utils/sponsor-service.js +1 -1
- package/package.json +1 -1
- package/build/mcp-tools.js +0 -64
- package/build/server-state.js +0 -93
- package/build/server.log +0 -0
- package/build/services/clickup/task.js +0 -701
- package/build/tools/bulk-tasks.js +0 -36
- package/build/tools/debug.js +0 -76
- package/build/tools/logs.js +0 -55
- package/build/tools/task.js +0 -1554
- package/build/utils/params-utils.js +0 -39
- package/build/utils/sponsor-analytics.js +0 -100
- package/build/utils/sponsor-utils.js +0 -57
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Alternative implementation for bulk tasks creation
|
|
3
|
-
*/
|
|
4
|
-
import { handleCreateBulkTasks } from './task.js';
|
|
5
|
-
/**
|
|
6
|
-
* Alternative tool definition for bulk task creation to work around MCP validation issues
|
|
7
|
-
*/
|
|
8
|
-
export const createTasksBulkTool = {
|
|
9
|
-
name: "create_tasks_bulk",
|
|
10
|
-
description: "Create multiple tasks in a list efficiently. You MUST provide:\n1. An array of tasks with required properties\n2. Either listId or listName to specify the target list",
|
|
11
|
-
inputSchema: {
|
|
12
|
-
type: "object",
|
|
13
|
-
properties: {
|
|
14
|
-
listId: {
|
|
15
|
-
type: "string",
|
|
16
|
-
description: "ID of list for new tasks (preferred). Use this instead of listName if you have it."
|
|
17
|
-
},
|
|
18
|
-
listName: {
|
|
19
|
-
type: "string",
|
|
20
|
-
description: "Name of list for new tasks. Only use if you don't have listId."
|
|
21
|
-
},
|
|
22
|
-
tasks: {
|
|
23
|
-
// Define minimally to avoid validation issues
|
|
24
|
-
description: "Array of tasks to create. Each task must have at least a name."
|
|
25
|
-
}
|
|
26
|
-
},
|
|
27
|
-
required: ["tasks"]
|
|
28
|
-
}
|
|
29
|
-
};
|
|
30
|
-
/**
|
|
31
|
-
* Handler for create_tasks_bulk tool
|
|
32
|
-
*/
|
|
33
|
-
export async function handleCreateTasksBulk(parameters) {
|
|
34
|
-
// Use the same implementation as handleCreateBulkTasks
|
|
35
|
-
return handleCreateBulkTasks(parameters);
|
|
36
|
-
}
|
package/build/tools/debug.js
DELETED
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Debug Tools
|
|
3
|
-
*
|
|
4
|
-
* This module provides tools for debugging and monitoring the ClickUp MCP server.
|
|
5
|
-
*/
|
|
6
|
-
// In-memory log storage
|
|
7
|
-
const DEBUG_LOGS = [];
|
|
8
|
-
/**
|
|
9
|
-
* Log a message to the in-memory debug logs
|
|
10
|
-
*/
|
|
11
|
-
export function logDebug(message, level = 'info') {
|
|
12
|
-
const timestamp = new Date().toISOString();
|
|
13
|
-
DEBUG_LOGS.push({ timestamp, message, level });
|
|
14
|
-
// Optional: Also print to console for development
|
|
15
|
-
if (level === 'error') {
|
|
16
|
-
console.error(`[${timestamp}] ERROR: ${message}`);
|
|
17
|
-
}
|
|
18
|
-
else if (level === 'warn') {
|
|
19
|
-
console.warn(`[${timestamp}] WARN: ${message}`);
|
|
20
|
-
}
|
|
21
|
-
else {
|
|
22
|
-
console.log(`[${timestamp}] INFO: ${message}`);
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
/**
|
|
26
|
-
* Tool definition for checking debug logs
|
|
27
|
-
*/
|
|
28
|
-
export const checkDebugLogsTool = {
|
|
29
|
-
name: 'check_debug_logs',
|
|
30
|
-
description: 'Check the server debug logs collected since the server started.',
|
|
31
|
-
inputSchema: {
|
|
32
|
-
type: 'object',
|
|
33
|
-
properties: {}
|
|
34
|
-
}
|
|
35
|
-
};
|
|
36
|
-
/**
|
|
37
|
-
* Tool definition for clearing debug logs
|
|
38
|
-
*/
|
|
39
|
-
export const clearDebugLogsTool = {
|
|
40
|
-
name: 'clear_debug_logs',
|
|
41
|
-
description: 'Clear all server debug logs.',
|
|
42
|
-
inputSchema: {
|
|
43
|
-
type: 'object',
|
|
44
|
-
properties: {}
|
|
45
|
-
}
|
|
46
|
-
};
|
|
47
|
-
/**
|
|
48
|
-
* Handler for the check_debug_logs tool
|
|
49
|
-
*/
|
|
50
|
-
export function handleCheckDebugLogs() {
|
|
51
|
-
return {
|
|
52
|
-
content: [
|
|
53
|
-
{
|
|
54
|
-
type: "text",
|
|
55
|
-
text: DEBUG_LOGS.length > 0
|
|
56
|
-
? DEBUG_LOGS.map(log => `[${log.timestamp}] [${log.level.toUpperCase()}] ${log.message}`).join('\n')
|
|
57
|
-
: "No debug logs available."
|
|
58
|
-
}
|
|
59
|
-
]
|
|
60
|
-
};
|
|
61
|
-
}
|
|
62
|
-
/**
|
|
63
|
-
* Handler for the clear_debug_logs tool
|
|
64
|
-
*/
|
|
65
|
-
export function handleClearDebugLogs() {
|
|
66
|
-
const count = DEBUG_LOGS.length;
|
|
67
|
-
DEBUG_LOGS.length = 0;
|
|
68
|
-
return {
|
|
69
|
-
content: [
|
|
70
|
-
{
|
|
71
|
-
type: "text",
|
|
72
|
-
text: `Cleared ${count} debug log entries.`
|
|
73
|
-
}
|
|
74
|
-
]
|
|
75
|
-
};
|
|
76
|
-
}
|
package/build/tools/logs.js
DELETED
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Simple Logs Tool
|
|
3
|
-
*
|
|
4
|
-
* Provides a basic tool for reading server logs.
|
|
5
|
-
*/
|
|
6
|
-
import { promises as fs } from 'fs';
|
|
7
|
-
import { join, dirname } from 'path';
|
|
8
|
-
// Define the log file path - using __dirname to get absolute path
|
|
9
|
-
const LOG_FILE = join(dirname(__dirname), 'server.log');
|
|
10
|
-
// Tool definition
|
|
11
|
-
export const checkLogsTool = {
|
|
12
|
-
name: "check_logs",
|
|
13
|
-
description: "Check server logs with optional filtering by log level",
|
|
14
|
-
parameters: {
|
|
15
|
-
type: "object",
|
|
16
|
-
properties: {
|
|
17
|
-
level: {
|
|
18
|
-
type: "string",
|
|
19
|
-
enum: ["TRACE", "DEBUG", "INFO", "WARN", "ERROR"],
|
|
20
|
-
description: "Filter logs by level"
|
|
21
|
-
},
|
|
22
|
-
limit: {
|
|
23
|
-
type: "number",
|
|
24
|
-
description: "Maximum number of log entries to return (default: 50)"
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
};
|
|
29
|
-
// Simple handler implementation using async/await with promises
|
|
30
|
-
export async function handleCheckLogs(params) {
|
|
31
|
-
try {
|
|
32
|
-
// Read log file using promises
|
|
33
|
-
const content = await fs.readFile(LOG_FILE, 'utf-8');
|
|
34
|
-
// Split into lines and filter out empty lines
|
|
35
|
-
let lines = content.split('\n').filter(Boolean);
|
|
36
|
-
// Apply level filtering if specified
|
|
37
|
-
if (params?.level) {
|
|
38
|
-
lines = lines.filter(line => line.includes(`${params.level}:`));
|
|
39
|
-
}
|
|
40
|
-
// Apply limit (default to 50)
|
|
41
|
-
const limit = params?.limit || 50;
|
|
42
|
-
const result = lines.slice(-limit);
|
|
43
|
-
// Return results
|
|
44
|
-
return {
|
|
45
|
-
logs: result.length > 0 ? result : ['No matching logs found.']
|
|
46
|
-
};
|
|
47
|
-
}
|
|
48
|
-
catch (error) {
|
|
49
|
-
// Simple error handling
|
|
50
|
-
if (error.code === 'ENOENT') {
|
|
51
|
-
return { logs: ['Log file not found.'] };
|
|
52
|
-
}
|
|
53
|
-
return { logs: [`Error reading logs: ${error.message}`] };
|
|
54
|
-
}
|
|
55
|
-
}
|