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.
Files changed (39) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +188 -0
  3. package/dist/api/clickup-client.d.ts +66 -0
  4. package/dist/api/clickup-client.d.ts.map +1 -0
  5. package/dist/api/clickup-client.js +154 -0
  6. package/dist/api/clickup-client.js.map +1 -0
  7. package/dist/cli.d.ts +3 -0
  8. package/dist/cli.d.ts.map +1 -0
  9. package/dist/cli.js +250 -0
  10. package/dist/cli.js.map +1 -0
  11. package/dist/config/config.d.ts +3 -0
  12. package/dist/config/config.d.ts.map +1 -0
  13. package/dist/config/config.js +58 -0
  14. package/dist/config/config.js.map +1 -0
  15. package/dist/discovery/environment-scanner.d.ts +10 -0
  16. package/dist/discovery/environment-scanner.d.ts.map +1 -0
  17. package/dist/discovery/environment-scanner.js +185 -0
  18. package/dist/discovery/environment-scanner.js.map +1 -0
  19. package/dist/generators/markdown-generator.d.ts +8 -0
  20. package/dist/generators/markdown-generator.d.ts.map +1 -0
  21. package/dist/generators/markdown-generator.js +88 -0
  22. package/dist/generators/markdown-generator.js.map +1 -0
  23. package/dist/index.d.ts +3 -0
  24. package/dist/index.d.ts.map +1 -0
  25. package/dist/index.js +19 -0
  26. package/dist/index.js.map +1 -0
  27. package/dist/parsers/markdown-parser.d.ts +23 -0
  28. package/dist/parsers/markdown-parser.d.ts.map +1 -0
  29. package/dist/parsers/markdown-parser.js +216 -0
  30. package/dist/parsers/markdown-parser.js.map +1 -0
  31. package/dist/server.d.ts +3 -0
  32. package/dist/server.d.ts.map +1 -0
  33. package/dist/server.js +450 -0
  34. package/dist/server.js.map +1 -0
  35. package/dist/types/index.d.ts +189 -0
  36. package/dist/types/index.d.ts.map +1 -0
  37. package/dist/types/index.js +6 -0
  38. package/dist/types/index.js.map +1 -0
  39. package/package.json +48 -0
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
package/dist/index.js ADDED
@@ -0,0 +1,19 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ // ============================================================
4
+ // ClickUp MCP Server — Entry Point (stdio transport)
5
+ // ============================================================
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ const stdio_js_1 = require("@modelcontextprotocol/sdk/server/stdio.js");
8
+ const server_js_1 = require("./server.js");
9
+ async function main() {
10
+ const server = (0, server_js_1.createServer)();
11
+ const transport = new stdio_js_1.StdioServerTransport();
12
+ await server.connect(transport);
13
+ console.error('[clickup-mcp] Server started on stdio');
14
+ }
15
+ main().catch((error) => {
16
+ console.error('[clickup-mcp] Fatal error:', error);
17
+ process.exit(1);
18
+ });
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;AACA,+DAA+D;AAC/D,qDAAqD;AACrD,+DAA+D;;AAE/D,wEAAiF;AACjF,2CAA2C;AAE3C,KAAK,UAAU,IAAI;IACjB,MAAM,MAAM,GAAG,IAAA,wBAAY,GAAE,CAAC;IAC9B,MAAM,SAAS,GAAG,IAAI,+BAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAChC,OAAO,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAC;AACzD,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAE,KAAK,CAAC,CAAC;IACnD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
@@ -0,0 +1,23 @@
1
+ import type { ParsedTasksMd } from '../types/index.js';
2
+ /**
3
+ * Parse a time string like "5 min", "15 min", "1h", "1h30", "~5h" into milliseconds
4
+ */
5
+ export declare function parseTime(timeStr: string): number;
6
+ /**
7
+ * Parse the full tasks.md content into structured data
8
+ */
9
+ export declare function parseTasksMd(content: string): ParsedTasksMd;
10
+ /**
11
+ * Validate a tasks.md content and return errors/warnings
12
+ */
13
+ export declare function validateTasksMd(content: string): {
14
+ valid: boolean;
15
+ errors: string[];
16
+ warnings: string[];
17
+ summary: {
18
+ sprints: number;
19
+ totalSubtasks: number;
20
+ totalTimeMs: number;
21
+ };
22
+ };
23
+ //# sourceMappingURL=markdown-parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markdown-parser.d.ts","sourceRoot":"","sources":["../../src/parsers/markdown-parser.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAiD,MAAM,mBAAmB,CAAC;AAEtG;;GAEG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAgCjD;AAqCD;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,aAAa,CAoG3D;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG;IAChD,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,EAAE;QACP,OAAO,EAAE,MAAM,CAAC;QAChB,aAAa,EAAE,MAAM,CAAC;QACtB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;CACH,CA4DA"}
@@ -0,0 +1,216 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // ClickUp MCP Server — Markdown Parser
4
+ // Parses tasks.md format into structured Sprint/Subtask data
5
+ // ============================================================
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.parseTime = parseTime;
8
+ exports.parseTasksMd = parseTasksMd;
9
+ exports.validateTasksMd = validateTasksMd;
10
+ /**
11
+ * Parse a time string like "5 min", "15 min", "1h", "1h30", "~5h" into milliseconds
12
+ */
13
+ function parseTime(timeStr) {
14
+ if (!timeStr)
15
+ return 0;
16
+ const cleaned = timeStr.trim().replace(/^~/, '').trim();
17
+ // "1h30" or "1h 30" or "1h30min"
18
+ const hm = cleaned.match(/(\d+)\s*h\s*(\d+)?\s*(min)?/i);
19
+ if (hm) {
20
+ const hours = parseInt(hm[1], 10);
21
+ const mins = hm[2] ? parseInt(hm[2], 10) : 0;
22
+ return (hours * 60 + mins) * 60 * 1000;
23
+ }
24
+ // "45 min" or "45min"
25
+ const minMatch = cleaned.match(/(\d+)\s*min/i);
26
+ if (minMatch) {
27
+ return parseInt(minMatch[1], 10) * 60 * 1000;
28
+ }
29
+ // "2h" standalone
30
+ const hMatch = cleaned.match(/(\d+)\s*h$/i);
31
+ if (hMatch) {
32
+ return parseInt(hMatch[1], 10) * 60 * 60 * 1000;
33
+ }
34
+ // Try just a number (assume minutes)
35
+ const num = parseInt(cleaned, 10);
36
+ if (!isNaN(num)) {
37
+ return num * 60 * 1000;
38
+ }
39
+ return 0;
40
+ }
41
+ /**
42
+ * Extract tags from a subtask title like "`[BACK][AUTH]` Hash de senha"
43
+ * Returns { tags: ["BACK", "AUTH"], cleanTitle: "[BACK][AUTH] Hash de senha" }
44
+ */
45
+ function extractTags(raw) {
46
+ // Remove backticks
47
+ const cleaned = raw.replace(/`/g, '').trim();
48
+ const tags = [];
49
+ const tagRegex = /\[([^\]]+)\]/g;
50
+ let match;
51
+ while ((match = tagRegex.exec(cleaned)) !== null) {
52
+ tags.push(match[1].toUpperCase());
53
+ }
54
+ // Clean title: keep the [TAG] format but uppercase
55
+ let title = cleaned;
56
+ if (tags.length > 0) {
57
+ const tagsPrefix = tags.map((t) => `[${t}]`).join('');
58
+ const afterTags = cleaned.replace(/\[[^\]]+\]\s*/g, '').trim();
59
+ title = `${tagsPrefix} ${afterTags}`;
60
+ }
61
+ return { tags, cleanTitle: title };
62
+ }
63
+ /**
64
+ * Parse a markdown table row into cells
65
+ */
66
+ function parseTableRow(line) {
67
+ return line
68
+ .split('|')
69
+ .map((cell) => cell.trim())
70
+ .filter((cell) => cell.length > 0 && !cell.match(/^-+$/));
71
+ }
72
+ /**
73
+ * Parse the full tasks.md content into structured data
74
+ */
75
+ function parseTasksMd(content) {
76
+ const lines = content.split('\n');
77
+ const sprints = [];
78
+ const taskMasters = [];
79
+ let currentSprint = null;
80
+ let currentTaskMaster = null;
81
+ let inTable = false;
82
+ let tableType = null;
83
+ let headerSkipped = false;
84
+ for (let i = 0; i < lines.length; i++) {
85
+ const line = lines[i].trim();
86
+ // Detect Sprint header: **Sprint N - Name**
87
+ const sprintMatch = line.match(/^\*\*Sprint\s+(\d+)\s*[-–—]\s*(.+?)\*\*$/);
88
+ if (sprintMatch) {
89
+ if (currentSprint && currentSprint.subtasks.length > 0) {
90
+ sprints.push(currentSprint);
91
+ }
92
+ currentSprint = {
93
+ number: parseInt(sprintMatch[1], 10),
94
+ name: sprintMatch[2].trim(),
95
+ subtasks: [],
96
+ };
97
+ inTable = false;
98
+ tableType = 'sprint';
99
+ headerSkipped = false;
100
+ continue;
101
+ }
102
+ // Detect Task Master header: **Task Master** or **Task Master N**
103
+ const tmMatch = line.match(/^\*\*Task\s+Master\s*(\d*)\*\*$/);
104
+ if (tmMatch) {
105
+ currentTaskMaster = null;
106
+ inTable = false;
107
+ tableType = 'taskmaster';
108
+ headerSkipped = false;
109
+ continue;
110
+ }
111
+ // Detect table start
112
+ if (line.startsWith('|') && line.includes('|')) {
113
+ const cells = parseTableRow(line);
114
+ // Skip header row and separator row
115
+ if (cells.some((c) => c.toLowerCase().includes('subtask')) ||
116
+ cells.some((c) => c.toLowerCase().includes('titulo')) ||
117
+ cells.some((c) => c.toLowerCase().includes('descricao'))) {
118
+ inTable = true;
119
+ headerSkipped = false;
120
+ continue;
121
+ }
122
+ // Skip separator row (| --- | --- |)
123
+ if (cells.every((c) => /^-+$/.test(c))) {
124
+ headerSkipped = true;
125
+ continue;
126
+ }
127
+ // Data row
128
+ if (inTable && cells.length >= 4) {
129
+ if (tableType === 'sprint' && currentSprint) {
130
+ const { tags, cleanTitle } = extractTags(cells[0]);
131
+ const subtask = {
132
+ title: cleanTitle,
133
+ description: cells[1],
134
+ timeEstimated: parseTime(cells[2]),
135
+ timeReal: parseTime(cells[3]),
136
+ tags,
137
+ };
138
+ currentSprint.subtasks.push(subtask);
139
+ }
140
+ else if (tableType === 'taskmaster') {
141
+ const tm = {
142
+ number: taskMasters.length + 1,
143
+ title: cells[0],
144
+ description: cells[1],
145
+ timeEstimated: cells[2],
146
+ timeReal: cells[3],
147
+ };
148
+ taskMasters.push(tm);
149
+ }
150
+ }
151
+ continue;
152
+ }
153
+ // Detect non-table content (end of table)
154
+ if (inTable && !line.startsWith('|') && line.length > 0) {
155
+ inTable = false;
156
+ }
157
+ }
158
+ // Push last sprint
159
+ if (currentSprint && currentSprint.subtasks.length > 0) {
160
+ sprints.push(currentSprint);
161
+ }
162
+ return { taskMasters, sprints };
163
+ }
164
+ /**
165
+ * Validate a tasks.md content and return errors/warnings
166
+ */
167
+ function validateTasksMd(content) {
168
+ const errors = [];
169
+ const warnings = [];
170
+ if (!content || content.trim().length === 0) {
171
+ return {
172
+ valid: false,
173
+ errors: ['Content is empty'],
174
+ warnings: [],
175
+ summary: { sprints: 0, totalSubtasks: 0, totalTimeMs: 0 },
176
+ };
177
+ }
178
+ const parsed = parseTasksMd(content);
179
+ if (parsed.sprints.length === 0) {
180
+ errors.push('No sprints found. Ensure format: **Sprint N - Name**');
181
+ }
182
+ let totalSubtasks = 0;
183
+ let totalTimeMs = 0;
184
+ for (const sprint of parsed.sprints) {
185
+ if (sprint.subtasks.length === 0) {
186
+ warnings.push(`Sprint ${sprint.number} "${sprint.name}" has no subtasks`);
187
+ }
188
+ for (const sub of sprint.subtasks) {
189
+ totalSubtasks++;
190
+ if (!sub.title || sub.title.trim().length === 0) {
191
+ errors.push(`Sprint ${sprint.number}: subtask with empty title`);
192
+ }
193
+ if (!sub.description || sub.description.trim().length === 0) {
194
+ warnings.push(`Sprint ${sprint.number}, "${sub.title}": empty description`);
195
+ }
196
+ if (sub.timeReal === 0) {
197
+ warnings.push(`Sprint ${sprint.number}, "${sub.title}": no real time tracked`);
198
+ }
199
+ if (sub.tags.length === 0) {
200
+ warnings.push(`Sprint ${sprint.number}, "${sub.title}": no [TAGS] detected`);
201
+ }
202
+ totalTimeMs += sub.timeReal;
203
+ }
204
+ }
205
+ return {
206
+ valid: errors.length === 0,
207
+ errors,
208
+ warnings,
209
+ summary: {
210
+ sprints: parsed.sprints.length,
211
+ totalSubtasks,
212
+ totalTimeMs,
213
+ },
214
+ };
215
+ }
216
+ //# sourceMappingURL=markdown-parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markdown-parser.js","sourceRoot":"","sources":["../../src/parsers/markdown-parser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ export declare function createServer(): McpServer;
3
+ //# sourceMappingURL=server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAQpE,wBAAgB,YAAY,IAAI,SAAS,CAijBxC"}