@chykalophia/clickup-mcp-server 3.2.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 +467 -0
- package/bin/clickup-mcp-server-ai.js +9 -0
- package/bin/clickup-mcp-server-basic.js +9 -0
- package/bin/clickup-mcp-server-efficiency.js +9 -0
- package/bin/clickup-mcp-server-enhanced.js +9 -0
- package/build/app.d.ts +1 -0
- package/build/app.js +2 -0
- package/build/app.js.map +1 -0
- package/build/clickup-client/attachments-enhanced.d.ts +128 -0
- package/build/clickup-client/attachments-enhanced.js +212 -0
- package/build/clickup-client/attachments-enhanced.js.map +1 -0
- package/build/clickup-client/auth.d.ts +254 -0
- package/build/clickup-client/auth.js +105 -0
- package/build/clickup-client/auth.js.map +1 -0
- package/build/clickup-client/chat-enhanced.d.ts +141 -0
- package/build/clickup-client/chat-enhanced.js +196 -0
- package/build/clickup-client/chat-enhanced.js.map +1 -0
- package/build/clickup-client/checklists.d.ts +87 -0
- package/build/clickup-client/checklists.js +63 -0
- package/build/clickup-client/checklists.js.map +1 -0
- package/build/clickup-client/comments-enhanced.d.ts +176 -0
- package/build/clickup-client/comments-enhanced.js +230 -0
- package/build/clickup-client/comments-enhanced.js.map +1 -0
- package/build/clickup-client/comments.d.ts +173 -0
- package/build/clickup-client/comments.js +312 -0
- package/build/clickup-client/comments.js.map +1 -0
- package/build/clickup-client/custom-fields-enhanced.d.ts +286 -0
- package/build/clickup-client/custom-fields-enhanced.js +416 -0
- package/build/clickup-client/custom-fields-enhanced.js.map +1 -0
- package/build/clickup-client/dependencies-enhanced.d.ts +144 -0
- package/build/clickup-client/dependencies-enhanced.js +142 -0
- package/build/clickup-client/dependencies-enhanced.js.map +1 -0
- package/build/clickup-client/docs-enhanced.d.ts +176 -0
- package/build/clickup-client/docs-enhanced.js +374 -0
- package/build/clickup-client/docs-enhanced.js.map +1 -0
- package/build/clickup-client/docs.d.ts +84 -0
- package/build/clickup-client/docs.js +156 -0
- package/build/clickup-client/docs.js.map +1 -0
- package/build/clickup-client/folders.d.ts +62 -0
- package/build/clickup-client/folders.js +53 -0
- package/build/clickup-client/folders.js.map +1 -0
- package/build/clickup-client/goals-enhanced.d.ts +163 -0
- package/build/clickup-client/goals-enhanced.js +309 -0
- package/build/clickup-client/goals-enhanced.js.map +1 -0
- package/build/clickup-client/index.d.ts +16 -0
- package/build/clickup-client/index.js +61 -0
- package/build/clickup-client/index.js.map +1 -0
- package/build/clickup-client/lists.d.ts +105 -0
- package/build/clickup-client/lists.js +108 -0
- package/build/clickup-client/lists.js.map +1 -0
- package/build/clickup-client/secure-client.d.ts +88 -0
- package/build/clickup-client/secure-client.js +275 -0
- package/build/clickup-client/secure-client.js.map +1 -0
- package/build/clickup-client/spaces.d.ts +58 -0
- package/build/clickup-client/spaces.js +28 -0
- package/build/clickup-client/spaces.js.map +1 -0
- package/build/clickup-client/tasks.d.ts +161 -0
- package/build/clickup-client/tasks.js +99 -0
- package/build/clickup-client/tasks.js.map +1 -0
- package/build/clickup-client/time-tracking-enhanced.d.ts +153 -0
- package/build/clickup-client/time-tracking-enhanced.js +292 -0
- package/build/clickup-client/time-tracking-enhanced.js.map +1 -0
- package/build/clickup-client/views-enhanced.d.ts +149 -0
- package/build/clickup-client/views-enhanced.js +210 -0
- package/build/clickup-client/views-enhanced.js.map +1 -0
- package/build/clickup-client/webhooks-enhanced.d.ts +119 -0
- package/build/clickup-client/webhooks-enhanced.js +169 -0
- package/build/clickup-client/webhooks-enhanced.js.map +1 -0
- package/build/controllers/lists.controller.d.ts +1 -0
- package/build/controllers/lists.controller.js +2 -0
- package/build/controllers/lists.controller.js.map +1 -0
- package/build/index-efficiency-simple.d.ts +2 -0
- package/build/index-efficiency-simple.js +379 -0
- package/build/index-efficiency-simple.js.map +1 -0
- package/build/index-enhanced-efficiency.d.ts +2 -0
- package/build/index-enhanced-efficiency.js +275 -0
- package/build/index-enhanced-efficiency.js.map +1 -0
- package/build/index-enhanced.d.ts +2 -0
- package/build/index-enhanced.js +74 -0
- package/build/index-enhanced.js.map +1 -0
- package/build/index.d.ts +2 -0
- package/build/index.js +77 -0
- package/build/index.js.map +1 -0
- package/build/resources/checklist-resources.d.ts +2 -0
- package/build/resources/checklist-resources.js +102 -0
- package/build/resources/checklist-resources.js.map +1 -0
- package/build/resources/comment-resources.d.ts +2 -0
- package/build/resources/comment-resources.js +152 -0
- package/build/resources/comment-resources.js.map +1 -0
- package/build/resources/doc-resources.d.ts +2 -0
- package/build/resources/doc-resources.js +77 -0
- package/build/resources/doc-resources.js.map +1 -0
- package/build/resources/folder-resources.d.ts +2 -0
- package/build/resources/folder-resources.js +160 -0
- package/build/resources/folder-resources.js.map +1 -0
- package/build/resources/list-resources.d.ts +2 -0
- package/build/resources/list-resources.js +104 -0
- package/build/resources/list-resources.js.map +1 -0
- package/build/resources/space-resources.d.ts +2 -0
- package/build/resources/space-resources.js +104 -0
- package/build/resources/space-resources.js.map +1 -0
- package/build/resources/task-resources.d.ts +2 -0
- package/build/resources/task-resources.js +57 -0
- package/build/resources/task-resources.js.map +1 -0
- package/build/routes/lists.routes.d.ts +1 -0
- package/build/routes/lists.routes.js +2 -0
- package/build/routes/lists.routes.js.map +1 -0
- package/build/schemas/attachments-schemas.d.ts +201 -0
- package/build/schemas/attachments-schemas.js +250 -0
- package/build/schemas/attachments-schemas.js.map +1 -0
- package/build/schemas/chat-schemas.d.ts +478 -0
- package/build/schemas/chat-schemas.js +173 -0
- package/build/schemas/chat-schemas.js.map +1 -0
- package/build/schemas/custom-field-schemas.d.ts +1617 -0
- package/build/schemas/custom-field-schemas.js +384 -0
- package/build/schemas/custom-field-schemas.js.map +1 -0
- package/build/schemas/dependencies-schemas.d.ts +274 -0
- package/build/schemas/dependencies-schemas.js +176 -0
- package/build/schemas/dependencies-schemas.js.map +1 -0
- package/build/schemas/document-schemas.d.ts +433 -0
- package/build/schemas/document-schemas.js +168 -0
- package/build/schemas/document-schemas.js.map +1 -0
- package/build/schemas/goals-schemas.d.ts +961 -0
- package/build/schemas/goals-schemas.js +293 -0
- package/build/schemas/goals-schemas.js.map +1 -0
- package/build/schemas/time-tracking-schemas.d.ts +741 -0
- package/build/schemas/time-tracking-schemas.js +234 -0
- package/build/schemas/time-tracking-schemas.js.map +1 -0
- package/build/schemas/views-schemas.d.ts +1168 -0
- package/build/schemas/views-schemas.js +221 -0
- package/build/schemas/views-schemas.js.map +1 -0
- package/build/schemas/webhook-schemas.d.ts +1127 -0
- package/build/schemas/webhook-schemas.js +137 -0
- package/build/schemas/webhook-schemas.js.map +1 -0
- package/build/services/lists.service.d.ts +1 -0
- package/build/services/lists.service.js +2 -0
- package/build/services/lists.service.js.map +1 -0
- package/build/tools/attachments-tools-setup.d.ts +2 -0
- package/build/tools/attachments-tools-setup.js +387 -0
- package/build/tools/attachments-tools-setup.js.map +1 -0
- package/build/tools/chat-tools-enhanced.d.ts +5 -0
- package/build/tools/chat-tools-enhanced.js +396 -0
- package/build/tools/chat-tools-enhanced.js.map +1 -0
- package/build/tools/chat-tools.d.ts +2 -0
- package/build/tools/chat-tools.js +614 -0
- package/build/tools/chat-tools.js.map +1 -0
- package/build/tools/checklist-tools.d.ts +2 -0
- package/build/tools/checklist-tools.js +139 -0
- package/build/tools/checklist-tools.js.map +1 -0
- package/build/tools/comment-tools.d.ts +2 -0
- package/build/tools/comment-tools.js +295 -0
- package/build/tools/comment-tools.js.map +1 -0
- package/build/tools/custom-field-tools.d.ts +2 -0
- package/build/tools/custom-field-tools.js +578 -0
- package/build/tools/custom-field-tools.js.map +1 -0
- package/build/tools/dependencies-tools-setup.d.ts +2 -0
- package/build/tools/dependencies-tools-setup.js +319 -0
- package/build/tools/dependencies-tools-setup.js.map +1 -0
- package/build/tools/doc-tools-enhanced.d.ts +2 -0
- package/build/tools/doc-tools-enhanced.js +417 -0
- package/build/tools/doc-tools-enhanced.js.map +1 -0
- package/build/tools/doc-tools.d.ts +2 -0
- package/build/tools/doc-tools.js +109 -0
- package/build/tools/doc-tools.js.map +1 -0
- package/build/tools/goals-tools.d.ts +2 -0
- package/build/tools/goals-tools.js +422 -0
- package/build/tools/goals-tools.js.map +1 -0
- package/build/tools/helper-tools.d.ts +2 -0
- package/build/tools/helper-tools.js +363 -0
- package/build/tools/helper-tools.js.map +1 -0
- package/build/tools/space-tools.d.ts +2 -0
- package/build/tools/space-tools.js +45 -0
- package/build/tools/space-tools.js.map +1 -0
- package/build/tools/task-tools.d.ts +2 -0
- package/build/tools/task-tools.js +415 -0
- package/build/tools/task-tools.js.map +1 -0
- package/build/tools/time-tracking-tools.d.ts +2 -0
- package/build/tools/time-tracking-tools.js +329 -0
- package/build/tools/time-tracking-tools.js.map +1 -0
- package/build/tools/views-tools-setup.d.ts +2 -0
- package/build/tools/views-tools-setup.js +358 -0
- package/build/tools/views-tools-setup.js.map +1 -0
- package/build/tools/webhook-tools-setup.d.ts +2 -0
- package/build/tools/webhook-tools-setup.js +304 -0
- package/build/tools/webhook-tools-setup.js.map +1 -0
- package/build/tools/webhook-tools.d.ts +4 -0
- package/build/tools/webhook-tools.js +345 -0
- package/build/tools/webhook-tools.js.map +1 -0
- package/build/utils/clickup-comment-formatter.d.ts +124 -0
- package/build/utils/clickup-comment-formatter.js +504 -0
- package/build/utils/clickup-comment-formatter.js.map +1 -0
- package/build/utils/context-aware-suggestions.d.ts +45 -0
- package/build/utils/context-aware-suggestions.js +360 -0
- package/build/utils/context-aware-suggestions.js.map +1 -0
- package/build/utils/error-handling.d.ts +140 -0
- package/build/utils/error-handling.js +392 -0
- package/build/utils/error-handling.js.map +1 -0
- package/build/utils/markdown-styling.d.ts +40 -0
- package/build/utils/markdown-styling.js +344 -0
- package/build/utils/markdown-styling.js.map +1 -0
- package/build/utils/markdown.d.ts +54 -0
- package/build/utils/markdown.js +243 -0
- package/build/utils/markdown.js.map +1 -0
- package/build/utils/security.d.ts +79 -0
- package/build/utils/security.js +303 -0
- package/build/utils/security.js.map +1 -0
- package/build/utils/tool-efficiency.d.ts +59 -0
- package/build/utils/tool-efficiency.js +247 -0
- package/build/utils/tool-efficiency.js.map +1 -0
- package/package.json +130 -0
|
@@ -0,0 +1,363 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { createClickUpClient } from '../clickup-client/index.js';
|
|
3
|
+
import { suggestToolsForTask, /* getChatChannelDiscoveryStrategy, */ getEfficiencyRating, TOOL_METADATA } from '../utils/tool-efficiency.js';
|
|
4
|
+
const client = createClickUpClient();
|
|
5
|
+
export function setupHelperTools(server) {
|
|
6
|
+
// ========================================
|
|
7
|
+
// TOOL SUGGESTION AND EFFICIENCY HELPERS
|
|
8
|
+
// ========================================
|
|
9
|
+
server.tool('suggest_tools_for_task', 'Get intelligent tool suggestions for a given task or request. Provides the most efficient tool path and alternatives.', {
|
|
10
|
+
request: z.string().min(1).describe('Description of what you want to accomplish'),
|
|
11
|
+
context: z.object({
|
|
12
|
+
known_ids: z.record(z.string()).optional().describe('Any known IDs (workspace_id, space_id, etc.)'),
|
|
13
|
+
preferred_approach: z.enum(['direct', 'search', 'explore']).optional().describe('Preferred approach style')
|
|
14
|
+
}).optional().describe('Additional context about the request')
|
|
15
|
+
}, async (args) => {
|
|
16
|
+
try {
|
|
17
|
+
const suggestion = suggestToolsForTask(args.request);
|
|
18
|
+
const efficiency = getEfficiencyRating(suggestion.primary_tools);
|
|
19
|
+
return {
|
|
20
|
+
content: [{
|
|
21
|
+
type: 'text',
|
|
22
|
+
text: `## Tool Suggestions for: "${args.request}"
|
|
23
|
+
|
|
24
|
+
### 🎯 Primary Tools (Recommended)
|
|
25
|
+
${suggestion.primary_tools.map(tool => `- **${tool}**: ${TOOL_METADATA[tool]?.efficiency_hint || 'Efficient choice'}`).join('\n')}
|
|
26
|
+
|
|
27
|
+
### 🔄 Alternative Tools
|
|
28
|
+
${suggestion.alternative_tools.map(tool => `- ${tool}`).join('\n')}
|
|
29
|
+
|
|
30
|
+
### ⚡ Efficiency Notes
|
|
31
|
+
${suggestion.efficiency_notes.map(note => `- ${note}`).join('\n')}
|
|
32
|
+
|
|
33
|
+
### 🛠️ Workflow Hint
|
|
34
|
+
${suggestion.workflow_hint}
|
|
35
|
+
|
|
36
|
+
### 📊 Efficiency Rating: ${efficiency.rating.toUpperCase()}
|
|
37
|
+
${efficiency.suggestions.map(s => `- ${s}`).join('\n')}
|
|
38
|
+
|
|
39
|
+
${args.context?.known_ids ? `\n### 🔑 Available IDs\n${Object.entries(args.context.known_ids).map(([key, value]) => `- ${key}: ${value}`).join('\n')}` : ''}`
|
|
40
|
+
}]
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
catch (error) {
|
|
44
|
+
return {
|
|
45
|
+
content: [{
|
|
46
|
+
type: 'text',
|
|
47
|
+
text: `Error getting tool suggestions: ${error instanceof Error ? error.message : 'Unknown error'}`
|
|
48
|
+
}]
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
// ========================================
|
|
53
|
+
// CHAT CHANNEL DISCOVERY
|
|
54
|
+
// ========================================
|
|
55
|
+
server.tool('find_chat_channels', 'Efficiently find chat channels across workspaces. More efficient than hierarchical navigation.', {
|
|
56
|
+
workspace_id: z.string().optional().describe('Specific workspace ID to search in'),
|
|
57
|
+
channel_name: z.string().optional().describe('Partial or full channel name to search for'),
|
|
58
|
+
include_private: z.boolean().default(true).describe('Whether to include private channels')
|
|
59
|
+
}, async (args) => {
|
|
60
|
+
try {
|
|
61
|
+
const workspaces = args.workspace_id ?
|
|
62
|
+
[{ id: args.workspace_id }] :
|
|
63
|
+
await client.get('/team');
|
|
64
|
+
const allChatChannels = [];
|
|
65
|
+
for (const workspace of workspaces.teams || workspaces) {
|
|
66
|
+
try {
|
|
67
|
+
const spaces = await client.get(`/space?team_id=${workspace.id}`);
|
|
68
|
+
for (const space of spaces.spaces || []) {
|
|
69
|
+
try {
|
|
70
|
+
const views = await client.get(`/space/${space.id}/view`);
|
|
71
|
+
const chatViews = (views.views || []).filter((view) => view.type === 'conversation' || view.type === 'chat');
|
|
72
|
+
for (const chatView of chatViews) {
|
|
73
|
+
if (!args.channel_name ||
|
|
74
|
+
chatView.name.toLowerCase().includes(args.channel_name.toLowerCase())) {
|
|
75
|
+
allChatChannels.push({
|
|
76
|
+
id: chatView.id,
|
|
77
|
+
name: chatView.name,
|
|
78
|
+
type: chatView.type,
|
|
79
|
+
workspace_id: workspace.id,
|
|
80
|
+
workspace_name: workspace.name,
|
|
81
|
+
space_id: space.id,
|
|
82
|
+
space_name: space.name,
|
|
83
|
+
visibility: chatView.visibility || 'unknown'
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
catch (spaceError) {
|
|
89
|
+
// Continue with other spaces if one fails
|
|
90
|
+
console.error(`Error processing space ${space.id}:`, spaceError);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
catch (workspaceError) {
|
|
95
|
+
console.error(`Error processing workspace ${workspace.id}:`, workspaceError);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
return {
|
|
99
|
+
content: [{
|
|
100
|
+
type: 'text',
|
|
101
|
+
text: `## 💬 Found ${allChatChannels.length} Chat Channels
|
|
102
|
+
|
|
103
|
+
${allChatChannels.length === 0 ? '❌ No chat channels found matching your criteria.' :
|
|
104
|
+
allChatChannels.map(channel => `### 📢 ${channel.name}
|
|
105
|
+
- **ID**: \`${channel.id}\`
|
|
106
|
+
- **Type**: ${channel.type}
|
|
107
|
+
- **Workspace**: ${channel.workspace_name} (\`${channel.workspace_id}\`)
|
|
108
|
+
- **Space**: ${channel.space_name} (\`${channel.space_id}\`)
|
|
109
|
+
- **Visibility**: ${channel.visibility}
|
|
110
|
+
|
|
111
|
+
*Use this ID with \`create_chat_view_comment\` to post messages.*`).join('\n\n')}
|
|
112
|
+
|
|
113
|
+
### 🚀 Next Steps
|
|
114
|
+
To post a message to any of these channels, use:
|
|
115
|
+
\`\`\`
|
|
116
|
+
create_chat_view_comment(view_id="CHANNEL_ID", comment_text="Your message")
|
|
117
|
+
\`\`\``
|
|
118
|
+
}]
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
catch (error) {
|
|
122
|
+
return {
|
|
123
|
+
content: [{
|
|
124
|
+
type: 'text',
|
|
125
|
+
text: `❌ Error finding chat channels: ${error instanceof Error ? error.message : 'Unknown error'}`
|
|
126
|
+
}]
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
});
|
|
130
|
+
// ========================================
|
|
131
|
+
// VIEW SEARCH BY NAME
|
|
132
|
+
// ========================================
|
|
133
|
+
server.tool('search_views_by_name', 'Search for views by name across spaces. More efficient than browsing all views.', {
|
|
134
|
+
workspace_id: z.string().optional().describe('Workspace to search in'),
|
|
135
|
+
view_name: z.string().min(1).describe('View name to search for (partial matches supported)'),
|
|
136
|
+
view_type: z.enum(['list', 'board', 'calendar', 'gantt', 'timeline', 'table', 'form', 'chat', 'workload', 'activity', 'map', 'embed']).optional().describe('Filter by view type')
|
|
137
|
+
}, async (args) => {
|
|
138
|
+
try {
|
|
139
|
+
const workspaces = args.workspace_id ?
|
|
140
|
+
[{ id: args.workspace_id }] :
|
|
141
|
+
await client.get('/team');
|
|
142
|
+
const matchingViews = [];
|
|
143
|
+
for (const workspace of workspaces.teams || workspaces) {
|
|
144
|
+
const spaces = await client.get(`/space?team_id=${workspace.id}`);
|
|
145
|
+
for (const space of spaces.spaces || []) {
|
|
146
|
+
try {
|
|
147
|
+
const views = await client.get(`/space/${space.id}/view`);
|
|
148
|
+
for (const view of views.views || []) {
|
|
149
|
+
const nameMatch = view.name.toLowerCase().includes(args.view_name.toLowerCase());
|
|
150
|
+
const typeMatch = !args.view_type || view.type === args.view_type;
|
|
151
|
+
if (nameMatch && typeMatch) {
|
|
152
|
+
matchingViews.push({
|
|
153
|
+
...view,
|
|
154
|
+
workspace_id: workspace.id,
|
|
155
|
+
workspace_name: workspace.name,
|
|
156
|
+
space_id: space.id,
|
|
157
|
+
space_name: space.name
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
catch (error) {
|
|
163
|
+
console.error(`Error searching views in space ${space.id}:`, error);
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
return {
|
|
168
|
+
content: [{
|
|
169
|
+
type: 'text',
|
|
170
|
+
text: `## 🔍 Found ${matchingViews.length} Views matching "${args.view_name}"
|
|
171
|
+
|
|
172
|
+
${matchingViews.map(view => `### 📋 ${view.name}
|
|
173
|
+
- **ID**: \`${view.id}\`
|
|
174
|
+
- **Type**: ${view.type}
|
|
175
|
+
- **Workspace**: ${view.workspace_name}
|
|
176
|
+
- **Space**: ${view.space_name}
|
|
177
|
+
- **Visibility**: ${view.visibility || 'unknown'}`).join('\n\n')}`
|
|
178
|
+
}]
|
|
179
|
+
};
|
|
180
|
+
}
|
|
181
|
+
catch (error) {
|
|
182
|
+
return {
|
|
183
|
+
content: [{
|
|
184
|
+
type: 'text',
|
|
185
|
+
text: `Error searching views: ${error instanceof Error ? error.message : 'Unknown error'}`
|
|
186
|
+
}]
|
|
187
|
+
};
|
|
188
|
+
}
|
|
189
|
+
});
|
|
190
|
+
// ========================================
|
|
191
|
+
// WORKSPACE OVERVIEW (SINGLE CALL)
|
|
192
|
+
// ========================================
|
|
193
|
+
server.tool('get_workspace_overview', 'Get a comprehensive overview of a workspace structure in a single efficient call. Better than multiple navigation calls.', {
|
|
194
|
+
workspace_id: z.string().min(1).describe('The workspace ID to get overview for'),
|
|
195
|
+
include_views: z.boolean().default(false).describe('Whether to include view details (slower but more complete)'),
|
|
196
|
+
include_chat_channels: z.boolean().default(true).describe('Whether to include chat channel discovery')
|
|
197
|
+
}, async (args) => {
|
|
198
|
+
try {
|
|
199
|
+
const [workspace, spaces] = await Promise.all([
|
|
200
|
+
client.get('/team').then((teams) => teams.teams?.find((w) => w.id === args.workspace_id)),
|
|
201
|
+
client.get(`/space?team_id=${args.workspace_id}`)
|
|
202
|
+
]);
|
|
203
|
+
if (!workspace) {
|
|
204
|
+
throw new Error(`Workspace ${args.workspace_id} not found`);
|
|
205
|
+
}
|
|
206
|
+
const overview = {
|
|
207
|
+
workspace: {
|
|
208
|
+
id: workspace.id,
|
|
209
|
+
name: workspace.name,
|
|
210
|
+
members: workspace.members?.length || 0
|
|
211
|
+
},
|
|
212
|
+
spaces: [],
|
|
213
|
+
chat_channels: [],
|
|
214
|
+
summary: {
|
|
215
|
+
total_spaces: spaces.spaces?.length || 0,
|
|
216
|
+
total_chat_channels: 0,
|
|
217
|
+
total_views: 0
|
|
218
|
+
}
|
|
219
|
+
};
|
|
220
|
+
// Process each space
|
|
221
|
+
for (const space of spaces.spaces || []) {
|
|
222
|
+
const spaceData = {
|
|
223
|
+
id: space.id,
|
|
224
|
+
name: space.name,
|
|
225
|
+
color: space.color,
|
|
226
|
+
private: space.private,
|
|
227
|
+
folders: [],
|
|
228
|
+
lists: [],
|
|
229
|
+
views: []
|
|
230
|
+
};
|
|
231
|
+
try {
|
|
232
|
+
// Get folders and lists
|
|
233
|
+
const [folders, folderlessLists] = await Promise.all([
|
|
234
|
+
client.get(`/space/${space.id}/folder`).then((r) => r.folders || []).catch(() => []),
|
|
235
|
+
client.get(`/space/${space.id}/list`).then((r) => r.lists || []).catch(() => [])
|
|
236
|
+
]);
|
|
237
|
+
spaceData.folders = folders;
|
|
238
|
+
spaceData.lists = folderlessLists;
|
|
239
|
+
// Get views if requested
|
|
240
|
+
if (args.include_views || args.include_chat_channels) {
|
|
241
|
+
const viewsResponse = await client.get(`/space/${space.id}/view`).catch(() => ({ views: [] }));
|
|
242
|
+
const views = viewsResponse.views || [];
|
|
243
|
+
if (args.include_views) {
|
|
244
|
+
spaceData.views = views;
|
|
245
|
+
}
|
|
246
|
+
// Extract chat channels
|
|
247
|
+
if (args.include_chat_channels) {
|
|
248
|
+
const chatViews = views.filter((view) => view.type === 'conversation' || view.type === 'chat');
|
|
249
|
+
for (const chatView of chatViews) {
|
|
250
|
+
overview.chat_channels.push({
|
|
251
|
+
id: chatView.id,
|
|
252
|
+
name: chatView.name,
|
|
253
|
+
space_name: space.name,
|
|
254
|
+
space_id: space.id
|
|
255
|
+
});
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
overview.summary.total_views += views.length;
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
catch (error) {
|
|
262
|
+
console.error(`Error processing space ${space.id}:`, error);
|
|
263
|
+
}
|
|
264
|
+
overview.spaces.push(spaceData);
|
|
265
|
+
}
|
|
266
|
+
overview.summary.total_chat_channels = overview.chat_channels.length;
|
|
267
|
+
return {
|
|
268
|
+
content: [{
|
|
269
|
+
type: 'text',
|
|
270
|
+
text: `## 🏢 Workspace Overview: ${overview.workspace.name}
|
|
271
|
+
|
|
272
|
+
### 📊 Summary
|
|
273
|
+
- **Spaces**: ${overview.summary.total_spaces}
|
|
274
|
+
- **Chat Channels**: ${overview.summary.total_chat_channels}
|
|
275
|
+
- **Total Views**: ${overview.summary.total_views}
|
|
276
|
+
- **Members**: ${overview.workspace.members}
|
|
277
|
+
|
|
278
|
+
### 💬 Chat Channels
|
|
279
|
+
${overview.chat_channels.length === 0 ? '❌ No chat channels found' :
|
|
280
|
+
overview.chat_channels.map((chat) => `- **${chat.name}** (\`${chat.id}\`) in ${chat.space_name}`).join('\n')}
|
|
281
|
+
|
|
282
|
+
### 🏗️ Spaces Structure
|
|
283
|
+
${overview.spaces.map((space) => `#### 📁 ${space.name} ${space.private ? '🔒' : '🌐'}
|
|
284
|
+
- **ID**: \`${space.id}\`
|
|
285
|
+
- **Folders**: ${space.folders.length}
|
|
286
|
+
- **Lists**: ${space.lists.length}
|
|
287
|
+
${args.include_views ? `- **Views**: ${space.views.length}` : ''}`).join('\n\n')}
|
|
288
|
+
|
|
289
|
+
### 🚀 Quick Actions
|
|
290
|
+
${overview.chat_channels.length > 0 ?
|
|
291
|
+
'**Post to chat**: Use `create_chat_view_comment` with any of the chat channel IDs above.' :
|
|
292
|
+
'**No chat channels available for posting.**'}`
|
|
293
|
+
}]
|
|
294
|
+
};
|
|
295
|
+
}
|
|
296
|
+
catch (error) {
|
|
297
|
+
return {
|
|
298
|
+
content: [{
|
|
299
|
+
type: 'text',
|
|
300
|
+
text: `Error getting workspace overview: ${error instanceof Error ? error.message : 'Unknown error'}`
|
|
301
|
+
}]
|
|
302
|
+
};
|
|
303
|
+
}
|
|
304
|
+
});
|
|
305
|
+
// ========================================
|
|
306
|
+
// EFFICIENCY ANALYZER
|
|
307
|
+
// ========================================
|
|
308
|
+
server.tool('analyze_tool_efficiency', 'Analyze the efficiency of a planned tool sequence and get optimization suggestions.', {
|
|
309
|
+
planned_tools: z.array(z.string()).min(1).describe('Array of tool names you plan to use'),
|
|
310
|
+
goal: z.string().describe('What you are trying to accomplish')
|
|
311
|
+
}, async (args) => {
|
|
312
|
+
try {
|
|
313
|
+
const efficiency = getEfficiencyRating(args.planned_tools);
|
|
314
|
+
const suggestion = suggestToolsForTask(args.goal);
|
|
315
|
+
const toolAnalysis = args.planned_tools.map(tool => {
|
|
316
|
+
const metadata = TOOL_METADATA[tool];
|
|
317
|
+
return {
|
|
318
|
+
tool,
|
|
319
|
+
efficiency: metadata?.efficiency || 'unknown',
|
|
320
|
+
category: metadata?.category || 'unknown',
|
|
321
|
+
performance_impact: metadata?.performance_impact || 'unknown',
|
|
322
|
+
hint: metadata?.efficiency_hint || 'No specific guidance available'
|
|
323
|
+
};
|
|
324
|
+
});
|
|
325
|
+
return {
|
|
326
|
+
content: [{
|
|
327
|
+
type: 'text',
|
|
328
|
+
text: `## 🔍 Tool Efficiency Analysis
|
|
329
|
+
|
|
330
|
+
### 🎯 Goal: ${args.goal}
|
|
331
|
+
|
|
332
|
+
### 📋 Planned Tools Analysis
|
|
333
|
+
${toolAnalysis.map(analysis => `#### ${analysis.tool}
|
|
334
|
+
- **Efficiency**: ${analysis.efficiency}
|
|
335
|
+
- **Category**: ${analysis.category}
|
|
336
|
+
- **Performance Impact**: ${analysis.performance_impact}
|
|
337
|
+
- **Hint**: ${analysis.hint}`).join('\n\n')}
|
|
338
|
+
|
|
339
|
+
### 📊 Overall Efficiency Rating: ${efficiency.rating.toUpperCase()}
|
|
340
|
+
|
|
341
|
+
### 💡 Optimization Suggestions
|
|
342
|
+
${efficiency.suggestions.map(s => `- ${s}`).join('\n')}
|
|
343
|
+
|
|
344
|
+
### 🎯 Recommended Alternative Approach
|
|
345
|
+
**Primary Tools**: ${suggestion.primary_tools.join(', ')}
|
|
346
|
+
**Workflow**: ${suggestion.workflow_hint}
|
|
347
|
+
|
|
348
|
+
### ⚡ Efficiency Notes
|
|
349
|
+
${suggestion.efficiency_notes.map(note => `- ${note}`).join('\n')}`
|
|
350
|
+
}]
|
|
351
|
+
};
|
|
352
|
+
}
|
|
353
|
+
catch (error) {
|
|
354
|
+
return {
|
|
355
|
+
content: [{
|
|
356
|
+
type: 'text',
|
|
357
|
+
text: `Error analyzing tool efficiency: ${error instanceof Error ? error.message : 'Unknown error'}`
|
|
358
|
+
}]
|
|
359
|
+
};
|
|
360
|
+
}
|
|
361
|
+
});
|
|
362
|
+
}
|
|
363
|
+
//# sourceMappingURL=helper-tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helper-tools.js","sourceRoot":"","sources":["../../src/tools/helper-tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { createClickUpClient } from '../clickup-client/index.js';
|
|
3
|
+
import { createSpacesClient } from '../clickup-client/spaces.js';
|
|
4
|
+
// Create clients
|
|
5
|
+
const clickUpClient = createClickUpClient();
|
|
6
|
+
const spacesClient = createSpacesClient(clickUpClient);
|
|
7
|
+
export function setupSpaceTools(server) {
|
|
8
|
+
// Register get_spaces tool
|
|
9
|
+
server.tool('get_spaces', 'Get spaces from a ClickUp workspace. Returns space details including name, settings, and features.', { workspace_id: z.string().describe('The ID of the workspace to get spaces from') }, async ({ workspace_id }) => {
|
|
10
|
+
try {
|
|
11
|
+
console.error(`[SpaceTools] Getting spaces for workspace ${workspace_id}...`);
|
|
12
|
+
const spaces = await spacesClient.getSpacesFromWorkspace(workspace_id);
|
|
13
|
+
console.error(`[SpaceTools] Got ${spaces.length} spaces`);
|
|
14
|
+
return {
|
|
15
|
+
content: [{ type: 'text', text: JSON.stringify(spaces, null, 2) }]
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
catch (error) {
|
|
19
|
+
console.error('Error getting spaces:', error);
|
|
20
|
+
return {
|
|
21
|
+
content: [{ type: 'text', text: `Error getting spaces: ${error.message}` }],
|
|
22
|
+
isError: true
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
});
|
|
26
|
+
// Register get_space tool
|
|
27
|
+
server.tool('get_space', 'Get details about a specific ClickUp space. Returns space name, settings, features, and metadata.', { space_id: z.string().describe('The ID of the space to get') }, async ({ space_id }) => {
|
|
28
|
+
try {
|
|
29
|
+
console.error(`[SpaceTools] Getting space ${space_id}...`);
|
|
30
|
+
const space = await spacesClient.getSpace(space_id);
|
|
31
|
+
console.error(`[SpaceTools] Got space: ${space.name}`);
|
|
32
|
+
return {
|
|
33
|
+
content: [{ type: 'text', text: JSON.stringify(space, null, 2) }]
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
catch (error) {
|
|
37
|
+
console.error('Error getting space:', error);
|
|
38
|
+
return {
|
|
39
|
+
content: [{ type: 'text', text: `Error getting space: ${error.message}` }],
|
|
40
|
+
isError: true
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=space-tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"space-tools.js","sourceRoot":"","sources":["../../src/tools/space-tools.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAEjE,iBAAiB;AACjB,MAAM,aAAa,GAAG,mBAAmB,EAAE,CAAC;AAC5C,MAAM,YAAY,GAAG,kBAAkB,CAAC,aAAa,CAAC,CAAC;AAEvD,MAAM,UAAU,eAAe,CAAC,MAAiB;IAC/C,2BAA2B;IAC3B,MAAM,CAAC,IAAI,CACT,YAAY,EACZ,oGAAoG,EACpG,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,4CAA4C,CAAC,EAAE,EACnF,KAAK,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE;QACzB,IAAI,CAAC;YACH,OAAO,CAAC,KAAK,CAAC,6CAA6C,YAAY,KAAK,CAAC,CAAC;YAC9E,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,sBAAsB,CAAC,YAAY,CAAC,CAAC;YACvE,OAAO,CAAC,KAAK,CAAC,oBAAoB,MAAM,CAAC,MAAM,SAAS,CAAC,CAAC;YAE1D,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;aACnE,CAAC;QACJ,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,KAAK,CAAC,CAAC;YAC9C,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,yBAAyB,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;gBAC3E,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;IAEF,0BAA0B;IAC1B,MAAM,CAAC,IAAI,CACT,WAAW,EACX,mGAAmG,EACnG,EAAE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC,EAAE,EAC/D,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE;QACrB,IAAI,CAAC;YACH,OAAO,CAAC,KAAK,CAAC,8BAA8B,QAAQ,KAAK,CAAC,CAAC;YAC3D,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YACpD,OAAO,CAAC,KAAK,CAAC,2BAA2B,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;YAEvD,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;aAClE,CAAC;QACJ,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO,CAAC,KAAK,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAC;YAC7C,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,wBAAwB,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;gBAC1E,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
|