targetprocess-mcp-server 2.1.6 → 2.1.7-a

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 CHANGED
@@ -51,14 +51,13 @@ Cards — Read
51
51
  - `get_bug_comments` — Get comments on a bug (id, optional results)
52
52
  - `get_user_story_comments` — Get comments on a user story (id, optional results)
53
53
  - `get_user_story_test_cases` — Fetch the linked test plan and all its test cases (with steps) for a user story (resourceId)
54
- - `search_all_cards_by_keyword` — Search bugs, stories, and features by keyword (keyword)
54
+ - `search_tp_cards` — Search TP cards by keyword or phrase in description (keyword, optional entityType: UserStories | Bugs, default: UserStories)
55
55
 
56
56
  Cards — Write
57
57
  - `add_comment` — Post a comment to any card (id, comment)
58
58
  - `create_bug` — Create a standalone bug (title, bugContent, optional origin)
59
59
  - `create_bug_based_on_card` — Create a bug linked to an existing user story or bug card (card object with id+type, title, bugContent, optional origin)
60
60
  - `create_test_plan` — Create a test plan linked to a UserStory, Bug, or Feature (title, resourceId, optional resourceType, optional description/startDate/endDate)
61
- - `add_test_cases` — Create a test plan and add generated test cases to it in one call (resourceId, testPlanTitle, testCases array of {name, description}, optional resourceType)
62
61
 
63
62
  Test Case Workflows
64
63
  - `write_test_cases` — Fetch a card (UserStory, Bug, or Feature) by ID and trigger the full test case writing workflow: Claude analyzes the card, generates detailed test cases covering happy path, edge cases, and error scenarios, creates a linked test plan via `create_test_plan`, then calls `add_test_cases_to_test_plan`. Each test case description contains Preconditions and Test Type as HTML; steps are passed as a structured array (resourceId, optional resourceType)
package/build/index.js CHANGED
@@ -332,16 +332,20 @@ server.registerTool('get_release_open_user_stories', {
332
332
  }],
333
333
  };
334
334
  });
335
- server.registerTool('search_user_stories_by_keyword', {
336
- title: 'Search related user stories by keyword or phrase partial text in description',
337
- description: `Searches related user stories by keyword or phrase or partial name or partial keyphrase in description e.g. "Text Element", "Fonts"
338
- NOTE: after results are returned, try filter results by most relevant to what user is looking for in the description text`,
335
+ server.registerTool('search_tp_cards', {
336
+ title: 'Search TP cards by keyword or phrase in description',
337
+ description: `Searches TP cards (UserStories or Bugs) by keyword or phrase or partial keyphrase in Card Description e.g. "Text Element", "Font field"
338
+ NOTE: after results are returned, try analyze and filter results by most relevant to what user is looking for in the description text`,
339
339
  inputSchema: {
340
340
  keyword: z.string()
341
341
  .describe('Keyword or partial name or keyphrase to search for in description'),
342
+ entityType: z.enum(["UserStories", "Bugs"])
343
+ .default("UserStories")
344
+ .optional()
345
+ .describe('Type of TP entity to search — UserStories or Bugs (default: UserStories)'),
342
346
  },
343
- }, async ({ keyword }) => {
344
- const results = await tp.searchContainsDescriptionText({ text: keyword, entityType: "UserStories" });
347
+ }, async ({ keyword, entityType = "UserStories" }) => {
348
+ const results = await tp.searchContainsDescriptionText({ text: keyword, entityType });
345
349
  if (!results) {
346
350
  return {
347
351
  content: [{
@@ -375,54 +379,6 @@ server.registerTool('search_user_stories_by_keyword', {
375
379
  }],
376
380
  };
377
381
  });
378
- server.registerTool('search_all_cards_by_keyword', {
379
- title: 'Search TP cards (user stories, bugs, features) by keyword or partial name',
380
- description: `Searches tp cards (user stories, bugs, features) by keyword or partial name or partial keyphrase e.g. "Text Element"
381
- NOTE: this is a fallback tool if "search_user_stories_by_keyword" tool does not satisfy the user's query`,
382
- inputSchema: {
383
- keyword: z.string()
384
- .describe('Keyword or partial name or keyphrase to search for'),
385
- },
386
- }, async ({ keyword }) => {
387
- const results = await Promise.all([
388
- tp.searchContainsNameText({ text: keyword, entityType: "UserStories" }),
389
- tp.searchContainsNameText({ text: keyword, entityType: "Bugs" }),
390
- tp.searchContainsNameText({ text: keyword, entityType: "Features" }),
391
- ]);
392
- const generalResults = results.map((item) => item.Items).flat();
393
- if (!generalResults) {
394
- return {
395
- content: [{
396
- type: 'text',
397
- text: `Failed to find card by keyword: "${keyword}"\n JSON: ${JSON.stringify(generalResults, null, 2)}`
398
- }],
399
- };
400
- }
401
- const items = generalResults || [];
402
- if (items.length == 0) {
403
- return {
404
- content: [{
405
- type: "text",
406
- text: `No results for ${keyword}`,
407
- }],
408
- };
409
- }
410
- const parsedItems = items.map((item) => {
411
- const dom = new JSDOM(`<html><body><div id="content">${item.Description}</div></body></html>`);
412
- const descriptionText = dom.window.document.getElementById('content')?.textContent;
413
- return {
414
- title: item.Name,
415
- id: item.Id,
416
- description: descriptionText,
417
- };
418
- });
419
- return {
420
- content: [{
421
- type: 'text',
422
- text: JSON.stringify(parsedItems)
423
- }],
424
- };
425
- });
426
382
  server.registerTool('get_bug_content', {
427
383
  title: 'Get TP bug content',
428
384
  description: 'Get tp card (bug) content by specified id, e.g. 145789',
package/package.json CHANGED
@@ -25,7 +25,7 @@
25
25
  "engines": {
26
26
  "node": ">=20.x"
27
27
  },
28
- "version": "2.1.6",
28
+ "version": "2.1.7a",
29
29
  "description": "MCP server for Tartget Process",
30
30
  "main": "build/index.js",
31
31
  "keywords": [