wolfpack-mcp 1.0.7 → 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 +18 -0
- package/dist/index.js +95 -10
- package/package.json +1 -1
package/dist/client.js
CHANGED
|
@@ -88,6 +88,24 @@ export class WolfpackClient {
|
|
|
88
88
|
params.append('teamId', options.teamId.toString());
|
|
89
89
|
if (options?.status)
|
|
90
90
|
params.append('status', options.status);
|
|
91
|
+
if (options?.assignedToId)
|
|
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);
|
|
91
109
|
// If explicit limit/offset provided, use single request (for manual pagination)
|
|
92
110
|
if (options?.limit !== undefined || options?.offset !== undefined) {
|
|
93
111
|
if (options?.limit)
|
package/dist/index.js
CHANGED
|
@@ -51,7 +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.'),
|
|
58
|
+
assigned_to_id: z
|
|
59
|
+
.string()
|
|
60
|
+
.optional()
|
|
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"'),
|
|
55
79
|
limit: z.number().optional().describe('Maximum number of items to return'),
|
|
56
80
|
offset: z.number().optional().describe('Number of items to skip'),
|
|
57
81
|
});
|
|
@@ -96,7 +120,7 @@ const ListIssuesSchema = z.object({
|
|
|
96
120
|
assigned_to_id: z
|
|
97
121
|
.string()
|
|
98
122
|
.optional()
|
|
99
|
-
.describe('Filter by assignee
|
|
123
|
+
.describe('Filter by assignee: "me" (default), "unassigned", "all", or a specific user ID'),
|
|
100
124
|
limit: z.number().optional().describe('Maximum number of items to return'),
|
|
101
125
|
offset: z.number().optional().describe('Number of items to skip'),
|
|
102
126
|
});
|
|
@@ -108,9 +132,14 @@ const GetIssueSchema = z.object({
|
|
|
108
132
|
const CreateWorkItemSchema = z.object({
|
|
109
133
|
title: z.string().describe('Title of the work item'),
|
|
110
134
|
description: z.string().optional().describe('Description/notes for the work item (markdown)'),
|
|
111
|
-
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".'),
|
|
112
139
|
priority: z.number().optional().describe('Priority level (0-4, higher is more important)'),
|
|
113
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'),
|
|
114
143
|
});
|
|
115
144
|
const CreateIssueSchema = z.object({
|
|
116
145
|
title: z.string().describe('Title of the issue'),
|
|
@@ -216,7 +245,11 @@ class WolfpackMCPServer {
|
|
|
216
245
|
// Work Item tools
|
|
217
246
|
{
|
|
218
247
|
name: 'list_work_items',
|
|
219
|
-
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".',
|
|
220
253
|
inputSchema: {
|
|
221
254
|
type: 'object',
|
|
222
255
|
properties: {
|
|
@@ -226,7 +259,37 @@ class WolfpackMCPServer {
|
|
|
226
259
|
},
|
|
227
260
|
status: {
|
|
228
261
|
type: 'string',
|
|
229
|
-
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.',
|
|
265
|
+
},
|
|
266
|
+
assigned_to_id: {
|
|
267
|
+
type: 'string',
|
|
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"',
|
|
230
293
|
},
|
|
231
294
|
limit: { type: 'number', description: 'Maximum number of items to return' },
|
|
232
295
|
offset: { type: 'number', description: 'Number of items to skip' },
|
|
@@ -268,7 +331,10 @@ class WolfpackMCPServer {
|
|
|
268
331
|
},
|
|
269
332
|
{
|
|
270
333
|
name: 'update_work_item_status',
|
|
271
|
-
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.',
|
|
272
338
|
inputSchema: {
|
|
273
339
|
type: 'object',
|
|
274
340
|
properties: {
|
|
@@ -278,7 +344,7 @@ class WolfpackMCPServer {
|
|
|
278
344
|
},
|
|
279
345
|
status: {
|
|
280
346
|
type: 'string',
|
|
281
|
-
description: 'New status',
|
|
347
|
+
description: 'New status: "pending" (backlog), "new" (to do), "doing" (in progress), "review", "blocked", "completed" (done)',
|
|
282
348
|
},
|
|
283
349
|
},
|
|
284
350
|
required: ['work_item_id', 'status'],
|
|
@@ -348,7 +414,7 @@ class WolfpackMCPServer {
|
|
|
348
414
|
},
|
|
349
415
|
assigned_to_id: {
|
|
350
416
|
type: 'string',
|
|
351
|
-
description: 'Filter by assignee
|
|
417
|
+
description: 'Filter by assignee: "me" (default), "unassigned", "all", or a specific user ID',
|
|
352
418
|
},
|
|
353
419
|
limit: { type: 'number', description: 'Maximum number of items to return' },
|
|
354
420
|
offset: { type: 'number', description: 'Number of items to skip' },
|
|
@@ -387,7 +453,7 @@ class WolfpackMCPServer {
|
|
|
387
453
|
},
|
|
388
454
|
status: {
|
|
389
455
|
type: 'string',
|
|
390
|
-
description: 'Initial status (
|
|
456
|
+
description: 'Initial status: "pending" (backlog), "new" (to do), "doing", "review", "blocked", "completed". Defaults to "new".',
|
|
391
457
|
},
|
|
392
458
|
priority: {
|
|
393
459
|
type: 'number',
|
|
@@ -397,6 +463,14 @@ class WolfpackMCPServer {
|
|
|
397
463
|
type: 'string',
|
|
398
464
|
description: 'User ID to assign as leading user',
|
|
399
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
|
+
},
|
|
400
474
|
},
|
|
401
475
|
required: ['title'],
|
|
402
476
|
},
|
|
@@ -619,12 +693,21 @@ class WolfpackMCPServer {
|
|
|
619
693
|
const result = await this.client.listWorkItems({
|
|
620
694
|
teamId: parsed.team_id || this.client.getTeamId() || undefined,
|
|
621
695
|
status: parsed.status,
|
|
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,
|
|
622
705
|
limit: parsed.limit,
|
|
623
706
|
offset: parsed.offset,
|
|
624
707
|
});
|
|
625
708
|
let text = JSON.stringify(result.items, null, 2);
|
|
626
709
|
if (result.truncated) {
|
|
627
|
-
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}`;
|
|
628
711
|
}
|
|
629
712
|
return {
|
|
630
713
|
content: [{ type: 'text', text }],
|
|
@@ -746,6 +829,8 @@ class WolfpackMCPServer {
|
|
|
746
829
|
status: parsed.status,
|
|
747
830
|
priority: parsed.priority,
|
|
748
831
|
leadingUserId: parsed.leading_user_id,
|
|
832
|
+
categoryId: parsed.category_id,
|
|
833
|
+
radarItemId: parsed.radar_item_id,
|
|
749
834
|
});
|
|
750
835
|
return {
|
|
751
836
|
content: [
|