wolfpack-mcp 1.0.8 → 1.0.9
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/dist/client.js +16 -0
- package/dist/index.js +88 -12
- package/package.json +1 -1
package/dist/client.js
CHANGED
|
@@ -90,6 +90,22 @@ export class WolfpackClient {
|
|
|
90
90
|
params.append('status', options.status);
|
|
91
91
|
if (options?.assignedToId)
|
|
92
92
|
params.append('assignedToId', options.assignedToId);
|
|
93
|
+
if (options?.search)
|
|
94
|
+
params.append('search', options.search);
|
|
95
|
+
if (options?.categoryId)
|
|
96
|
+
params.append('categoryId', options.categoryId);
|
|
97
|
+
if (options?.priority)
|
|
98
|
+
params.append('priority', options.priority);
|
|
99
|
+
if (options?.radarItemId)
|
|
100
|
+
params.append('radarItemId', options.radarItemId);
|
|
101
|
+
if (options?.createdById)
|
|
102
|
+
params.append('createdById', options.createdById);
|
|
103
|
+
if (options?.updatedById)
|
|
104
|
+
params.append('updatedById', options.updatedById);
|
|
105
|
+
if (options?.sortBy)
|
|
106
|
+
params.append('sortBy', options.sortBy);
|
|
107
|
+
if (options?.sortOrder)
|
|
108
|
+
params.append('sortOrder', options.sortOrder);
|
|
93
109
|
// If explicit limit/offset provided, use single request (for manual pagination)
|
|
94
110
|
if (options?.limit !== undefined || options?.offset !== undefined) {
|
|
95
111
|
if (options?.limit)
|
package/dist/index.js
CHANGED
|
@@ -51,11 +51,31 @@ async function checkForUpdates() {
|
|
|
51
51
|
// Work Item schemas
|
|
52
52
|
const ListWorkItemsSchema = z.object({
|
|
53
53
|
team_id: z.number().optional().describe('Team ID to filter work items'),
|
|
54
|
-
status: z
|
|
54
|
+
status: z
|
|
55
|
+
.string()
|
|
56
|
+
.optional()
|
|
57
|
+
.describe('Filter by status. Board columns: "new", "doing", "review", "blocked", "completed". Use "pending" or "backlog" for backlog items. Use "all" to include completed/closed. Default excludes completed/closed.'),
|
|
55
58
|
assigned_to_id: z
|
|
56
59
|
.string()
|
|
57
60
|
.optional()
|
|
58
|
-
.describe('Filter by assignee
|
|
61
|
+
.describe('Filter by assignee: "me" (default), "unassigned", "all", or a specific user ID'),
|
|
62
|
+
search: z.string().optional().describe('Text search in title and description'),
|
|
63
|
+
category_id: z
|
|
64
|
+
.string()
|
|
65
|
+
.optional()
|
|
66
|
+
.describe('Filter by category ID, or "none" for uncategorized items'),
|
|
67
|
+
priority: z
|
|
68
|
+
.string()
|
|
69
|
+
.optional()
|
|
70
|
+
.describe('Filter by priority level (0-4, higher is more important)'),
|
|
71
|
+
radar_item_id: z.string().optional().describe('Filter by linked radar/initiative item'),
|
|
72
|
+
created_by_id: z.string().optional().describe('Filter by creator user ID'),
|
|
73
|
+
updated_by_id: z.string().optional().describe('Filter by last updater user ID'),
|
|
74
|
+
sort_by: z
|
|
75
|
+
.string()
|
|
76
|
+
.optional()
|
|
77
|
+
.describe('Sort field: "dateUpdated" (default, newest first), "dateCreated", "priority", "title"'),
|
|
78
|
+
sort_order: z.string().optional().describe('Sort direction: "desc" (default), "asc"'),
|
|
59
79
|
limit: z.number().optional().describe('Maximum number of items to return'),
|
|
60
80
|
offset: z.number().optional().describe('Number of items to skip'),
|
|
61
81
|
});
|
|
@@ -100,7 +120,7 @@ const ListIssuesSchema = z.object({
|
|
|
100
120
|
assigned_to_id: z
|
|
101
121
|
.string()
|
|
102
122
|
.optional()
|
|
103
|
-
.describe('Filter by assignee
|
|
123
|
+
.describe('Filter by assignee: "me" (default), "unassigned", "all", or a specific user ID'),
|
|
104
124
|
limit: z.number().optional().describe('Maximum number of items to return'),
|
|
105
125
|
offset: z.number().optional().describe('Number of items to skip'),
|
|
106
126
|
});
|
|
@@ -112,9 +132,14 @@ const GetIssueSchema = z.object({
|
|
|
112
132
|
const CreateWorkItemSchema = z.object({
|
|
113
133
|
title: z.string().describe('Title of the work item'),
|
|
114
134
|
description: z.string().optional().describe('Description/notes for the work item (markdown)'),
|
|
115
|
-
status: z
|
|
135
|
+
status: z
|
|
136
|
+
.string()
|
|
137
|
+
.optional()
|
|
138
|
+
.describe('Initial status: "pending" (backlog), "new" (to do), "doing", "review", "blocked", "completed". Defaults to "new".'),
|
|
116
139
|
priority: z.number().optional().describe('Priority level (0-4, higher is more important)'),
|
|
117
140
|
leading_user_id: z.string().optional().describe('User ID to assign as leading user'),
|
|
141
|
+
category_id: z.string().optional().describe('Category ID to organize the work item'),
|
|
142
|
+
radar_item_id: z.string().optional().describe('Radar/initiative item ID to link to'),
|
|
118
143
|
});
|
|
119
144
|
const CreateIssueSchema = z.object({
|
|
120
145
|
title: z.string().describe('Title of the issue'),
|
|
@@ -220,7 +245,11 @@ class WolfpackMCPServer {
|
|
|
220
245
|
// Work Item tools
|
|
221
246
|
{
|
|
222
247
|
name: 'list_work_items',
|
|
223
|
-
description: 'List work items (tasks/tickets).
|
|
248
|
+
description: 'List work items (tasks/tickets). By default lists items assigned to you, sorted by most recently updated. ' +
|
|
249
|
+
'TERMINOLOGY: The board has columns: "new" (to do), "doing" (in progress), "review" (pending review), "blocked", "completed" (done). ' +
|
|
250
|
+
'The "backlog" or "pending" status represents items not yet on the board. ' +
|
|
251
|
+
'By default, completed/closed items are excluded - use status="all" to include them. ' +
|
|
252
|
+
'Use when user asks about "my work", "my tasks", "what am I working on", "assigned to me", or "backlog".',
|
|
224
253
|
inputSchema: {
|
|
225
254
|
type: 'object',
|
|
226
255
|
properties: {
|
|
@@ -230,11 +259,37 @@ class WolfpackMCPServer {
|
|
|
230
259
|
},
|
|
231
260
|
status: {
|
|
232
261
|
type: 'string',
|
|
233
|
-
description: 'Filter: "new"
|
|
262
|
+
description: 'Filter by status. Board columns: "new", "doing", "review", "blocked", "completed". ' +
|
|
263
|
+
'Use "pending" or "backlog" for backlog items not on board. ' +
|
|
264
|
+
'Use "all" to include completed/closed items. Default excludes completed/closed.',
|
|
234
265
|
},
|
|
235
266
|
assigned_to_id: {
|
|
236
267
|
type: 'string',
|
|
237
|
-
description: 'Filter by assignee
|
|
268
|
+
description: 'Filter by assignee: "me" (default), "unassigned", "all", or a specific user ID',
|
|
269
|
+
},
|
|
270
|
+
search: {
|
|
271
|
+
type: 'string',
|
|
272
|
+
description: 'Text search in title and description',
|
|
273
|
+
},
|
|
274
|
+
category_id: {
|
|
275
|
+
type: 'string',
|
|
276
|
+
description: 'Filter by category ID, or "none" for uncategorized items',
|
|
277
|
+
},
|
|
278
|
+
priority: {
|
|
279
|
+
type: 'string',
|
|
280
|
+
description: 'Filter by priority level (0-4, higher is more important)',
|
|
281
|
+
},
|
|
282
|
+
radar_item_id: {
|
|
283
|
+
type: 'string',
|
|
284
|
+
description: 'Filter by linked radar/initiative item ID',
|
|
285
|
+
},
|
|
286
|
+
sort_by: {
|
|
287
|
+
type: 'string',
|
|
288
|
+
description: 'Sort field: "dateUpdated" (default, newest activity first), "dateCreated", "priority", "title"',
|
|
289
|
+
},
|
|
290
|
+
sort_order: {
|
|
291
|
+
type: 'string',
|
|
292
|
+
description: 'Sort direction: "desc" (default), "asc"',
|
|
238
293
|
},
|
|
239
294
|
limit: { type: 'number', description: 'Maximum number of items to return' },
|
|
240
295
|
offset: { type: 'number', description: 'Number of items to skip' },
|
|
@@ -276,7 +331,10 @@ class WolfpackMCPServer {
|
|
|
276
331
|
},
|
|
277
332
|
{
|
|
278
333
|
name: 'update_work_item_status',
|
|
279
|
-
description: 'Change work item status.
|
|
334
|
+
description: 'Change work item status. ' +
|
|
335
|
+
'Board columns: "new" (to do), "doing" (in progress), "review" (pending review), "blocked", "completed" (done). ' +
|
|
336
|
+
'"pending" is for backlog items not yet on the board. ' +
|
|
337
|
+
'WORKFLOW: Move to "doing" when starting work, "review" when ready for review, "completed" when done.',
|
|
280
338
|
inputSchema: {
|
|
281
339
|
type: 'object',
|
|
282
340
|
properties: {
|
|
@@ -286,7 +344,7 @@ class WolfpackMCPServer {
|
|
|
286
344
|
},
|
|
287
345
|
status: {
|
|
288
346
|
type: 'string',
|
|
289
|
-
description: 'New status',
|
|
347
|
+
description: 'New status: "pending" (backlog), "new" (to do), "doing" (in progress), "review", "blocked", "completed" (done)',
|
|
290
348
|
},
|
|
291
349
|
},
|
|
292
350
|
required: ['work_item_id', 'status'],
|
|
@@ -356,7 +414,7 @@ class WolfpackMCPServer {
|
|
|
356
414
|
},
|
|
357
415
|
assigned_to_id: {
|
|
358
416
|
type: 'string',
|
|
359
|
-
description: 'Filter by assignee
|
|
417
|
+
description: 'Filter by assignee: "me" (default), "unassigned", "all", or a specific user ID',
|
|
360
418
|
},
|
|
361
419
|
limit: { type: 'number', description: 'Maximum number of items to return' },
|
|
362
420
|
offset: { type: 'number', description: 'Number of items to skip' },
|
|
@@ -395,7 +453,7 @@ class WolfpackMCPServer {
|
|
|
395
453
|
},
|
|
396
454
|
status: {
|
|
397
455
|
type: 'string',
|
|
398
|
-
description: 'Initial status (
|
|
456
|
+
description: 'Initial status: "pending" (backlog), "new" (to do), "doing", "review", "blocked", "completed". Defaults to "new".',
|
|
399
457
|
},
|
|
400
458
|
priority: {
|
|
401
459
|
type: 'number',
|
|
@@ -405,6 +463,14 @@ class WolfpackMCPServer {
|
|
|
405
463
|
type: 'string',
|
|
406
464
|
description: 'User ID to assign as leading user',
|
|
407
465
|
},
|
|
466
|
+
category_id: {
|
|
467
|
+
type: 'string',
|
|
468
|
+
description: 'Category ID to organize the work item',
|
|
469
|
+
},
|
|
470
|
+
radar_item_id: {
|
|
471
|
+
type: 'string',
|
|
472
|
+
description: 'Radar/initiative item ID to link to',
|
|
473
|
+
},
|
|
408
474
|
},
|
|
409
475
|
required: ['title'],
|
|
410
476
|
},
|
|
@@ -628,12 +694,20 @@ class WolfpackMCPServer {
|
|
|
628
694
|
teamId: parsed.team_id || this.client.getTeamId() || undefined,
|
|
629
695
|
status: parsed.status,
|
|
630
696
|
assignedToId: parsed.assigned_to_id,
|
|
697
|
+
search: parsed.search,
|
|
698
|
+
categoryId: parsed.category_id,
|
|
699
|
+
priority: parsed.priority,
|
|
700
|
+
radarItemId: parsed.radar_item_id,
|
|
701
|
+
createdById: parsed.created_by_id,
|
|
702
|
+
updatedById: parsed.updated_by_id,
|
|
703
|
+
sortBy: parsed.sort_by,
|
|
704
|
+
sortOrder: parsed.sort_order,
|
|
631
705
|
limit: parsed.limit,
|
|
632
706
|
offset: parsed.offset,
|
|
633
707
|
});
|
|
634
708
|
let text = JSON.stringify(result.items, null, 2);
|
|
635
709
|
if (result.truncated) {
|
|
636
|
-
text = `Note: Results truncated. Showing ${result.items.length} of ${result.total} items. Use
|
|
710
|
+
text = `Note: Results truncated. Showing ${result.items.length} of ${result.total} items. Use filters or limit/offset for pagination.\n\n${text}`;
|
|
637
711
|
}
|
|
638
712
|
return {
|
|
639
713
|
content: [{ type: 'text', text }],
|
|
@@ -755,6 +829,8 @@ class WolfpackMCPServer {
|
|
|
755
829
|
status: parsed.status,
|
|
756
830
|
priority: parsed.priority,
|
|
757
831
|
leadingUserId: parsed.leading_user_id,
|
|
832
|
+
categoryId: parsed.category_id,
|
|
833
|
+
radarItemId: parsed.radar_item_id,
|
|
758
834
|
});
|
|
759
835
|
return {
|
|
760
836
|
content: [
|