snboard-mcp 1.0.2 → 1.0.4

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 (2) hide show
  1. package/dist/index.js +38 -3
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -86,6 +86,7 @@ var kanbanApi = {
86
86
  if (params.boardId) searchParams.set("boardId", params.boardId);
87
87
  if (params.columnId) searchParams.set("columnId", params.columnId);
88
88
  if (params.epicId) searchParams.set("epicId", params.epicId);
89
+ if (params.featureId) searchParams.set("featureId", params.featureId);
89
90
  if (params.hasEpic !== void 0) searchParams.set("hasEpic", params.hasEpic.toString());
90
91
  if (params.status) searchParams.set("status", params.status);
91
92
  if (params.tagIds?.length) searchParams.set("tagIds", params.tagIds.join(","));
@@ -95,6 +96,14 @@ var kanbanApi = {
95
96
  },
96
97
  // Comments
97
98
  addComment: (cardId, content) => api("/api/comments", { method: "POST", body: JSON.stringify({ cardId, content }) }),
99
+ // Checklists
100
+ createChecklist: (data) => api("/api/checklists", { method: "POST", body: JSON.stringify(data) }),
101
+ updateChecklist: (id, data) => api(`/api/checklists/${id}`, { method: "PUT", body: JSON.stringify(data) }),
102
+ deleteChecklist: (id) => api(`/api/checklists/${id}`, { method: "DELETE" }),
103
+ // Checklist Items
104
+ createChecklistItem: (data) => api("/api/checklist-items", { method: "POST", body: JSON.stringify(data) }),
105
+ updateChecklistItem: (id, data) => api(`/api/checklist-items/${id}`, { method: "PUT", body: JSON.stringify(data) }),
106
+ deleteChecklistItem: (id) => api(`/api/checklist-items/${id}`, { method: "DELETE" }),
98
107
  // Tags
99
108
  listTags: () => api("/api/tags"),
100
109
  createTag: (data) => api("/api/tags", { method: "POST", body: JSON.stringify(data) }),
@@ -165,13 +174,20 @@ server.setRequestHandler(ListToolsRequestSchema, async () => ({
165
174
  { name: "update_column", description: "Update a column (name, emoji)", inputSchema: { type: "object", properties: { columnId: { type: "string", description: "Column ID" }, name: { type: "string" }, emoji: { type: "string" } }, required: ["columnId"] } },
166
175
  { name: "delete_column", description: "Delete a column and all its cards", inputSchema: { type: "object", properties: { columnId: { type: "string", description: "Column ID" } }, required: ["columnId"] } },
167
176
  // CARDS
168
- { name: "create_card", description: "Create a new card in a column. Supports auto-assign to epic if title starts with [SLUG] or SLUG -.", inputSchema: { type: "object", properties: { columnId: { type: "string", description: "Column ID" }, title: { type: "string", description: "Card title" }, description: { type: "string" }, priority: { type: "string", enum: ["P1", "P2", "P3"] }, dueDate: { type: "string" }, epicId: { type: "string" }, tagIds: { type: "array", items: { type: "string" } }, linkedCardIds: { type: "array", items: { type: "string" } }, linkLabel: { type: "string" } }, required: ["columnId", "title"] } },
169
- { name: "update_card", description: "Update an existing card", inputSchema: { type: "object", properties: { cardId: { type: "string", description: "Card ID" }, title: { type: "string" }, description: { type: "string" } }, required: ["cardId"] } },
177
+ { name: "create_card", description: 'Create a new card in a column. Supports auto-assign to epic if title starts with [SLUG] or SLUG -. Use featureId for multi-project features (e.g., "AUTH", "PAYMENT").', inputSchema: { type: "object", properties: { columnId: { type: "string", description: "Column ID" }, title: { type: "string", description: "Card title" }, description: { type: "string" }, priority: { type: "string", enum: ["P1", "P2", "P3"] }, featureId: { type: "string", description: 'Shared feature ID for multi-project features (e.g., "AUTH", "PAYMENT")' }, dueDate: { type: "string" }, epicId: { type: "string" }, tagIds: { type: "array", items: { type: "string" } }, linkedCardIds: { type: "array", items: { type: "string" } }, linkLabel: { type: "string" } }, required: ["columnId", "title"] } },
178
+ { name: "update_card", description: "Update an existing card (title, description, priority, featureId, dueDate)", inputSchema: { type: "object", properties: { cardId: { type: "string", description: "Card ID" }, title: { type: "string" }, description: { type: "string" }, priority: { type: "string", enum: ["P1", "P2", "P3"] }, featureId: { type: "string", description: 'Shared feature ID for multi-project features (e.g., "AUTH", "PAYMENT")' }, dueDate: { type: "string" } }, required: ["cardId"] } },
170
179
  { name: "delete_card", description: "Delete a card", inputSchema: { type: "object", properties: { cardId: { type: "string", description: "Card ID" } }, required: ["cardId"] } },
171
180
  { name: "move_card", description: "Move a card to a different column", inputSchema: { type: "object", properties: { cardId: { type: "string", description: "Card ID" }, targetColumnId: { type: "string", description: "Target column ID" } }, required: ["cardId", "targetColumnId"] } },
172
181
  { name: "add_comment", description: "Add a comment to a card", inputSchema: { type: "object", properties: { cardId: { type: "string", description: "Card ID" }, content: { type: "string", description: "Comment content" } }, required: ["cardId", "content"] } },
182
+ // CHECKLISTS
183
+ { name: "create_checklist", description: "Create a new checklist on a card", inputSchema: { type: "object", properties: { cardId: { type: "string", description: "Card ID" }, title: { type: "string", description: "Checklist title" } }, required: ["cardId", "title"] } },
184
+ { name: "update_checklist", description: "Update a checklist title", inputSchema: { type: "object", properties: { checklistId: { type: "string", description: "Checklist ID" }, title: { type: "string", description: "New title" } }, required: ["checklistId", "title"] } },
185
+ { name: "delete_checklist", description: "Delete a checklist and all its items", inputSchema: { type: "object", properties: { checklistId: { type: "string", description: "Checklist ID" } }, required: ["checklistId"] } },
186
+ { name: "create_checklist_item", description: "Add an item to a checklist", inputSchema: { type: "object", properties: { checklistId: { type: "string", description: "Checklist ID" }, content: { type: "string", description: "Item content" } }, required: ["checklistId", "content"] } },
187
+ { name: "update_checklist_item", description: "Update a checklist item (content or completed status)", inputSchema: { type: "object", properties: { itemId: { type: "string", description: "Checklist item ID" }, content: { type: "string", description: "New content" }, completed: { type: "boolean", description: "Completed status" } }, required: ["itemId"] } },
188
+ { name: "delete_checklist_item", description: "Delete a checklist item", inputSchema: { type: "object", properties: { itemId: { type: "string", description: "Checklist item ID" } }, required: ["itemId"] } },
173
189
  { name: "get_branch_name", description: "Generate a GitHub branch name for a card", inputSchema: { type: "object", properties: { cardId: { type: "string", description: "Card ID" }, type: { type: "string", enum: ["feature", "fix", "chore", "refactor", "docs"], description: "Branch type" } }, required: ["cardId"] } },
174
- { name: "search_cards", description: "Search cards by title or description with filters to reduce token usage", inputSchema: { type: "object", properties: { query: { type: "string", description: "Search query" }, projectId: { type: "string" }, boardId: { type: "string" }, columnId: { type: "string" }, epicId: { type: "string" }, hasEpic: { type: "boolean" }, status: { type: "string", enum: ["todo", "in_progress", "done"] }, tagIds: { type: "array", items: { type: "string" } }, limit: { type: "number" }, compact: { type: "boolean" } }, required: ["query"] } },
190
+ { name: "search_cards", description: "Search cards by title or description with filters to reduce token usage", inputSchema: { type: "object", properties: { query: { type: "string", description: "Search query" }, projectId: { type: "string" }, boardId: { type: "string" }, columnId: { type: "string" }, epicId: { type: "string" }, featureId: { type: "string", description: "Filter by featureId (multi-project feature)" }, hasEpic: { type: "boolean" }, status: { type: "string", enum: ["todo", "in_progress", "done"] }, tagIds: { type: "array", items: { type: "string" } }, limit: { type: "number" }, compact: { type: "boolean" } }, required: ["query"] } },
175
191
  // TAGS
176
192
  { name: "list_tags", description: "List all available tags", inputSchema: { type: "object", properties: {} } },
177
193
  { name: "create_tag", description: "Create a new tag", inputSchema: { type: "object", properties: { name: { type: "string", description: "Tag name" }, color: { type: "string", description: "Tag color hex" } }, required: ["name", "color"] } },
@@ -285,6 +301,25 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
285
301
  case "add_comment":
286
302
  result = await kanbanApi.addComment(args.cardId, args.content);
287
303
  break;
304
+ // CHECKLISTS
305
+ case "create_checklist":
306
+ result = await kanbanApi.createChecklist({ cardId: args.cardId, title: args.title });
307
+ break;
308
+ case "update_checklist":
309
+ result = await kanbanApi.updateChecklist(args.checklistId, { title: args.title });
310
+ break;
311
+ case "delete_checklist":
312
+ result = await kanbanApi.deleteChecklist(args.checklistId);
313
+ break;
314
+ case "create_checklist_item":
315
+ result = await kanbanApi.createChecklistItem({ checklistId: args.checklistId, content: args.content });
316
+ break;
317
+ case "update_checklist_item":
318
+ result = await kanbanApi.updateChecklistItem(args.itemId, { content: args.content, completed: args.completed });
319
+ break;
320
+ case "delete_checklist_item":
321
+ result = await kanbanApi.deleteChecklistItem(args.itemId);
322
+ break;
288
323
  case "get_branch_name":
289
324
  result = await kanbanApi.getBranchName(args.cardId, args.type || "feature");
290
325
  break;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "snboard-mcp",
3
- "version": "1.0.2",
3
+ "version": "1.0.4",
4
4
  "description": "MCP server for SnBoard Kanban board management via REST API",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",