wolfpack-mcp 1.0.15 → 1.0.17

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.
Files changed (3) hide show
  1. package/README.md +12 -0
  2. package/dist/index.js +28 -2
  3. package/package.json +1 -1
package/README.md CHANGED
@@ -93,6 +93,15 @@ To pre-select a default team, add to your config:
93
93
  }
94
94
  ```
95
95
 
96
+ ## Project Focus
97
+
98
+ The MCP server is designed to work within **one project at a time**:
99
+
100
+ - The agent will identify which project you're working in before taking actions
101
+ - Once a project is identified, all operations stay within that project
102
+ - The agent will not perform bulk actions across multiple projects
103
+ - To switch projects, explicitly tell Claude (e.g., "switch to the Platform project")
104
+
96
105
  ## API Key Permissions
97
106
 
98
107
  When creating your API key, select the permissions you need:
@@ -137,6 +146,9 @@ Verify [wolfpacks.work](https://wolfpacks.work) is accessible from your network.
137
146
  - Permissions are configurable per key—grant only what you need
138
147
  - Revoke keys anytime from Account Settings
139
148
 
149
+ For additional security, you can **restrict API keys to specific projects** when creating them in Account Settings. This
150
+ ensures the key can only access the projects you select, regardless of your team memberships.
151
+
140
152
  ## Available Tools Reference
141
153
 
142
154
  <details>
package/dist/index.js CHANGED
@@ -223,6 +223,18 @@ const CreateIssueCommentSchema = z.object({
223
223
  issue_id: z.string().describe('The issue UUID'),
224
224
  content: z.string().describe('Comment content (markdown)'),
225
225
  });
226
+ // Helper to detect if a work item description contains a plan
227
+ function hasPlan(description) {
228
+ if (!description)
229
+ return false;
230
+ // Check for markdown checklist items (plan indicators)
231
+ if (/- \[[ x]\]/.test(description))
232
+ return true;
233
+ // Check for --- separator with content after (agent-added section)
234
+ if (/\n---\n/.test(description))
235
+ return true;
236
+ return false;
237
+ }
226
238
  class WolfpackMCPServer {
227
239
  server;
228
240
  client;
@@ -245,7 +257,14 @@ class WolfpackMCPServer {
245
257
  // Team tools
246
258
  {
247
259
  name: 'list_teams',
248
- description: 'List all teams you have access to. IMPORTANT: Call this first if you need to know the team_id for other operations. Returns team IDs, slugs, and names. Single-team users have their team auto-selected; multi-team users must specify team_id in other tool calls.',
260
+ description: 'List all teams (projects) you have access to. ' +
261
+ 'IMPORTANT - PROJECT FOCUS RULES: ' +
262
+ '1) Call this FIRST to identify which project you are working in. ' +
263
+ '2) Once you identify a project, STAY WITHIN that project for all operations unless the user explicitly asks to switch projects. ' +
264
+ '3) NEVER perform bulk actions across multiple projects - always work in one project at a time. ' +
265
+ '4) If the user mentions a specific project, use that project for all subsequent operations. ' +
266
+ '5) If unclear which project to use, ASK the user before proceeding. ' +
267
+ 'Returns team IDs, slugs, and names. Single-team users have their team auto-selected; multi-team users must specify team_id in other tool calls.',
249
268
  inputSchema: {
250
269
  type: 'object',
251
270
  properties: {},
@@ -783,8 +802,15 @@ class WolfpackMCPServer {
783
802
  const parsed = GetWorkItemSchema.parse(args);
784
803
  const workItem = await this.client.getWorkItem(parsed.work_item_id, parsed.team_id || this.client.getTeamId() || undefined);
785
804
  if (workItem) {
805
+ let text = JSON.stringify(workItem, null, 2);
806
+ // Add hint if no plan detected in description
807
+ if (!hasPlan(workItem.description)) {
808
+ text =
809
+ 'REMINDER: This work item has no plan. Before starting work, use update_work_progress to add a plan below a "---" separator. Preserve the original description and append your plan with markdown checkboxes (- [ ] task).\n\n' +
810
+ text;
811
+ }
786
812
  return {
787
- content: [{ type: 'text', text: JSON.stringify(workItem, null, 2) }],
813
+ content: [{ type: 'text', text }],
788
814
  };
789
815
  }
790
816
  return {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wolfpack-mcp",
3
- "version": "1.0.15",
3
+ "version": "1.0.17",
4
4
  "description": "MCP server for Wolfpack AI-enhanced software delivery tools",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",