wolfpack-mcp 1.0.1 → 1.0.2
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 +17 -6
- package/dist/index.js +46 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -103,14 +103,15 @@ Work items are tasks or tickets assigned to team members.
|
|
|
103
103
|
|
|
104
104
|
#### `list_work_items`
|
|
105
105
|
|
|
106
|
-
Lists work items assigned to you.
|
|
106
|
+
Lists work items assigned to you. By default, excludes completed and closed items to show active work.
|
|
107
107
|
|
|
108
108
|
- **Parameters:**
|
|
109
109
|
- `team_id` (number, optional): Team ID (use `list_teams` to get IDs)
|
|
110
|
-
- `status` (string, optional): Filter by status (new, doing, review, completed, blocked)
|
|
110
|
+
- `status` (string, optional): Filter by status (new, doing, review, completed, blocked). Use `completed` or `closed` to see those items.
|
|
111
111
|
- `limit` (number, optional): Maximum number of items to return
|
|
112
112
|
- `offset` (number, optional): Number of items to skip for pagination
|
|
113
113
|
- **Returns:** Array of work item objects
|
|
114
|
+
- **Note:** Results are automatically paginated. If there are more than 200 items, you'll receive a truncation warning with the first 50 items.
|
|
114
115
|
|
|
115
116
|
#### `get_work_item`
|
|
116
117
|
|
|
@@ -157,17 +158,18 @@ Issues track bugs, feature requests, and other items in the issue tracker.
|
|
|
157
158
|
|
|
158
159
|
#### `list_issues`
|
|
159
160
|
|
|
160
|
-
Lists issues from the team issue tracker.
|
|
161
|
+
Lists issues from the team issue tracker. By default, excludes closed issues.
|
|
161
162
|
|
|
162
163
|
- **Parameters:**
|
|
163
164
|
- `team_id` (number, optional): Team ID to filter issues
|
|
164
|
-
- `status` (string, optional): Filter by status (open, in-progress, resolved, closed)
|
|
165
|
+
- `status` (string, optional): Filter by status (open, in-progress, resolved, closed). Use `closed` to see closed items.
|
|
165
166
|
- `severity` (string, optional): Filter by severity (low, medium, high, critical)
|
|
166
167
|
- `type` (string, optional): Filter by type (bug, feature-request, task, improvement, question)
|
|
167
168
|
- `assigned_to_id` (string, optional): Filter by assignee ('unassigned' or 'me' for special cases)
|
|
168
169
|
- `limit` (number, optional): Maximum number of items
|
|
169
170
|
- `offset` (number, optional): Items to skip
|
|
170
171
|
- **Returns:** Array of issue objects
|
|
172
|
+
- **Note:** Results are automatically paginated. If there are more than 200 items, you'll receive a truncation warning.
|
|
171
173
|
|
|
172
174
|
#### `get_issue`
|
|
173
175
|
|
|
@@ -319,14 +321,15 @@ Radar items are strategic initiatives or roadmap items that group related work.
|
|
|
319
321
|
|
|
320
322
|
#### `list_radar_items`
|
|
321
323
|
|
|
322
|
-
Lists radar items from the team.
|
|
324
|
+
Lists radar items from the team. By default, excludes completed items.
|
|
323
325
|
|
|
324
326
|
- **Parameters:**
|
|
325
327
|
- `team_id` (number, optional): Team ID to filter
|
|
326
|
-
- `stage` (string, optional): Filter by stage (pending, now, next, later, completed)
|
|
328
|
+
- `stage` (string, optional): Filter by stage (pending, now, next, later, completed). Use `completed` to see completed items.
|
|
327
329
|
- `limit` (number, optional): Maximum items to return
|
|
328
330
|
- `offset` (number, optional): Items to skip
|
|
329
331
|
- **Returns:** Array of radar item objects
|
|
332
|
+
- **Note:** Results are automatically paginated. If there are more than 200 items, you'll receive a truncation warning.
|
|
330
333
|
|
|
331
334
|
#### `get_radar_item`
|
|
332
335
|
|
|
@@ -337,6 +340,14 @@ Gets a specific radar item by ID or reference number.
|
|
|
337
340
|
- `team_id` (number, optional): Team ID (required when using refId)
|
|
338
341
|
- **Returns:** Radar item object with work items and participants
|
|
339
342
|
|
|
343
|
+
## Automatic Updates
|
|
344
|
+
|
|
345
|
+
The MCP server checks for updates on startup. If a newer version is available, you'll see a notification in the server logs with instructions to update:
|
|
346
|
+
|
|
347
|
+
```
|
|
348
|
+
npm install -g wolfpack-mcp@latest
|
|
349
|
+
```
|
|
350
|
+
|
|
340
351
|
## Security
|
|
341
352
|
|
|
342
353
|
- API keys authenticate with your Wolfpack account
|
package/dist/index.js
CHANGED
|
@@ -3,8 +3,51 @@ import { Server } from '@modelcontextprotocol/sdk/server/index.js';
|
|
|
3
3
|
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
4
4
|
import { CallToolRequestSchema, ListToolsRequestSchema, } from '@modelcontextprotocol/sdk/types.js';
|
|
5
5
|
import { z } from 'zod';
|
|
6
|
+
import { createRequire } from 'module';
|
|
6
7
|
import { WolfpackClient } from './client.js';
|
|
7
8
|
import { validateConfig, config } from './config.js';
|
|
9
|
+
// Get current package version
|
|
10
|
+
const require = createRequire(import.meta.url);
|
|
11
|
+
const packageJson = require('../package.json');
|
|
12
|
+
const CURRENT_VERSION = packageJson.version;
|
|
13
|
+
const PACKAGE_NAME = packageJson.name;
|
|
14
|
+
// Check for updates from npm registry
|
|
15
|
+
async function checkForUpdates() {
|
|
16
|
+
try {
|
|
17
|
+
const response = await fetch(`https://registry.npmjs.org/${PACKAGE_NAME}/latest`, {
|
|
18
|
+
headers: { Accept: 'application/json' },
|
|
19
|
+
signal: AbortSignal.timeout(5000), // 5 second timeout
|
|
20
|
+
});
|
|
21
|
+
if (!response.ok)
|
|
22
|
+
return;
|
|
23
|
+
const data = (await response.json());
|
|
24
|
+
const latestVersion = data.version;
|
|
25
|
+
if (latestVersion && latestVersion !== CURRENT_VERSION) {
|
|
26
|
+
const [latestMajor, latestMinor, latestPatch] = latestVersion.split('.').map(Number);
|
|
27
|
+
const [currentMajor, currentMinor, currentPatch] = CURRENT_VERSION.split('.').map(Number);
|
|
28
|
+
// Check if latest is actually newer
|
|
29
|
+
const isNewer = latestMajor > currentMajor ||
|
|
30
|
+
(latestMajor === currentMajor && latestMinor > currentMinor) ||
|
|
31
|
+
(latestMajor === currentMajor &&
|
|
32
|
+
latestMinor === currentMinor &&
|
|
33
|
+
latestPatch > currentPatch);
|
|
34
|
+
if (isNewer) {
|
|
35
|
+
console.error('');
|
|
36
|
+
console.error('╔════════════════════════════════════════════════════════════╗');
|
|
37
|
+
console.error('║ UPDATE AVAILABLE ║');
|
|
38
|
+
console.error(`║ ${PACKAGE_NAME} ${CURRENT_VERSION} → ${latestVersion}`.padEnd(61) + '║');
|
|
39
|
+
console.error('║ ║');
|
|
40
|
+
console.error('║ Run: npm install -g wolfpack-mcp@latest ║');
|
|
41
|
+
console.error('║ Or update your package.json and run: npm install ║');
|
|
42
|
+
console.error('╚════════════════════════════════════════════════════════════╝');
|
|
43
|
+
console.error('');
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
catch {
|
|
48
|
+
// Silently ignore update check failures - don't block startup
|
|
49
|
+
}
|
|
50
|
+
}
|
|
8
51
|
// Work Item schemas
|
|
9
52
|
const ListWorkItemsSchema = z.object({
|
|
10
53
|
team_id: z.number().optional().describe('Team ID to filter work items'),
|
|
@@ -915,6 +958,8 @@ class WolfpackMCPServer {
|
|
|
915
958
|
});
|
|
916
959
|
}
|
|
917
960
|
async start() {
|
|
961
|
+
// Check for updates (non-blocking)
|
|
962
|
+
checkForUpdates();
|
|
918
963
|
// Resolve team on startup
|
|
919
964
|
if (config.teamSlug) {
|
|
920
965
|
// Explicit team slug configured - use it
|
|
@@ -950,7 +995,7 @@ class WolfpackMCPServer {
|
|
|
950
995
|
}
|
|
951
996
|
const transport = new StdioServerTransport();
|
|
952
997
|
await this.server.connect(transport);
|
|
953
|
-
console.error(
|
|
998
|
+
console.error(`Wolfpack MCP Server v${CURRENT_VERSION} started`);
|
|
954
999
|
}
|
|
955
1000
|
}
|
|
956
1001
|
// Validate configuration before starting
|