wolfpack-mcp 1.0.36 → 1.0.37
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 +46 -31
- package/dist/client.js +11 -0
- package/dist/index.js +40 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -5,36 +5,36 @@
|
|
|
5
5
|
Connect your AI assistant to Wolfpack to manage work items, track issues, update documentation, and log progress—all
|
|
6
6
|
through natural conversation.
|
|
7
7
|
|
|
8
|
-
##
|
|
8
|
+
## Quick Start
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
npm install -g wolfpack-mcp
|
|
12
|
-
```
|
|
10
|
+
There are two ways to connect:
|
|
13
11
|
|
|
14
|
-
|
|
12
|
+
- **Claude Desktop** — Use the remote MCP server with OAuth (no API key needed)
|
|
13
|
+
- **Coding agents** (Claude Code, Cursor, Windsurf, etc.) — Use this npm package via stdio with an API key
|
|
15
14
|
|
|
16
|
-
|
|
17
|
-
npx wolfpack-mcp
|
|
18
|
-
```
|
|
15
|
+
### Claude Desktop (Remote MCP)
|
|
19
16
|
|
|
20
|
-
|
|
17
|
+
Add to your Claude Desktop config file:
|
|
21
18
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
3. Restart Claude Desktop
|
|
25
|
-
4. Start asking Claude about your work!
|
|
19
|
+
**macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`
|
|
20
|
+
**Windows**: `%APPDATA%\Claude\claude_desktop_config.json`
|
|
26
21
|
|
|
27
|
-
|
|
22
|
+
```json
|
|
23
|
+
{
|
|
24
|
+
"mcpServers": {
|
|
25
|
+
"wolfpack": {
|
|
26
|
+
"type": "url",
|
|
27
|
+
"url": "https://wolfpacks.work/mcp"
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
```
|
|
28
32
|
|
|
29
|
-
|
|
30
|
-
- "Show me open bugs"
|
|
31
|
-
- "Create a work item to refactor the auth module"
|
|
32
|
-
- "Update issue #42 status to in-progress"
|
|
33
|
-
- "Add a journal entry about today's progress"
|
|
33
|
+
Restart Claude Desktop. You'll be prompted to sign in with your Wolfpack account via OAuth.
|
|
34
34
|
|
|
35
|
-
|
|
35
|
+
### Coding Agents (stdio)
|
|
36
36
|
|
|
37
|
-
|
|
37
|
+
#### 1. Generate an API Key
|
|
38
38
|
|
|
39
39
|
1. Log in to [wolfpacks.work](https://wolfpacks.work)
|
|
40
40
|
2. Go to **Account Settings** → **API Keys**
|
|
@@ -42,12 +42,9 @@ npx wolfpack-mcp
|
|
|
42
42
|
4. Select the permissions you need (work items, issues, wiki, etc.)
|
|
43
43
|
5. Copy your API key immediately—you won't see it again
|
|
44
44
|
|
|
45
|
-
|
|
45
|
+
#### 2. Configure Your Agent
|
|
46
46
|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
**macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`
|
|
50
|
-
**Windows**: `%APPDATA%\Claude\claude_desktop_config.json`
|
|
47
|
+
**Claude Code** (`~/.claude/settings.json` or project `.mcp.json`):
|
|
51
48
|
|
|
52
49
|
```json
|
|
53
50
|
{
|
|
@@ -63,9 +60,27 @@ Add to your Claude Desktop config file:
|
|
|
63
60
|
}
|
|
64
61
|
```
|
|
65
62
|
|
|
66
|
-
|
|
63
|
+
**Cursor / Windsurf** — use the same `command`, `args`, and `env` in your editor's MCP configuration.
|
|
67
64
|
|
|
68
|
-
|
|
65
|
+
## Installation
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
npm install -g wolfpack-mcp
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
Or use directly with npx (no installation required):
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
npx wolfpack-mcp
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
**Try these prompts:**
|
|
78
|
+
|
|
79
|
+
- "What work items are assigned to me?"
|
|
80
|
+
- "Show me open bugs"
|
|
81
|
+
- "Create a work item to refactor the auth module"
|
|
82
|
+
- "Update issue #42 status to in-progress"
|
|
83
|
+
- "Add a journal entry about today's progress"
|
|
69
84
|
|
|
70
85
|
## What You Can Do
|
|
71
86
|
|
|
@@ -79,12 +94,12 @@ After saving the configuration, restart Claude Desktop to connect.
|
|
|
79
94
|
|
|
80
95
|
## Multiple Projects
|
|
81
96
|
|
|
82
|
-
If you belong to multiple project teams,
|
|
97
|
+
If you belong to multiple project teams, your AI assistant will ask which team you mean, or you can specify:
|
|
83
98
|
|
|
84
99
|
- "Show my work items for the Platform team"
|
|
85
100
|
- Use `list_teams` to see all your teams
|
|
86
101
|
|
|
87
|
-
To pre-select a default
|
|
102
|
+
To pre-select a default project for coding agents, add `WOLFPACK_TEAM_SLUG` to your env config:
|
|
88
103
|
|
|
89
104
|
```json
|
|
90
105
|
{
|
|
@@ -100,7 +115,7 @@ The MCP server is designed to work within **one project at a time**:
|
|
|
100
115
|
- The agent will identify which project you're working in before taking actions
|
|
101
116
|
- Once a project is identified, all operations stay within that project
|
|
102
117
|
- The agent will not perform bulk actions across multiple projects
|
|
103
|
-
- To switch projects, explicitly
|
|
118
|
+
- To switch projects, explicitly ask (e.g., "switch to the Platform project")
|
|
104
119
|
|
|
105
120
|
## Available Tools Reference
|
|
106
121
|
|
package/dist/client.js
CHANGED
|
@@ -191,6 +191,17 @@ export class WolfpackClient {
|
|
|
191
191
|
throw error;
|
|
192
192
|
}
|
|
193
193
|
}
|
|
194
|
+
async updateWorkItemTitle(workItemId, title) {
|
|
195
|
+
try {
|
|
196
|
+
return await this.api.put(`/work-items/${workItemId}/title`, { title });
|
|
197
|
+
}
|
|
198
|
+
catch (error) {
|
|
199
|
+
if (error && typeof error === 'object' && 'status' in error && error.status === 404) {
|
|
200
|
+
return null;
|
|
201
|
+
}
|
|
202
|
+
throw error;
|
|
203
|
+
}
|
|
204
|
+
}
|
|
194
205
|
async pullWorkItem(workItemId, data) {
|
|
195
206
|
try {
|
|
196
207
|
return await this.api.post(`/work-items/${workItemId}/pull`, data || {});
|
package/dist/index.js
CHANGED
|
@@ -113,6 +113,10 @@ const UpdateWorkItemAssigneeSchema = z.object({
|
|
|
113
113
|
.nullable()
|
|
114
114
|
.describe('User ID to assign as leading user, or null to unassign'),
|
|
115
115
|
});
|
|
116
|
+
const UpdateWorkItemTitleSchema = z.object({
|
|
117
|
+
work_item_id: z.string().describe('The ID of the work item'),
|
|
118
|
+
title: z.string().describe('New title for the work item'),
|
|
119
|
+
});
|
|
116
120
|
const PullWorkItemSchema = z.object({
|
|
117
121
|
work_item_id: z.string().describe('The ID of the work item to pull from backlog'),
|
|
118
122
|
leading_user_id: z
|
|
@@ -534,6 +538,25 @@ class WolfpackMCPServer {
|
|
|
534
538
|
required: ['work_item_id', 'leading_user_id'],
|
|
535
539
|
},
|
|
536
540
|
},
|
|
541
|
+
{
|
|
542
|
+
name: 'update_work_item_title',
|
|
543
|
+
description: 'Change the title of a work item. ' +
|
|
544
|
+
'Use this to rename or update the title of an existing work item.',
|
|
545
|
+
inputSchema: {
|
|
546
|
+
type: 'object',
|
|
547
|
+
properties: {
|
|
548
|
+
work_item_id: {
|
|
549
|
+
type: 'string',
|
|
550
|
+
description: 'The ID of the work item',
|
|
551
|
+
},
|
|
552
|
+
title: {
|
|
553
|
+
type: 'string',
|
|
554
|
+
description: 'New title for the work item',
|
|
555
|
+
},
|
|
556
|
+
},
|
|
557
|
+
required: ['work_item_id', 'title'],
|
|
558
|
+
},
|
|
559
|
+
},
|
|
537
560
|
{
|
|
538
561
|
name: 'pull_work_item',
|
|
539
562
|
description: 'Pull a specific work item from the backlog to the board. ' +
|
|
@@ -1183,6 +1206,23 @@ class WolfpackMCPServer {
|
|
|
1183
1206
|
content: [{ type: 'text', text: 'Work item not found' }],
|
|
1184
1207
|
};
|
|
1185
1208
|
}
|
|
1209
|
+
case 'update_work_item_title': {
|
|
1210
|
+
const parsed = UpdateWorkItemTitleSchema.parse(args);
|
|
1211
|
+
const workItem = await this.client.updateWorkItemTitle(parsed.work_item_id, parsed.title);
|
|
1212
|
+
if (workItem) {
|
|
1213
|
+
return {
|
|
1214
|
+
content: [
|
|
1215
|
+
{
|
|
1216
|
+
type: 'text',
|
|
1217
|
+
text: `Updated title to "${workItem.title}"\n\n${JSON.stringify(workItem, null, 2)}`,
|
|
1218
|
+
},
|
|
1219
|
+
],
|
|
1220
|
+
};
|
|
1221
|
+
}
|
|
1222
|
+
return {
|
|
1223
|
+
content: [{ type: 'text', text: 'Work item not found' }],
|
|
1224
|
+
};
|
|
1225
|
+
}
|
|
1186
1226
|
case 'pull_work_item': {
|
|
1187
1227
|
const parsed = PullWorkItemSchema.parse(args);
|
|
1188
1228
|
const workItem = await this.client.pullWorkItem(parsed.work_item_id, {
|