@hauptsache.net/clickup-mcp 1.3.0 → 1.3.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 +16 -16
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +41 -0
- package/dist/shared/config.d.ts.map +1 -1
- package/dist/shared/config.js +34 -5
- package/dist/tools/doc-tools.d.ts.map +1 -1
- package/dist/tools/doc-tools.js +6 -0
- package/dist/tools/list-tools.d.ts.map +1 -1
- package/dist/tools/list-tools.js +4 -0
- package/dist/tools/search-tools.d.ts.map +1 -1
- package/dist/tools/search-tools.js +2 -0
- package/dist/tools/space-tools.d.ts.map +1 -1
- package/dist/tools/space-tools.js +2 -0
- package/dist/tools/task-tools.d.ts.map +1 -1
- package/dist/tools/task-tools.js +2 -0
- package/dist/tools/task-write-tools.d.ts.map +1 -1
- package/dist/tools/task-write-tools.js +6 -0
- package/dist/tools/time-tools.d.ts.map +1 -1
- package/dist/tools/time-tools.js +4 -0
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -115,21 +115,21 @@ The ClickUp MCP supports three operational modes to balance functionality, secur
|
|
|
115
115
|
- **📖 `read`**: Full read-only access for project exploration and workflow understanding
|
|
116
116
|
- **✏️ `write`** (Default): Complete functionality for task management and productivity workflows
|
|
117
117
|
|
|
118
|
-
| Tool
|
|
119
|
-
|
|
120
|
-
| `getTaskById`
|
|
121
|
-
| `
|
|
122
|
-
| `
|
|
123
|
-
| `
|
|
124
|
-
| `
|
|
125
|
-
| `
|
|
126
|
-
| `
|
|
127
|
-
| `
|
|
128
|
-
| `
|
|
129
|
-
| `
|
|
130
|
-
| `
|
|
131
|
-
| `
|
|
132
|
-
| `writeDocument`
|
|
118
|
+
| Tool | read-minimal | read | write | Description |
|
|
119
|
+
|-------------------|:------------:|:----:|:-----:|-----------------------------------------------------------------------------------------|
|
|
120
|
+
| `getTaskById` | ✅ | ✅ | ✅ | Get complete task details including comments, images, and metadata |
|
|
121
|
+
| `addComment` | ❌ | ❌ | ✅ | Add comments to tasks for collaboration |
|
|
122
|
+
| `updateTask` | ❌ | ❌ | ✅ | Update tasks (status, priority, assignees, etc.) with **SAFE APPEND-ONLY** descriptions |
|
|
123
|
+
| `createTask` | ❌ | ❌ | ✅ | Create new tasks with full markdown support |
|
|
124
|
+
| `searchTasks` | ✅ | ✅ | ✅ | Find tasks by content, keywords, assignees, or project context |
|
|
125
|
+
| `searchSpaces` | ❌ | ✅ | ✅ | Browse workspace structure, project organization, and documents |
|
|
126
|
+
| `getListInfo` | ❌ | ✅ | ✅ | Get list details and available statuses for task creation |
|
|
127
|
+
| `updateListInfo` | ❌ | ❌ | ✅ | **SAFE APPEND-ONLY** updates to list descriptions (preserves existing content) |
|
|
128
|
+
| `getTimeEntries` | ❌ | ✅ | ✅ | View time entries and analyze time spent across projects |
|
|
129
|
+
| `createTimeEntry` | ❌ | ❌ | ✅ | Log time entries for task tracking |
|
|
130
|
+
| `readDocument` | ❌ | ✅ | ✅ | Get document details, page structure, and content with navigation |
|
|
131
|
+
| `searchDocuments` | ❌ | ✅ | ✅ | Search documents by name and space with fuzzy matching and space filtering |
|
|
132
|
+
| `writeDocument` | ❌ | ❌ | ✅ | Universal document and page operations with smart document creation |
|
|
133
133
|
|
|
134
134
|
### Setting the Mode
|
|
135
135
|
|
|
@@ -140,7 +140,7 @@ Add the mode to your MCP configuration:
|
|
|
140
140
|
"mcpServers": {
|
|
141
141
|
"clickup": {
|
|
142
142
|
"command": "npx",
|
|
143
|
-
"args": ["-y", "@hauptsache.net/clickup-mcp@
|
|
143
|
+
"args": ["-y", "@hauptsache.net/clickup-mcp@latest"],
|
|
144
144
|
"env": {
|
|
145
145
|
"CLICKUP_API_KEY": "your_api_key",
|
|
146
146
|
"CLICKUP_TEAM_ID": "your_team_id",
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAiIpE,QAAA,MAAM,aAAa,oBAAqB,CAAC;AAIzC,OAAO,EAAE,aAAa,EAAE,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -45,6 +45,47 @@ async function initializeServer() {
|
|
|
45
45
|
}, {
|
|
46
46
|
instructions
|
|
47
47
|
});
|
|
48
|
+
// Register prompts
|
|
49
|
+
const lang = config_1.CONFIG.primaryLanguageHint === 'de' ? 'de' : 'en';
|
|
50
|
+
// Register "my-todos" prompt
|
|
51
|
+
server.registerPrompt("my-todos", {
|
|
52
|
+
title: lang === 'de' ? "Meine TODOs" : "My TODOs",
|
|
53
|
+
description: lang === 'de'
|
|
54
|
+
? "Meine aktuellen TODO-Aufgaben aus ClickUp abrufen und nach Priorität kategorisiert analysieren"
|
|
55
|
+
: "Get and analyze my current TODO tasks from ClickUp, categorized by priority",
|
|
56
|
+
argsSchema: {}
|
|
57
|
+
}, () => {
|
|
58
|
+
const messages = [{
|
|
59
|
+
role: "user",
|
|
60
|
+
content: {
|
|
61
|
+
type: "text",
|
|
62
|
+
text: lang === 'de'
|
|
63
|
+
? `Kannst du in ClickUp nachsehen, was meine aktuellen TODOs sind? Bitte suche nach allen offenen Aufgaben, die mir zugewiesen sind, analysiere deren Inhalt und kategorisiere sie nach erkennbarer Priorität (dringend, hoch, normal, niedrig). Für jede Kategorie gib eine kurze Zusammenfassung dessen, was getan werden muss und hebe Fälligkeitstermine oder wichtige Details aus den Aufgabenbeschreibungen hervor.
|
|
64
|
+
|
|
65
|
+
Bitte strukturiere deine Antwort mit:
|
|
66
|
+
1. **Zusammenfassung**: Gesamtanzahl der Aufgaben und allgemeine Prioritätsverteilung
|
|
67
|
+
2. **Dringende Aufgaben**: Aufgaben, die sofortige Aufmerksamkeit benötigen (heute fällig, überfällig oder als dringend markiert)
|
|
68
|
+
3. **Hohe Priorität**: Wichtige Aufgaben, die bald erledigt werden sollten
|
|
69
|
+
4. **Normale Priorität**: Regelmäßige Aufgaben, die später geplant werden können
|
|
70
|
+
5. **Niedrige Priorität**: Aufgaben, die erledigt werden können, wenn Zeit vorhanden ist
|
|
71
|
+
6. **Empfehlungen**: Vorgeschlagene Maßnahmen oder Prioritäten für den kommenden Zeitraum
|
|
72
|
+
|
|
73
|
+
Verwende die ClickUp-Suchtools, um mir zugewiesene Aufgaben zu finden, und hole detaillierte Informationen über die wichtigsten mit getTaskById.`
|
|
74
|
+
: `Can you look into ClickUp and check what my current TODO's are? Please search for all open tasks assigned to me, analyze their content, and categorize them by apparent priority (urgent, high, normal, low). For each category, provide a brief summary of what needs to be done and highlight any due dates or important details from the task descriptions.
|
|
75
|
+
|
|
76
|
+
Please structure your response with:
|
|
77
|
+
1. **Summary**: Total number of tasks and overall priority distribution
|
|
78
|
+
2. **Urgent Tasks**: Tasks that need immediate attention (due today, overdue, or marked as urgent)
|
|
79
|
+
3. **High Priority**: Important tasks that should be addressed soon
|
|
80
|
+
4. **Normal Priority**: Regular tasks that can be scheduled for later
|
|
81
|
+
5. **Low Priority**: Tasks that can be done when time permits
|
|
82
|
+
6. **Recommendations**: Suggested actions or priorities for the upcoming period
|
|
83
|
+
|
|
84
|
+
Use the ClickUp search tools to find tasks assigned to me, and get detailed information about the most important ones using getTaskById.`
|
|
85
|
+
}
|
|
86
|
+
}];
|
|
87
|
+
return { messages };
|
|
88
|
+
});
|
|
48
89
|
if (config_1.CONFIG.mode === 'read-minimal') {
|
|
49
90
|
// Core task context tools for AI coding assistance
|
|
50
91
|
// Only getTaskById and searchTasks
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/shared/config.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,cAAc,oBAA2D,CAAC;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/shared/config.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,cAAc,oBAA2D,CAAC;AAkDvF,MAAM,MAAM,OAAO,GAAG,cAAc,GAAG,MAAM,GAAG,OAAO,CAAC;AAUxD,eAAO,MAAM,MAAM;;;;;;;CAOlB,CAAC"}
|
package/dist/shared/config.js
CHANGED
|
@@ -3,13 +3,42 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.CONFIG = exports.rawPrimaryLang = void 0;
|
|
4
4
|
exports.rawPrimaryLang = process.env.CLICKUP_PRIMARY_LANGUAGE || process.env.LANG;
|
|
5
5
|
let detectedLanguageHint = undefined;
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
6
|
+
/**
|
|
7
|
+
* Enhanced language detection that handles various formats and common language names
|
|
8
|
+
*/
|
|
9
|
+
function detectLanguage(rawLang) {
|
|
10
|
+
if (!rawLang)
|
|
11
|
+
return undefined;
|
|
12
|
+
const normalizedLang = rawLang.toLowerCase().trim();
|
|
13
|
+
// German language detection
|
|
14
|
+
if (normalizedLang === 'de' || normalizedLang === 'german' || normalizedLang === 'deutsch' || normalizedLang.startsWith('de_') || normalizedLang.startsWith('de-')) {
|
|
15
|
+
return 'de';
|
|
16
|
+
}
|
|
17
|
+
// English language detection
|
|
18
|
+
if (normalizedLang === 'en' || normalizedLang === 'english' || normalizedLang.startsWith('en_') || normalizedLang.startsWith('en-')) {
|
|
19
|
+
return 'en';
|
|
20
|
+
}
|
|
21
|
+
// French language detection
|
|
22
|
+
if (normalizedLang === 'fr' || normalizedLang === 'french' || normalizedLang === 'français' || normalizedLang.startsWith('fr_') || normalizedLang.startsWith('fr-')) {
|
|
23
|
+
return 'fr';
|
|
24
|
+
}
|
|
25
|
+
// Spanish language detection
|
|
26
|
+
if (normalizedLang === 'es' || normalizedLang === 'spanish' || normalizedLang === 'español' || normalizedLang.startsWith('es_') || normalizedLang.startsWith('es-')) {
|
|
27
|
+
return 'es';
|
|
28
|
+
}
|
|
29
|
+
// Italian language detection
|
|
30
|
+
if (normalizedLang === 'it' || normalizedLang === 'italian' || normalizedLang === 'italiano' || normalizedLang.startsWith('it_') || normalizedLang.startsWith('it-')) {
|
|
31
|
+
return 'it';
|
|
32
|
+
}
|
|
33
|
+
// Fallback: extract the primary language part (e.g., 'en' from 'en_US.UTF-8' or 'en-GB')
|
|
34
|
+
const langPart = normalizedLang.match(/^[a-zA-Z]{2,3}/);
|
|
10
35
|
if (langPart) {
|
|
11
|
-
|
|
36
|
+
return langPart[0].toLowerCase();
|
|
12
37
|
}
|
|
38
|
+
return undefined;
|
|
39
|
+
}
|
|
40
|
+
if (exports.rawPrimaryLang) {
|
|
41
|
+
detectedLanguageHint = detectLanguage(exports.rawPrimaryLang);
|
|
13
42
|
}
|
|
14
43
|
const rawMode = process.env.CLICKUP_MCP_MODE?.toLowerCase();
|
|
15
44
|
let mcpMode = 'write'; // Default to write (full functionality)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doc-tools.d.ts","sourceRoot":"","sources":["../../src/tools/doc-tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAoDpE,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"doc-tools.d.ts","sourceRoot":"","sources":["../../src/tools/doc-tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAoDpE,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,SAAS,QAuR1D;AAED,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,SAAS,QAiP3D"}
|
package/dist/tools/doc-tools.js
CHANGED
|
@@ -59,6 +59,8 @@ function registerDocumentToolsRead(server) {
|
|
|
59
59
|
.string()
|
|
60
60
|
.optional()
|
|
61
61
|
.describe("Optional specific page ID or name to read (defaults to first page)")
|
|
62
|
+
}, {
|
|
63
|
+
readOnlyHint: true
|
|
62
64
|
}, async ({ doc_id, page }) => {
|
|
63
65
|
try {
|
|
64
66
|
// First get the document details and page structure
|
|
@@ -197,6 +199,8 @@ function registerDocumentToolsRead(server) {
|
|
|
197
199
|
.array(zod_1.z.string())
|
|
198
200
|
.optional()
|
|
199
201
|
.describe("Filter documents to specific space IDs")
|
|
202
|
+
}, {
|
|
203
|
+
readOnlyHint: true
|
|
200
204
|
}, async ({ terms, space_ids }) => {
|
|
201
205
|
try {
|
|
202
206
|
// Get the document search index
|
|
@@ -310,6 +314,8 @@ function registerDocumentToolsWrite(server) {
|
|
|
310
314
|
.boolean()
|
|
311
315
|
.optional()
|
|
312
316
|
.describe("Whether to append content to existing page content (default: false - replaces content)")
|
|
317
|
+
}, {
|
|
318
|
+
readOnlyHint: false
|
|
313
319
|
}, async ({ page_id, parent_type, parent_id, page_name, content, append = false }) => {
|
|
314
320
|
try {
|
|
315
321
|
// Validate input parameters
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list-tools.d.ts","sourceRoot":"","sources":["../../src/tools/list-tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAKpE,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"list-tools.d.ts","sourceRoot":"","sources":["../../src/tools/list-tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAKpE,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,QAkHtD;AAED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,SAAS,QA4EvD"}
|
package/dist/tools/list-tools.js
CHANGED
|
@@ -14,6 +14,8 @@ function registerListToolsRead(server) {
|
|
|
14
14
|
"Share the clickable list URL when suggesting list-related actions."
|
|
15
15
|
].join("\n"), {
|
|
16
16
|
list_id: zod_1.z.string().min(1).describe("The list ID to get information for")
|
|
17
|
+
}, {
|
|
18
|
+
readOnlyHint: true
|
|
17
19
|
}, async ({ list_id }) => {
|
|
18
20
|
try {
|
|
19
21
|
// Get list details including statuses (try to get markdown content)
|
|
@@ -115,6 +117,8 @@ function registerListToolsWrite(server) {
|
|
|
115
117
|
].join("\n"), {
|
|
116
118
|
list_id: zod_1.z.string().min(1).describe("The list ID to update"),
|
|
117
119
|
append_description: zod_1.z.string().min(1).describe("Markdown content to APPEND to existing list description (preserves existing content for safety)")
|
|
120
|
+
}, {
|
|
121
|
+
readOnlyHint: false
|
|
118
122
|
}, async ({ list_id, append_description }) => {
|
|
119
123
|
try {
|
|
120
124
|
// Get current list info including description (try to get markdown content)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search-tools.d.ts","sourceRoot":"","sources":["../../src/tools/search-tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,yCAAyC,CAAC;AASlE,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,
|
|
1
|
+
{"version":3,"file":"search-tools.d.ts","sourceRoot":"","sources":["../../src/tools/search-tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,yCAAyC,CAAC;AASlE,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,QA2LnE"}
|
|
@@ -44,6 +44,8 @@ function registerSearchTools(server, userData) {
|
|
|
44
44
|
.boolean()
|
|
45
45
|
.optional()
|
|
46
46
|
.describe(`Filter for tasks assigned to the current user (${userData.user.username} (${userData.user.id}))`),
|
|
47
|
+
}, {
|
|
48
|
+
readOnlyHint: true
|
|
47
49
|
}, async ({ terms, list_ids, space_ids, only_todo, status, assigned_to_me }) => {
|
|
48
50
|
// Get current user ID if filtering by assigned_to_me
|
|
49
51
|
const assignees = assigned_to_me ? [userData.user.id] : [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"space-tools.d.ts","sourceRoot":"","sources":["../../src/tools/space-tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAKpE,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"space-tools.d.ts","sourceRoot":"","sources":["../../src/tools/space-tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAKpE,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,QAoNnD"}
|
|
@@ -16,6 +16,8 @@ function registerSpaceTools(server) {
|
|
|
16
16
|
.optional()
|
|
17
17
|
.describe("Array of search terms to match against space names or IDs. If not provided, returns all spaces."),
|
|
18
18
|
archived: zod_1.z.boolean().optional().describe("Include archived spaces (default: false)")
|
|
19
|
+
}, {
|
|
20
|
+
readOnlyHint: true
|
|
19
21
|
}, async ({ terms, archived = false }) => {
|
|
20
22
|
try {
|
|
21
23
|
const searchIndex = await (0, utils_1.getSpaceSearchIndex)();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"task-tools.d.ts","sourceRoot":"","sources":["../../src/tools/task-tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGpE,OAAO,EAAE,YAAY,EAAyC,MAAM,iBAAiB,CAAC;AAOtF,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,
|
|
1
|
+
{"version":3,"file":"task-tools.d.ts","sourceRoot":"","sources":["../../src/tools/task-tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGpE,OAAO,EAAE,YAAY,EAAyC,MAAM,iBAAiB,CAAC;AAOtF,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,QA2DrE;AA+MD;;GAEG;AACH,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,GAAG,EAAE,WAAW,CAAC,EAAE,GAAG,EAAE,EAAE,YAAY,GAAE,OAAe,GAAG,OAAO,CAAC,YAAY,CAAC,CA+G/H"}
|
package/dist/tools/task-tools.js
CHANGED
|
@@ -22,6 +22,8 @@ function registerTaskToolsRead(server, userData) {
|
|
|
22
22
|
message: "Task ID must be 6-9 alphanumeric characters only"
|
|
23
23
|
})
|
|
24
24
|
.describe(`The 6-9 character ID of the task to get without a prefix like "#", "CU-" or "https://app.clickup.com/t/"`),
|
|
25
|
+
}, {
|
|
26
|
+
readOnlyHint: true
|
|
25
27
|
}, async ({ id }) => {
|
|
26
28
|
// 1. Load base task content, comment events, and status change events in parallel
|
|
27
29
|
const [taskDetailContentBlocks, commentEvents, statusChangeEvents] = await Promise.all([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"task-write-tools.d.ts","sourceRoot":"","sources":["../../src/tools/task-write-tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAapE,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,
|
|
1
|
+
{"version":3,"file":"task-write-tools.d.ts","sourceRoot":"","sources":["../../src/tools/task-write-tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAapE,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,QAqTtE"}
|
|
@@ -30,6 +30,8 @@ function registerTaskToolsWrite(server, userData) {
|
|
|
30
30
|
})(), {
|
|
31
31
|
task_id: zod_1.z.string().min(6).max(9).describe("The 6-9 character task ID to comment on"),
|
|
32
32
|
comment: zod_1.z.string().min(1).describe("The comment text to add to the task"),
|
|
33
|
+
}, {
|
|
34
|
+
readOnlyHint: false
|
|
33
35
|
}, async ({ task_id, comment }) => {
|
|
34
36
|
try {
|
|
35
37
|
const requestBody = {
|
|
@@ -105,6 +107,8 @@ function registerTaskToolsWrite(server, userData) {
|
|
|
105
107
|
tags: taskTagsSchema.describe("Optional array of tag names (will replace existing tags)"),
|
|
106
108
|
parent_task_id: zod_1.z.string().optional().describe("Optional parent task ID to change parent/child relationships"),
|
|
107
109
|
assignees: zod_1.z.array(zod_1.z.string()).optional().describe(createAssigneeDescription(userData))
|
|
110
|
+
}, {
|
|
111
|
+
readOnlyHint: false
|
|
108
112
|
}, async ({ task_id, name, append_description, status, priority, due_date, start_date, time_estimate, tags, parent_task_id, assignees }) => {
|
|
109
113
|
try {
|
|
110
114
|
const userData = await (0, utils_1.getCurrentUser)();
|
|
@@ -213,6 +217,8 @@ function registerTaskToolsWrite(server, userData) {
|
|
|
213
217
|
tags: taskTagsSchema,
|
|
214
218
|
parent_task_id: zod_1.z.string().optional().describe("Optional parent task ID to create this as a subtask"),
|
|
215
219
|
assignees: zod_1.z.array(zod_1.z.string()).optional().describe(createAssigneeDescription(userData))
|
|
220
|
+
}, {
|
|
221
|
+
readOnlyHint: false
|
|
216
222
|
}, async ({ list_id, name, description, status, priority, due_date, start_date, time_estimate, tags, parent_task_id, assignees }) => {
|
|
217
223
|
try {
|
|
218
224
|
const userData = await (0, utils_1.getCurrentUser)();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"time-tools.d.ts","sourceRoot":"","sources":["../../src/tools/time-tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AA0DpE,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"time-tools.d.ts","sourceRoot":"","sources":["../../src/tools/time-tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AA0DpE,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,QAgFtD;AAwLD,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,SAAS,QAsFvD"}
|
package/dist/tools/time-tools.js
CHANGED
|
@@ -58,6 +58,8 @@ function registerTimeToolsRead(server) {
|
|
|
58
58
|
list_id: zod_1.z.string().optional().describe("Optional single list ID to filter time entries by a specific list"),
|
|
59
59
|
space_id: zod_1.z.string().optional().describe("Optional single space ID to filter time entries by a specific space"),
|
|
60
60
|
include_all_users: zod_1.z.boolean().optional().describe("Optional flag to include time entries from all team members (default: false, only current user)")
|
|
61
|
+
}, {
|
|
62
|
+
readOnlyHint: true
|
|
61
63
|
}, async ({ task_id, start_date, end_date, list_id, space_id, include_all_users }) => {
|
|
62
64
|
try {
|
|
63
65
|
// Build query parameters
|
|
@@ -268,6 +270,8 @@ function registerTimeToolsWrite(server) {
|
|
|
268
270
|
hours: zod_1.z.number().min(0.01).max(24).describe("Hours to book (decimal format, e.g., 0.25 = 15min, 1.5 = 1h 30min)"),
|
|
269
271
|
description: zod_1.z.string().optional().describe("Optional description for the time entry"),
|
|
270
272
|
start_time: zod_1.z.string().optional().describe("Optional start time as ISO date string (e.g., '2024-10-06T09:00:00+02:00', defaults to current time)")
|
|
273
|
+
}, {
|
|
274
|
+
readOnlyHint: false
|
|
271
275
|
}, async ({ task_id, hours, description, start_time }) => {
|
|
272
276
|
try {
|
|
273
277
|
// Convert hours to milliseconds (ClickUp API uses milliseconds)
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hauptsache.net/clickup-mcp",
|
|
3
|
-
"version": "1.3.
|
|
3
|
+
"version": "1.3.1",
|
|
4
4
|
"description": "Search, create, and retrieve tasks, add comments, and track time through natural language commands.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
},
|
|
39
39
|
"license": "MIT",
|
|
40
40
|
"dependencies": {
|
|
41
|
-
"@modelcontextprotocol/sdk": "^1.
|
|
41
|
+
"@modelcontextprotocol/sdk": "^1.15.1",
|
|
42
42
|
"fuse.js": "^7.1.0",
|
|
43
43
|
"zod": "^3.24.2"
|
|
44
44
|
},
|