wolfpack-mcp 1.0.61 → 1.0.62
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 +11 -0
- package/dist/index.js +87 -6
- package/package.json +1 -1
package/dist/client.js
CHANGED
|
@@ -60,6 +60,17 @@ export class WolfpackClient {
|
|
|
60
60
|
const response = await this.api.get('/teams');
|
|
61
61
|
return response.teams;
|
|
62
62
|
}
|
|
63
|
+
// Search methods
|
|
64
|
+
async search(options) {
|
|
65
|
+
const params = new URLSearchParams({ q: options.query });
|
|
66
|
+
if (options.teamSlug)
|
|
67
|
+
params.append('teamSlug', options.teamSlug);
|
|
68
|
+
if (options.includeInactive)
|
|
69
|
+
params.append('includeInactive', 'true');
|
|
70
|
+
if (options.exactOnly)
|
|
71
|
+
params.append('exactOnly', 'true');
|
|
72
|
+
return this.api.get(`/search?${params.toString()}`);
|
|
73
|
+
}
|
|
63
74
|
// Team Member methods
|
|
64
75
|
async listTeamMembers(teamSlug) {
|
|
65
76
|
const params = new URLSearchParams();
|
package/dist/index.js
CHANGED
|
@@ -220,7 +220,14 @@ const CreateRadarItemSchema = z.object({
|
|
|
220
220
|
.optional()
|
|
221
221
|
.describe('Project slug (required for multi-project users, use list_projects to get slugs)'),
|
|
222
222
|
title: z.string().describe('Title of the radar/initiative item'),
|
|
223
|
-
description: z
|
|
223
|
+
description: z
|
|
224
|
+
.string()
|
|
225
|
+
.optional()
|
|
226
|
+
.describe('Short summary shown on the roadmap card (1-2 sentences). Put extended detail in notes, not here.'),
|
|
227
|
+
notes: z
|
|
228
|
+
.string()
|
|
229
|
+
.optional()
|
|
230
|
+
.describe("Extended details shown on the initiative's Notes page (markdown). Use this for long-form content."),
|
|
224
231
|
stage: z
|
|
225
232
|
.enum(['pending', 'now', 'next', 'later', 'completed'])
|
|
226
233
|
.describe('Stage: "pending" (not started), "now" (current sprint), "next" (upcoming), "later" (future), "completed"'),
|
|
@@ -228,8 +235,11 @@ const CreateRadarItemSchema = z.object({
|
|
|
228
235
|
const UpdateRadarItemSchema = z.object({
|
|
229
236
|
item_id: z.string().describe('The refId (number) of the radar item to update'),
|
|
230
237
|
title: z.string().optional().describe('Updated title'),
|
|
231
|
-
description: z
|
|
232
|
-
|
|
238
|
+
description: z
|
|
239
|
+
.string()
|
|
240
|
+
.optional()
|
|
241
|
+
.describe('Updated short summary (1-2 sentences; extended detail belongs in notes)'),
|
|
242
|
+
notes: z.string().optional().describe('Updated Notes page content (markdown)'),
|
|
233
243
|
stage: z
|
|
234
244
|
.enum(['pending', 'now', 'next', 'later', 'completed'])
|
|
235
245
|
.optional()
|
|
@@ -346,6 +356,22 @@ const UpdateIssueSchema = z.object({
|
|
|
346
356
|
.optional()
|
|
347
357
|
.describe('Project slug (required for multi-project users, use list_projects to get slugs)'),
|
|
348
358
|
});
|
|
359
|
+
// Search schema
|
|
360
|
+
const SearchSchema = z.object({
|
|
361
|
+
query: z.string().describe('Search query (websearch syntax: quoted phrases, -exclusions)'),
|
|
362
|
+
project_slug: z
|
|
363
|
+
.string()
|
|
364
|
+
.optional()
|
|
365
|
+
.describe('Project slug; omit to search all accessible projects'),
|
|
366
|
+
include_inactive: z
|
|
367
|
+
.boolean()
|
|
368
|
+
.optional()
|
|
369
|
+
.describe('Include finished/archived items (default false)'),
|
|
370
|
+
exact_only: z
|
|
371
|
+
.boolean()
|
|
372
|
+
.optional()
|
|
373
|
+
.describe('Only exact full-text matches, skipping semantic results (default false)'),
|
|
374
|
+
});
|
|
349
375
|
// Wiki Page schemas
|
|
350
376
|
const ListWikiPagesSchema = z.object({
|
|
351
377
|
project_slug: z.string().optional().describe('Project slug to filter wiki pages'),
|
|
@@ -681,6 +707,36 @@ class WolfpackMCPServer {
|
|
|
681
707
|
properties: {},
|
|
682
708
|
},
|
|
683
709
|
},
|
|
710
|
+
// Search tool
|
|
711
|
+
{
|
|
712
|
+
name: 'search',
|
|
713
|
+
description: 'Ranked full-text search across project content: wiki pages, work items, cases, journal entries and issues. ' +
|
|
714
|
+
'Title matches outrank body matches; results include a snippet, entity type, and refId/slug for follow-up calls ' +
|
|
715
|
+
'(get_work_item, get_issue, get_wiki_page, ...). ' +
|
|
716
|
+
'Use this to find existing content before creating new items, or when the user asks to "find" or "look up" something without saying where it lives.',
|
|
717
|
+
inputSchema: {
|
|
718
|
+
type: 'object',
|
|
719
|
+
properties: {
|
|
720
|
+
query: {
|
|
721
|
+
type: 'string',
|
|
722
|
+
description: 'Search query (websearch syntax: quoted phrases, -exclusions)',
|
|
723
|
+
},
|
|
724
|
+
project_slug: {
|
|
725
|
+
type: 'string',
|
|
726
|
+
description: 'Project slug; omit to search all accessible projects',
|
|
727
|
+
},
|
|
728
|
+
include_inactive: {
|
|
729
|
+
type: 'boolean',
|
|
730
|
+
description: 'Include finished/archived items (default false)',
|
|
731
|
+
},
|
|
732
|
+
exact_only: {
|
|
733
|
+
type: 'boolean',
|
|
734
|
+
description: 'Only exact full-text matches, skipping semantic results (default false)',
|
|
735
|
+
},
|
|
736
|
+
},
|
|
737
|
+
required: ['query'],
|
|
738
|
+
},
|
|
739
|
+
},
|
|
684
740
|
// Work Item tools
|
|
685
741
|
{
|
|
686
742
|
name: 'list_work_items',
|
|
@@ -982,6 +1038,7 @@ class WolfpackMCPServer {
|
|
|
982
1038
|
{
|
|
983
1039
|
name: 'create_radar_item',
|
|
984
1040
|
description: 'Create a new radar/initiative item in your current project. Requires mcp:radar:create permission. ' +
|
|
1041
|
+
'Keep "description" to a short summary; put extended detail in "notes". ' +
|
|
985
1042
|
CONTENT_LINKING_HELP,
|
|
986
1043
|
inputSchema: {
|
|
987
1044
|
type: 'object',
|
|
@@ -993,7 +1050,11 @@ class WolfpackMCPServer {
|
|
|
993
1050
|
title: { type: 'string', description: 'Title of the radar/initiative item' },
|
|
994
1051
|
description: {
|
|
995
1052
|
type: 'string',
|
|
996
|
-
description: '
|
|
1053
|
+
description: 'Short summary shown on the roadmap card (1-2 sentences). Put extended detail in notes, not here.',
|
|
1054
|
+
},
|
|
1055
|
+
notes: {
|
|
1056
|
+
type: 'string',
|
|
1057
|
+
description: "Extended details shown on the initiative's Notes page (markdown). Use this for long-form content.",
|
|
997
1058
|
},
|
|
998
1059
|
stage: {
|
|
999
1060
|
type: 'string',
|
|
@@ -1016,8 +1077,11 @@ class WolfpackMCPServer {
|
|
|
1016
1077
|
description: 'The refId (number) of the radar item to update',
|
|
1017
1078
|
},
|
|
1018
1079
|
title: { type: 'string', description: 'Updated title' },
|
|
1019
|
-
description: {
|
|
1020
|
-
|
|
1080
|
+
description: {
|
|
1081
|
+
type: 'string',
|
|
1082
|
+
description: 'Updated short summary (1-2 sentences; extended detail belongs in notes)',
|
|
1083
|
+
},
|
|
1084
|
+
notes: { type: 'string', description: 'Updated Notes page content (markdown)' },
|
|
1021
1085
|
stage: {
|
|
1022
1086
|
type: 'string',
|
|
1023
1087
|
enum: ['pending', 'now', 'next', 'later', 'completed'],
|
|
@@ -1954,6 +2018,22 @@ class WolfpackMCPServer {
|
|
|
1954
2018
|
],
|
|
1955
2019
|
};
|
|
1956
2020
|
}
|
|
2021
|
+
// Search handler
|
|
2022
|
+
case 'search': {
|
|
2023
|
+
const parsed = SearchSchema.parse(args);
|
|
2024
|
+
const results = await this.client.search({
|
|
2025
|
+
query: parsed.query,
|
|
2026
|
+
teamSlug: parsed.project_slug || this.client.getProjectSlug() || undefined,
|
|
2027
|
+
includeInactive: parsed.include_inactive,
|
|
2028
|
+
exactOnly: parsed.exact_only,
|
|
2029
|
+
});
|
|
2030
|
+
const text = results.length === 0
|
|
2031
|
+
? 'No results found.'
|
|
2032
|
+
: JSON.stringify(stripUuids(results), null, 2);
|
|
2033
|
+
return {
|
|
2034
|
+
content: [{ type: 'text', text }],
|
|
2035
|
+
};
|
|
2036
|
+
}
|
|
1957
2037
|
// Work Item handlers
|
|
1958
2038
|
case 'list_work_items': {
|
|
1959
2039
|
const parsed = ListWorkItemsSchema.parse(args);
|
|
@@ -2193,6 +2273,7 @@ class WolfpackMCPServer {
|
|
|
2193
2273
|
const radarItem = await this.client.createRadarItem({
|
|
2194
2274
|
title: parsed.title,
|
|
2195
2275
|
description: parsed.description,
|
|
2276
|
+
notes: parsed.notes,
|
|
2196
2277
|
stage: parsed.stage,
|
|
2197
2278
|
teamSlug: parsed.project_slug || this.client.getProjectSlug() || undefined,
|
|
2198
2279
|
});
|