clickup-markdown-mcp 1.0.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.
- package/LICENSE +21 -0
- package/README.md +188 -0
- package/dist/api/clickup-client.d.ts +66 -0
- package/dist/api/clickup-client.d.ts.map +1 -0
- package/dist/api/clickup-client.js +154 -0
- package/dist/api/clickup-client.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +250 -0
- package/dist/cli.js.map +1 -0
- package/dist/config/config.d.ts +3 -0
- package/dist/config/config.d.ts.map +1 -0
- package/dist/config/config.js +58 -0
- package/dist/config/config.js.map +1 -0
- package/dist/discovery/environment-scanner.d.ts +10 -0
- package/dist/discovery/environment-scanner.d.ts.map +1 -0
- package/dist/discovery/environment-scanner.js +185 -0
- package/dist/discovery/environment-scanner.js.map +1 -0
- package/dist/generators/markdown-generator.d.ts +8 -0
- package/dist/generators/markdown-generator.d.ts.map +1 -0
- package/dist/generators/markdown-generator.js +88 -0
- package/dist/generators/markdown-generator.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +19 -0
- package/dist/index.js.map +1 -0
- package/dist/parsers/markdown-parser.d.ts +23 -0
- package/dist/parsers/markdown-parser.d.ts.map +1 -0
- package/dist/parsers/markdown-parser.js +216 -0
- package/dist/parsers/markdown-parser.js.map +1 -0
- package/dist/server.d.ts +3 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +450 -0
- package/dist/server.js.map +1 -0
- package/dist/types/index.d.ts +189 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +6 -0
- package/dist/types/index.js.map +1 -0
- package/package.json +48 -0
package/dist/server.js
ADDED
|
@@ -0,0 +1,450 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// ============================================================
|
|
3
|
+
// ClickUp MCP Server — Main Server with All Tools
|
|
4
|
+
// ============================================================
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.createServer = createServer;
|
|
7
|
+
const mcp_js_1 = require("@modelcontextprotocol/sdk/server/mcp.js");
|
|
8
|
+
const zod_1 = require("zod");
|
|
9
|
+
const clickup_client_js_1 = require("./api/clickup-client.js");
|
|
10
|
+
const environment_scanner_js_1 = require("./discovery/environment-scanner.js");
|
|
11
|
+
const markdown_parser_js_1 = require("./parsers/markdown-parser.js");
|
|
12
|
+
const markdown_generator_js_1 = require("./generators/markdown-generator.js");
|
|
13
|
+
const config_js_1 = require("./config/config.js");
|
|
14
|
+
function createServer() {
|
|
15
|
+
const config = (0, config_js_1.loadConfig)();
|
|
16
|
+
const client = new clickup_client_js_1.ClickUpClient(config.apiToken);
|
|
17
|
+
const scanner = new environment_scanner_js_1.EnvironmentScanner(client);
|
|
18
|
+
const generator = new markdown_generator_js_1.MarkdownGenerator(client);
|
|
19
|
+
const server = new mcp_js_1.McpServer({
|
|
20
|
+
name: 'clickup-markdown-mcp',
|
|
21
|
+
version: '1.0.0',
|
|
22
|
+
});
|
|
23
|
+
// ========================================
|
|
24
|
+
// NAVIGATION / DISCOVERY TOOLS
|
|
25
|
+
// ========================================
|
|
26
|
+
server.tool('list_workspaces', 'List all ClickUp workspaces accessible with the current API token', {}, async () => {
|
|
27
|
+
const workspaces = await client.listWorkspaces();
|
|
28
|
+
return {
|
|
29
|
+
content: [{
|
|
30
|
+
type: 'text',
|
|
31
|
+
text: JSON.stringify(workspaces.map((w) => ({
|
|
32
|
+
id: w.id,
|
|
33
|
+
name: w.name,
|
|
34
|
+
members: w.members?.length || 0,
|
|
35
|
+
})), null, 2),
|
|
36
|
+
}],
|
|
37
|
+
};
|
|
38
|
+
});
|
|
39
|
+
server.tool('list_spaces', 'List all spaces in a workspace', { team_id: zod_1.z.string().describe('Workspace/Team ID') }, async ({ team_id }) => {
|
|
40
|
+
const spaces = await client.listSpaces(team_id);
|
|
41
|
+
return {
|
|
42
|
+
content: [{
|
|
43
|
+
type: 'text',
|
|
44
|
+
text: JSON.stringify(spaces.map((s) => ({
|
|
45
|
+
id: s.id,
|
|
46
|
+
name: s.name,
|
|
47
|
+
})), null, 2),
|
|
48
|
+
}],
|
|
49
|
+
};
|
|
50
|
+
});
|
|
51
|
+
server.tool('list_folders', 'List all folders in a space', { space_id: zod_1.z.string().describe('Space ID') }, async ({ space_id }) => {
|
|
52
|
+
const folders = await client.listFolders(space_id);
|
|
53
|
+
return {
|
|
54
|
+
content: [{
|
|
55
|
+
type: 'text',
|
|
56
|
+
text: JSON.stringify(folders.map((f) => ({
|
|
57
|
+
id: f.id,
|
|
58
|
+
name: f.name,
|
|
59
|
+
lists: f.lists?.map((l) => ({ id: l.id, name: l.name })),
|
|
60
|
+
})), null, 2),
|
|
61
|
+
}],
|
|
62
|
+
};
|
|
63
|
+
});
|
|
64
|
+
server.tool('list_lists', 'List all lists in a folder', { folder_id: zod_1.z.string().describe('Folder ID') }, async ({ folder_id }) => {
|
|
65
|
+
const lists = await client.listLists(folder_id);
|
|
66
|
+
return {
|
|
67
|
+
content: [{
|
|
68
|
+
type: 'text',
|
|
69
|
+
text: JSON.stringify(lists.map((l) => ({
|
|
70
|
+
id: l.id,
|
|
71
|
+
name: l.name,
|
|
72
|
+
})), null, 2),
|
|
73
|
+
}],
|
|
74
|
+
};
|
|
75
|
+
});
|
|
76
|
+
server.tool('get_list_fields', 'Get all custom fields, statuses, and configuration for a list', { list_id: zod_1.z.string().describe('List ID') }, async ({ list_id }) => {
|
|
77
|
+
const list = await client.getList(list_id);
|
|
78
|
+
return {
|
|
79
|
+
content: [{
|
|
80
|
+
type: 'text',
|
|
81
|
+
text: JSON.stringify({
|
|
82
|
+
id: list.id,
|
|
83
|
+
name: list.name,
|
|
84
|
+
statuses: list.statuses,
|
|
85
|
+
custom_fields: list.custom_fields,
|
|
86
|
+
}, null, 2),
|
|
87
|
+
}],
|
|
88
|
+
};
|
|
89
|
+
});
|
|
90
|
+
// ========================================
|
|
91
|
+
// AUTO-DISCOVERY + TUTORIAL TOOLS
|
|
92
|
+
// ========================================
|
|
93
|
+
server.tool('discover_environment', 'Scan a ClickUp list to auto-detect statuses (with exact encoding), required custom fields, dropdown options, workspace members, and naming patterns. Call this FIRST before creating any tasks.', { list_id: zod_1.z.string().describe('List ID to scan') }, async ({ list_id }) => {
|
|
94
|
+
const env = await scanner.scan(list_id);
|
|
95
|
+
return {
|
|
96
|
+
content: [{
|
|
97
|
+
type: 'text',
|
|
98
|
+
text: JSON.stringify(env, null, 2),
|
|
99
|
+
}],
|
|
100
|
+
};
|
|
101
|
+
});
|
|
102
|
+
server.tool('get_guide', 'Get a contextual tutorial for the AI explaining the exact tasks.md format, rules, required fields, and examples. The AI should call this to learn how to generate correct tasks.md files. Optionally pass a list_id to include environment-specific info.', { list_id: zod_1.z.string().optional().describe('Optional: List ID to include environment-specific info in the guide') }, async ({ list_id }) => {
|
|
103
|
+
let guide;
|
|
104
|
+
if (list_id) {
|
|
105
|
+
const env = await scanner.scan(list_id);
|
|
106
|
+
guide = scanner.generateGuide(env);
|
|
107
|
+
}
|
|
108
|
+
else {
|
|
109
|
+
// Generic guide without environment context
|
|
110
|
+
guide = scanner.generateGuide({
|
|
111
|
+
list: { id: '', name: '(not specified)' },
|
|
112
|
+
statuses: [],
|
|
113
|
+
custom_fields: [],
|
|
114
|
+
members: [],
|
|
115
|
+
detected_patterns: {
|
|
116
|
+
naming: 'Sprint N - Title / [TAG] Subtask title',
|
|
117
|
+
hierarchy: 'Task pai → Sprint → Subtask',
|
|
118
|
+
time_tracking: 'Track time on subtasks',
|
|
119
|
+
},
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
return {
|
|
123
|
+
content: [{ type: 'text', text: guide }],
|
|
124
|
+
};
|
|
125
|
+
});
|
|
126
|
+
server.tool('validate_md', 'Validate a tasks.md content before importing. Checks format, required fields, parseable times. Returns errors and warnings.', { content: zod_1.z.string().describe('The full tasks.md content to validate') }, async ({ content }) => {
|
|
127
|
+
const result = (0, markdown_parser_js_1.validateTasksMd)(content);
|
|
128
|
+
return {
|
|
129
|
+
content: [{
|
|
130
|
+
type: 'text',
|
|
131
|
+
text: JSON.stringify({
|
|
132
|
+
...result,
|
|
133
|
+
summary: {
|
|
134
|
+
...result.summary,
|
|
135
|
+
totalTimeFormatted: `${Math.round(result.summary.totalTimeMs / 60000)} min`,
|
|
136
|
+
},
|
|
137
|
+
}, null, 2),
|
|
138
|
+
}],
|
|
139
|
+
};
|
|
140
|
+
});
|
|
141
|
+
// ========================================
|
|
142
|
+
// CRUD TASK TOOLS
|
|
143
|
+
// ========================================
|
|
144
|
+
server.tool('create_task', 'Create a single task in ClickUp with name, description, assignees, custom fields, and optional parent task', {
|
|
145
|
+
list_id: zod_1.z.string().describe('List ID'),
|
|
146
|
+
name: zod_1.z.string().describe('Task name'),
|
|
147
|
+
description: zod_1.z.string().optional().describe('Task description'),
|
|
148
|
+
parent: zod_1.z.string().optional().describe('Parent task ID (to create as subtask)'),
|
|
149
|
+
assignees: zod_1.z.array(zod_1.z.number()).optional().describe('Array of user IDs to assign'),
|
|
150
|
+
status: zod_1.z.string().optional().describe('Status name'),
|
|
151
|
+
custom_fields: zod_1.z.array(zod_1.z.object({
|
|
152
|
+
id: zod_1.z.string(),
|
|
153
|
+
value: zod_1.z.string(),
|
|
154
|
+
})).optional().describe('Custom field values'),
|
|
155
|
+
}, async (params) => {
|
|
156
|
+
const task = await client.createTask(params.list_id, {
|
|
157
|
+
name: params.name,
|
|
158
|
+
description: params.description,
|
|
159
|
+
parent: params.parent,
|
|
160
|
+
assignees: params.assignees || config.defaultAssignees,
|
|
161
|
+
status: params.status,
|
|
162
|
+
custom_fields: params.custom_fields,
|
|
163
|
+
});
|
|
164
|
+
return {
|
|
165
|
+
content: [{
|
|
166
|
+
type: 'text',
|
|
167
|
+
text: JSON.stringify({
|
|
168
|
+
id: task.id,
|
|
169
|
+
name: task.name,
|
|
170
|
+
url: task.url,
|
|
171
|
+
status: task.status?.status,
|
|
172
|
+
}, null, 2),
|
|
173
|
+
}],
|
|
174
|
+
};
|
|
175
|
+
});
|
|
176
|
+
server.tool('get_task', 'Get a task by ID, optionally including its subtasks', {
|
|
177
|
+
task_id: zod_1.z.string().describe('Task ID'),
|
|
178
|
+
include_subtasks: zod_1.z.boolean().optional().default(true).describe('Include subtasks'),
|
|
179
|
+
}, async ({ task_id, include_subtasks }) => {
|
|
180
|
+
const task = await client.getTask(task_id, include_subtasks);
|
|
181
|
+
return {
|
|
182
|
+
content: [{
|
|
183
|
+
type: 'text',
|
|
184
|
+
text: JSON.stringify({
|
|
185
|
+
id: task.id,
|
|
186
|
+
name: task.name,
|
|
187
|
+
description: task.text_content,
|
|
188
|
+
status: task.status?.status,
|
|
189
|
+
assignees: task.assignees?.map((a) => ({ id: a.id, name: a.username })),
|
|
190
|
+
subtasks: task.subtasks?.map((s) => ({
|
|
191
|
+
id: s.id,
|
|
192
|
+
name: s.name,
|
|
193
|
+
status: s.status?.status,
|
|
194
|
+
})),
|
|
195
|
+
url: task.url,
|
|
196
|
+
}, null, 2),
|
|
197
|
+
}],
|
|
198
|
+
};
|
|
199
|
+
});
|
|
200
|
+
server.tool('update_task', 'Update a task — change status, name, description, or assignees', {
|
|
201
|
+
task_id: zod_1.z.string().describe('Task ID'),
|
|
202
|
+
name: zod_1.z.string().optional().describe('New name'),
|
|
203
|
+
description: zod_1.z.string().optional().describe('New description'),
|
|
204
|
+
status: zod_1.z.string().optional().describe('New status name'),
|
|
205
|
+
add_assignees: zod_1.z.array(zod_1.z.number()).optional().describe('User IDs to add'),
|
|
206
|
+
remove_assignees: zod_1.z.array(zod_1.z.number()).optional().describe('User IDs to remove'),
|
|
207
|
+
}, async (params) => {
|
|
208
|
+
const updates = {};
|
|
209
|
+
if (params.name)
|
|
210
|
+
updates.name = params.name;
|
|
211
|
+
if (params.description)
|
|
212
|
+
updates.description = params.description;
|
|
213
|
+
if (params.status)
|
|
214
|
+
updates.status = params.status;
|
|
215
|
+
if (params.add_assignees || params.remove_assignees) {
|
|
216
|
+
updates.assignees = {
|
|
217
|
+
add: params.add_assignees,
|
|
218
|
+
rem: params.remove_assignees,
|
|
219
|
+
};
|
|
220
|
+
}
|
|
221
|
+
const task = await client.updateTask(params.task_id, updates);
|
|
222
|
+
return {
|
|
223
|
+
content: [{
|
|
224
|
+
type: 'text',
|
|
225
|
+
text: JSON.stringify({
|
|
226
|
+
id: task.id,
|
|
227
|
+
name: task.name,
|
|
228
|
+
status: task.status?.status,
|
|
229
|
+
message: 'Task updated successfully',
|
|
230
|
+
}, null, 2),
|
|
231
|
+
}],
|
|
232
|
+
};
|
|
233
|
+
});
|
|
234
|
+
server.tool('delete_task', 'Delete a task by ID', { task_id: zod_1.z.string().describe('Task ID to delete') }, async ({ task_id }) => {
|
|
235
|
+
await client.deleteTask(task_id);
|
|
236
|
+
return {
|
|
237
|
+
content: [{
|
|
238
|
+
type: 'text',
|
|
239
|
+
text: JSON.stringify({ message: `Task ${task_id} deleted successfully` }),
|
|
240
|
+
}],
|
|
241
|
+
};
|
|
242
|
+
});
|
|
243
|
+
server.tool('search_tasks', 'Search tasks in a list by name or status', {
|
|
244
|
+
list_id: zod_1.z.string().describe('List ID'),
|
|
245
|
+
name: zod_1.z.string().optional().describe('Search by task name'),
|
|
246
|
+
statuses: zod_1.z.array(zod_1.z.string()).optional().describe('Filter by status names'),
|
|
247
|
+
}, async (params) => {
|
|
248
|
+
const tasks = await client.searchTasks(params.list_id, {
|
|
249
|
+
name: params.name,
|
|
250
|
+
statuses: params.statuses,
|
|
251
|
+
});
|
|
252
|
+
return {
|
|
253
|
+
content: [{
|
|
254
|
+
type: 'text',
|
|
255
|
+
text: JSON.stringify(tasks.map((t) => ({
|
|
256
|
+
id: t.id,
|
|
257
|
+
name: t.name,
|
|
258
|
+
status: t.status?.status,
|
|
259
|
+
url: t.url,
|
|
260
|
+
})), null, 2),
|
|
261
|
+
}],
|
|
262
|
+
};
|
|
263
|
+
});
|
|
264
|
+
// ========================================
|
|
265
|
+
// TIME TRACKING TOOLS
|
|
266
|
+
// ========================================
|
|
267
|
+
server.tool('add_time_entry', 'Add a time tracking entry to a task', {
|
|
268
|
+
task_id: zod_1.z.string().describe('Task ID'),
|
|
269
|
+
duration_minutes: zod_1.z.number().describe('Duration in minutes'),
|
|
270
|
+
description: zod_1.z.string().optional().describe('Time entry description'),
|
|
271
|
+
}, async ({ task_id, duration_minutes, description }) => {
|
|
272
|
+
const durationMs = duration_minutes * 60 * 1000;
|
|
273
|
+
const now = Date.now();
|
|
274
|
+
const entry = await client.addTimeEntry(task_id, {
|
|
275
|
+
duration: durationMs,
|
|
276
|
+
start: now - durationMs,
|
|
277
|
+
end: now,
|
|
278
|
+
description,
|
|
279
|
+
});
|
|
280
|
+
return {
|
|
281
|
+
content: [{
|
|
282
|
+
type: 'text',
|
|
283
|
+
text: JSON.stringify({
|
|
284
|
+
message: `Added ${duration_minutes} minutes to task ${task_id}`,
|
|
285
|
+
entry_id: entry.id,
|
|
286
|
+
}),
|
|
287
|
+
}],
|
|
288
|
+
};
|
|
289
|
+
});
|
|
290
|
+
server.tool('get_time_entries', 'Get all time tracking entries for a task', { task_id: zod_1.z.string().describe('Task ID') }, async ({ task_id }) => {
|
|
291
|
+
const entries = await client.getTimeEntries(task_id);
|
|
292
|
+
return {
|
|
293
|
+
content: [{
|
|
294
|
+
type: 'text',
|
|
295
|
+
text: JSON.stringify(entries.map((e) => ({
|
|
296
|
+
id: e.id,
|
|
297
|
+
minutes: Math.round(e.time / 60000),
|
|
298
|
+
user: e.user?.username,
|
|
299
|
+
})), null, 2),
|
|
300
|
+
}],
|
|
301
|
+
};
|
|
302
|
+
});
|
|
303
|
+
// ========================================
|
|
304
|
+
// BULK / IMPORT / EXPORT TOOLS
|
|
305
|
+
// ========================================
|
|
306
|
+
server.tool('import_from_md', 'Import tasks from a tasks.md content. Creates sprints as subtasks of a parent task, and subtasks under each sprint. Adds time tracking and assignees. This is the main automation tool.', {
|
|
307
|
+
content: zod_1.z.string().describe('The full tasks.md content'),
|
|
308
|
+
list_id: zod_1.z.string().describe('List ID to create tasks in'),
|
|
309
|
+
parent_task_id: zod_1.z.string().describe('Parent task ID (sprints will be created as subtasks of this)'),
|
|
310
|
+
assignees: zod_1.z.array(zod_1.z.number()).optional().describe('User IDs to assign to all tasks'),
|
|
311
|
+
custom_fields: zod_1.z.array(zod_1.z.object({
|
|
312
|
+
id: zod_1.z.string(),
|
|
313
|
+
value: zod_1.z.string(),
|
|
314
|
+
})).optional().describe('Custom field values for all tasks (e.g., required fields)'),
|
|
315
|
+
start_from_sprint: zod_1.z.number().optional().default(1).describe('Start importing from this sprint number (skip earlier sprints)'),
|
|
316
|
+
mark_as_closed: zod_1.z.boolean().optional().default(false).describe('Mark all created tasks as closed/concluded after creation'),
|
|
317
|
+
}, async (params) => {
|
|
318
|
+
const parsed = (0, markdown_parser_js_1.parseTasksMd)(params.content);
|
|
319
|
+
const assignees = params.assignees || config.defaultAssignees || [];
|
|
320
|
+
const customFields = params.custom_fields || [];
|
|
321
|
+
const results = {
|
|
322
|
+
sprintsCreated: 0,
|
|
323
|
+
subtasksCreated: 0,
|
|
324
|
+
timeEntriesAdded: 0,
|
|
325
|
+
errors: [],
|
|
326
|
+
taskIds: [],
|
|
327
|
+
};
|
|
328
|
+
// Get closed status if needed
|
|
329
|
+
let closedStatus;
|
|
330
|
+
if (params.mark_as_closed) {
|
|
331
|
+
try {
|
|
332
|
+
const list = await client.getList(params.list_id);
|
|
333
|
+
const closed = list.statuses?.find((s) => s.type === 'closed');
|
|
334
|
+
if (closed)
|
|
335
|
+
closedStatus = closed.status;
|
|
336
|
+
}
|
|
337
|
+
catch { /* ignore */ }
|
|
338
|
+
}
|
|
339
|
+
const sprintsToImport = parsed.sprints.filter((s) => s.number >= (params.start_from_sprint || 1));
|
|
340
|
+
for (const sprint of sprintsToImport) {
|
|
341
|
+
try {
|
|
342
|
+
// Create sprint task
|
|
343
|
+
const sprintTask = await client.createTask(params.list_id, {
|
|
344
|
+
name: `Sprint ${sprint.number} - ${sprint.name}`,
|
|
345
|
+
parent: params.parent_task_id,
|
|
346
|
+
assignees,
|
|
347
|
+
custom_fields: customFields,
|
|
348
|
+
});
|
|
349
|
+
results.sprintsCreated++;
|
|
350
|
+
results.taskIds.push(sprintTask.id);
|
|
351
|
+
// Create subtasks
|
|
352
|
+
let subtaskIndex = 0;
|
|
353
|
+
for (const sub of sprint.subtasks) {
|
|
354
|
+
try {
|
|
355
|
+
const subTask = await client.createTask(params.list_id, {
|
|
356
|
+
name: sub.title,
|
|
357
|
+
description: sub.description,
|
|
358
|
+
parent: sprintTask.id,
|
|
359
|
+
assignees,
|
|
360
|
+
custom_fields: customFields,
|
|
361
|
+
});
|
|
362
|
+
results.subtasksCreated++;
|
|
363
|
+
results.taskIds.push(subTask.id);
|
|
364
|
+
// Add time tracking if there's real time
|
|
365
|
+
if (sub.timeReal > 0) {
|
|
366
|
+
try {
|
|
367
|
+
const baseStart = 1774563600000 + (subtaskIndex * 7200000); // offset each subtask
|
|
368
|
+
await client.addTimeEntry(subTask.id, {
|
|
369
|
+
duration: sub.timeReal,
|
|
370
|
+
start: baseStart,
|
|
371
|
+
end: baseStart + sub.timeReal,
|
|
372
|
+
});
|
|
373
|
+
results.timeEntriesAdded++;
|
|
374
|
+
}
|
|
375
|
+
catch (e) {
|
|
376
|
+
results.errors.push(`Time entry error for "${sub.title}": ${e instanceof Error ? e.message : String(e)}`);
|
|
377
|
+
}
|
|
378
|
+
}
|
|
379
|
+
// Close if requested
|
|
380
|
+
if (closedStatus) {
|
|
381
|
+
try {
|
|
382
|
+
await client.updateTask(subTask.id, { status: closedStatus });
|
|
383
|
+
}
|
|
384
|
+
catch { /* ignore close errors */ }
|
|
385
|
+
}
|
|
386
|
+
subtaskIndex++;
|
|
387
|
+
}
|
|
388
|
+
catch (e) {
|
|
389
|
+
results.errors.push(`Subtask error "${sub.title}": ${e instanceof Error ? e.message : String(e)}`);
|
|
390
|
+
}
|
|
391
|
+
}
|
|
392
|
+
// Close sprint if requested
|
|
393
|
+
if (closedStatus) {
|
|
394
|
+
try {
|
|
395
|
+
await client.updateTask(sprintTask.id, { status: closedStatus });
|
|
396
|
+
}
|
|
397
|
+
catch { /* ignore */ }
|
|
398
|
+
}
|
|
399
|
+
}
|
|
400
|
+
catch (e) {
|
|
401
|
+
results.errors.push(`Sprint ${sprint.number} error: ${e instanceof Error ? e.message : String(e)}`);
|
|
402
|
+
}
|
|
403
|
+
}
|
|
404
|
+
return {
|
|
405
|
+
content: [{
|
|
406
|
+
type: 'text',
|
|
407
|
+
text: JSON.stringify(results, null, 2),
|
|
408
|
+
}],
|
|
409
|
+
};
|
|
410
|
+
});
|
|
411
|
+
server.tool('bulk_update_status', 'Update the status of multiple tasks at once (e.g., mark all as concluded). Can also recursively update all subtasks of a parent task.', {
|
|
412
|
+
task_ids: zod_1.z.array(zod_1.z.string()).optional().describe('Array of task IDs to update'),
|
|
413
|
+
parent_task_id: zod_1.z.string().optional().describe('OR: parent task ID to recursively update all children'),
|
|
414
|
+
status: zod_1.z.string().describe('New status name'),
|
|
415
|
+
}, async (params) => {
|
|
416
|
+
let taskIds = params.task_ids || [];
|
|
417
|
+
// If parent task provided, get all subtasks recursively
|
|
418
|
+
if (params.parent_task_id) {
|
|
419
|
+
taskIds = await client.getSubtasksRecursive(params.parent_task_id);
|
|
420
|
+
}
|
|
421
|
+
if (taskIds.length === 0) {
|
|
422
|
+
return {
|
|
423
|
+
content: [{
|
|
424
|
+
type: 'text',
|
|
425
|
+
text: JSON.stringify({ message: 'No tasks to update', updated: 0 }),
|
|
426
|
+
}],
|
|
427
|
+
};
|
|
428
|
+
}
|
|
429
|
+
const result = await client.bulkUpdateStatus(taskIds, params.status);
|
|
430
|
+
return {
|
|
431
|
+
content: [{
|
|
432
|
+
type: 'text',
|
|
433
|
+
text: JSON.stringify({
|
|
434
|
+
message: `Updated ${result.updated} tasks, ${result.errors} errors`,
|
|
435
|
+
...result,
|
|
436
|
+
}, null, 2),
|
|
437
|
+
}],
|
|
438
|
+
};
|
|
439
|
+
});
|
|
440
|
+
server.tool('export_to_md', 'Export tasks from a ClickUp parent task to tasks.md format. Reads all sprints and subtasks with time tracking.', {
|
|
441
|
+
parent_task_id: zod_1.z.string().describe('Parent task ID to export from'),
|
|
442
|
+
}, async ({ parent_task_id }) => {
|
|
443
|
+
const md = await generator.exportToMd(parent_task_id);
|
|
444
|
+
return {
|
|
445
|
+
content: [{ type: 'text', text: md }],
|
|
446
|
+
};
|
|
447
|
+
});
|
|
448
|
+
return server;
|
|
449
|
+
}
|
|
450
|
+
//# sourceMappingURL=server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
export interface ClickUpWorkspace {
|
|
2
|
+
id: string;
|
|
3
|
+
name: string;
|
|
4
|
+
color: string;
|
|
5
|
+
avatar: string | null;
|
|
6
|
+
members: ClickUpMember[];
|
|
7
|
+
}
|
|
8
|
+
export interface ClickUpMember {
|
|
9
|
+
id: number;
|
|
10
|
+
username: string;
|
|
11
|
+
email: string;
|
|
12
|
+
color: string;
|
|
13
|
+
initials: string;
|
|
14
|
+
profilePicture: string | null;
|
|
15
|
+
}
|
|
16
|
+
export interface ClickUpSpace {
|
|
17
|
+
id: string;
|
|
18
|
+
name: string;
|
|
19
|
+
private: boolean;
|
|
20
|
+
statuses: ClickUpStatus[];
|
|
21
|
+
}
|
|
22
|
+
export interface ClickUpFolder {
|
|
23
|
+
id: string;
|
|
24
|
+
name: string;
|
|
25
|
+
hidden: boolean;
|
|
26
|
+
space: {
|
|
27
|
+
id: string;
|
|
28
|
+
};
|
|
29
|
+
lists: ClickUpList[];
|
|
30
|
+
}
|
|
31
|
+
export interface ClickUpList {
|
|
32
|
+
id: string;
|
|
33
|
+
name: string;
|
|
34
|
+
statuses: ClickUpStatus[];
|
|
35
|
+
folder?: {
|
|
36
|
+
id: string;
|
|
37
|
+
name: string;
|
|
38
|
+
};
|
|
39
|
+
space?: {
|
|
40
|
+
id: string;
|
|
41
|
+
name: string;
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
export interface ClickUpStatus {
|
|
45
|
+
status: string;
|
|
46
|
+
type: 'open' | 'unstarted' | 'custom' | 'closed';
|
|
47
|
+
orderindex: number;
|
|
48
|
+
color: string;
|
|
49
|
+
}
|
|
50
|
+
export interface ClickUpCustomFieldOption {
|
|
51
|
+
id: string;
|
|
52
|
+
name: string;
|
|
53
|
+
color?: string;
|
|
54
|
+
orderindex: number;
|
|
55
|
+
}
|
|
56
|
+
export interface ClickUpCustomField {
|
|
57
|
+
id: string;
|
|
58
|
+
name: string;
|
|
59
|
+
type: string;
|
|
60
|
+
required: boolean;
|
|
61
|
+
type_config?: {
|
|
62
|
+
options?: ClickUpCustomFieldOption[];
|
|
63
|
+
[key: string]: unknown;
|
|
64
|
+
};
|
|
65
|
+
value?: unknown;
|
|
66
|
+
}
|
|
67
|
+
export interface ClickUpTask {
|
|
68
|
+
id: string;
|
|
69
|
+
custom_id: string | null;
|
|
70
|
+
name: string;
|
|
71
|
+
description: string;
|
|
72
|
+
text_content: string;
|
|
73
|
+
status: {
|
|
74
|
+
status: string;
|
|
75
|
+
type: string;
|
|
76
|
+
color: string;
|
|
77
|
+
};
|
|
78
|
+
assignees: ClickUpMember[];
|
|
79
|
+
parent: string | null;
|
|
80
|
+
subtasks?: ClickUpTask[];
|
|
81
|
+
custom_fields: ClickUpCustomField[];
|
|
82
|
+
time_spent: number;
|
|
83
|
+
date_created: string;
|
|
84
|
+
date_updated: string;
|
|
85
|
+
url: string;
|
|
86
|
+
list: {
|
|
87
|
+
id: string;
|
|
88
|
+
name: string;
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
export interface ClickUpTimeEntry {
|
|
92
|
+
id: string;
|
|
93
|
+
task: {
|
|
94
|
+
id: string;
|
|
95
|
+
};
|
|
96
|
+
user: ClickUpMember;
|
|
97
|
+
time: number;
|
|
98
|
+
start: string;
|
|
99
|
+
end: string;
|
|
100
|
+
source: string;
|
|
101
|
+
}
|
|
102
|
+
export interface ParsedSprint {
|
|
103
|
+
number: number;
|
|
104
|
+
name: string;
|
|
105
|
+
subtasks: ParsedSubtask[];
|
|
106
|
+
}
|
|
107
|
+
export interface ParsedSubtask {
|
|
108
|
+
title: string;
|
|
109
|
+
description: string;
|
|
110
|
+
timeEstimated: number;
|
|
111
|
+
timeReal: number;
|
|
112
|
+
tags: string[];
|
|
113
|
+
}
|
|
114
|
+
export interface ParsedTasksMd {
|
|
115
|
+
taskMasters: ParsedTaskMaster[];
|
|
116
|
+
sprints: ParsedSprint[];
|
|
117
|
+
}
|
|
118
|
+
export interface ParsedTaskMaster {
|
|
119
|
+
number: number;
|
|
120
|
+
title: string;
|
|
121
|
+
description: string;
|
|
122
|
+
timeEstimated: string;
|
|
123
|
+
timeReal: string;
|
|
124
|
+
}
|
|
125
|
+
export interface ClickUpMcpConfig {
|
|
126
|
+
apiToken: string;
|
|
127
|
+
defaultListId?: string;
|
|
128
|
+
defaultAssignees?: number[];
|
|
129
|
+
requiredCustomFields?: Record<string, string>;
|
|
130
|
+
}
|
|
131
|
+
export interface EnvironmentInfo {
|
|
132
|
+
list: {
|
|
133
|
+
id: string;
|
|
134
|
+
name: string;
|
|
135
|
+
};
|
|
136
|
+
statuses: Array<{
|
|
137
|
+
name: string;
|
|
138
|
+
type: string;
|
|
139
|
+
encoded_name: string;
|
|
140
|
+
}>;
|
|
141
|
+
custom_fields: Array<{
|
|
142
|
+
id: string;
|
|
143
|
+
name: string;
|
|
144
|
+
type: string;
|
|
145
|
+
required: boolean;
|
|
146
|
+
options?: ClickUpCustomFieldOption[];
|
|
147
|
+
}>;
|
|
148
|
+
members: Array<{
|
|
149
|
+
id: number;
|
|
150
|
+
name: string;
|
|
151
|
+
email: string;
|
|
152
|
+
}>;
|
|
153
|
+
detected_patterns: {
|
|
154
|
+
naming: string;
|
|
155
|
+
hierarchy: string;
|
|
156
|
+
time_tracking: string;
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
export interface ImportOptions {
|
|
160
|
+
listId: string;
|
|
161
|
+
parentTaskId: string;
|
|
162
|
+
assignees?: number[];
|
|
163
|
+
customFields?: Array<{
|
|
164
|
+
id: string;
|
|
165
|
+
value: string;
|
|
166
|
+
}>;
|
|
167
|
+
markAsClosed?: boolean;
|
|
168
|
+
}
|
|
169
|
+
export interface ImportResult {
|
|
170
|
+
sprintsCreated: number;
|
|
171
|
+
subtasksCreated: number;
|
|
172
|
+
timeEntriesAdded: number;
|
|
173
|
+
errors: string[];
|
|
174
|
+
taskIds: string[];
|
|
175
|
+
}
|
|
176
|
+
export interface BulkStatusUpdate {
|
|
177
|
+
taskIds: string[];
|
|
178
|
+
status: string;
|
|
179
|
+
}
|
|
180
|
+
export interface BulkStatusResult {
|
|
181
|
+
updated: number;
|
|
182
|
+
errors: number;
|
|
183
|
+
details: Array<{
|
|
184
|
+
taskId: string;
|
|
185
|
+
success: boolean;
|
|
186
|
+
error?: string;
|
|
187
|
+
}>;
|
|
188
|
+
}
|
|
189
|
+
//# sourceMappingURL=index.d.ts.map
|