@smartbear/mcp 0.15.0 → 0.16.0

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 (47) hide show
  1. package/dist/bugsnag/client.js +42 -1310
  2. package/dist/bugsnag/input-schemas.js +18 -18
  3. package/dist/bugsnag/tool/error/get-error.js +98 -0
  4. package/dist/bugsnag/tool/error/list-project-errors.js +102 -0
  5. package/dist/bugsnag/tool/error/update-error.js +256 -0
  6. package/dist/bugsnag/tool/event/get-event-details-from-dashboard-url.js +55 -0
  7. package/dist/bugsnag/tool/event/get-event.js +38 -0
  8. package/dist/bugsnag/tool/performance/get-network-endpoint-groupings.js +46 -0
  9. package/dist/bugsnag/tool/performance/get-span-group.js +73 -0
  10. package/dist/bugsnag/tool/performance/get-trace.js +83 -0
  11. package/dist/bugsnag/tool/performance/list-span-groups.js +111 -0
  12. package/dist/bugsnag/tool/performance/list-spans.js +97 -0
  13. package/dist/bugsnag/tool/performance/list-trace-fields.js +41 -0
  14. package/dist/bugsnag/tool/performance/set-network-endpoint-groupings.js +90 -0
  15. package/dist/bugsnag/tool/project/get-current-project.js +31 -0
  16. package/dist/bugsnag/tool/project/list-project-event-filters.js +42 -0
  17. package/dist/bugsnag/tool/project/list-projects.js +43 -0
  18. package/dist/bugsnag/tool/release/get-build.js +50 -0
  19. package/dist/bugsnag/tool/release/get-release.js +68 -0
  20. package/dist/bugsnag/tool/release/list-releases.js +88 -0
  21. package/dist/common/prompts.js +9 -0
  22. package/dist/common/server.js +16 -0
  23. package/dist/common/transport-http.js +2 -0
  24. package/dist/package.json.js +1 -1
  25. package/dist/reflect/client.js +66 -1
  26. package/dist/reflect/config/constants.js +3 -1
  27. package/dist/reflect/prompt/sap-test.js +29 -0
  28. package/dist/reflect/tool/recording/add-prompt-step.js +60 -0
  29. package/dist/reflect/tool/recording/add-segment.js +56 -0
  30. package/dist/reflect/tool/recording/connect-to-session.js +89 -0
  31. package/dist/reflect/tool/recording/delete-previous-step.js +47 -0
  32. package/dist/reflect/tool/recording/get-screenshot.js +55 -0
  33. package/dist/reflect/tool/tests/list-segments.js +68 -0
  34. package/dist/reflect/websocket-manager.js +92 -0
  35. package/dist/zephyr/common/rest-api-schemas.js +213 -272
  36. package/dist/zephyr/tool/issue-link/get-test-executions.js +1 -1
  37. package/dist/zephyr/tool/test-case/create-issue-link.js +4 -2
  38. package/dist/zephyr/tool/test-case/create-test-script.js +4 -2
  39. package/dist/zephyr/tool/test-case/create-test-steps.js +4 -2
  40. package/dist/zephyr/tool/test-case/create-web-link.js +5 -2
  41. package/dist/zephyr/tool/test-case/get-test-steps.js +4 -2
  42. package/dist/zephyr/tool/test-cycle/create-issue-link.js +4 -2
  43. package/dist/zephyr/tool/test-cycle/create-web-link.js +4 -2
  44. package/dist/zephyr/tool/test-execution/create-issue-link.js +4 -2
  45. package/dist/zephyr/tool/test-execution/get-test-steps.js +4 -2
  46. package/dist/zephyr/tool/test-execution/update-test-execution.js +5 -2
  47. package/package.json +11 -9
@@ -20,7 +20,7 @@ class GetTestExecutions extends Tool {
20
20
  };
21
21
  handle = async (args) => {
22
22
  const { issueKey } = GetIssueLinkTestExecutionsParams.parse(args);
23
- const response = await this.client.getApiClient().get(`/issuelinks/${issueKey}/testexecutions`);
23
+ const response = await this.client.getApiClient().get(`/issuelinks/${issueKey}/executions`);
24
24
  return {
25
25
  structuredContent: { testExecutions: response },
26
26
  content: []
@@ -22,8 +22,10 @@ class CreateTestCaseIssueLink extends Tool {
22
22
  ]
23
23
  };
24
24
  handle = async (args) => {
25
- const { testCaseKey } = CreateTestCaseIssueLinkParams.parse(args);
26
- const body = CreateTestCaseIssueLinkBody.parse(args);
25
+ const parsed = CreateTestCaseIssueLinkParams.and(
26
+ CreateTestCaseIssueLinkBody
27
+ ).parse(args);
28
+ const { testCaseKey, ...body } = parsed;
27
29
  const response = await this.client.getApiClient().post(`/testcases/${testCaseKey}/links/issues`, body);
28
30
  return {
29
31
  structuredContent: response,
@@ -41,8 +41,10 @@ class CreateTestScript extends Tool {
41
41
  ]
42
42
  };
43
43
  handle = async (args) => {
44
- const { testCaseKey } = CreateTestCaseTestScriptParams.parse(args);
45
- const body = CreateTestCaseTestScriptBody.parse(args);
44
+ const parsed = CreateTestCaseTestScriptParams.and(
45
+ CreateTestCaseTestScriptBody
46
+ ).parse(args);
47
+ const { testCaseKey, ...body } = parsed;
46
48
  const response = await this.client.getApiClient().post(`/testcases/${testCaseKey}/testscript`, body);
47
49
  return {
48
50
  structuredContent: response,
@@ -75,8 +75,10 @@ class CreateTestSteps extends Tool {
75
75
  ]
76
76
  };
77
77
  handle = async (args) => {
78
- const { testCaseKey } = CreateTestCaseTestStepsParams.parse(args);
79
- const body = CreateTestCaseTestStepsBody.parse(args);
78
+ const parsed = CreateTestCaseTestStepsParams.and(
79
+ CreateTestCaseTestStepsBody
80
+ ).parse(args);
81
+ const { testCaseKey, ...body } = parsed;
80
82
  const response = await this.client.getApiClient().post(`/testcases/${testCaseKey}/teststeps`, body);
81
83
  return {
82
84
  structuredContent: response,
@@ -32,8 +32,11 @@ class CreateTestCaseWebLink extends Tool {
32
32
  ]
33
33
  };
34
34
  handle = async (args) => {
35
- const { testCaseKey } = CreateTestCaseWebLinkParams.parse(args);
36
- const body = CreateTestCaseWebLinkBody.parse(args);
35
+ const fullInputSchema = CreateTestCaseWebLinkBody.extend({
36
+ testCaseKey: CreateTestCaseWebLinkParams.shape.testCaseKey
37
+ });
38
+ const parsed = fullInputSchema.parse(args);
39
+ const { testCaseKey, ...body } = parsed;
37
40
  const response = await this.client.getApiClient().post(`/testcases/${testCaseKey}/links/weblinks`, body);
38
41
  return {
39
42
  structuredContent: response,
@@ -40,8 +40,10 @@ class GetTestCaseSteps extends Tool {
40
40
  ]
41
41
  };
42
42
  handle = async (args) => {
43
- const { testCaseKey } = GetTestCaseTestStepsParams.parse(args);
44
- const parsedArgs = GetTestCaseTestStepsQueryParams.parse(args);
43
+ const parsed = GetTestCaseTestStepsParams.and(
44
+ GetTestCaseTestStepsQueryParams
45
+ ).parse(args);
46
+ const { testCaseKey, ...parsedArgs } = parsed;
45
47
  const response = await this.client.getApiClient().get(`/testcases/${testCaseKey}/teststeps`, parsedArgs);
46
48
  return {
47
49
  structuredContent: response,
@@ -29,8 +29,10 @@ class CreateTestCycleIssueLink extends Tool {
29
29
  ]
30
30
  };
31
31
  handle = async (args) => {
32
- const { testCycleIdOrKey } = CreateTestCycleIssueLinkParams.parse(args);
33
- const body = CreateTestCycleIssueLinkBody.parse(args);
32
+ const parsed = CreateTestCycleIssueLinkParams.and(
33
+ CreateTestCycleIssueLinkBody
34
+ ).parse(args);
35
+ const { testCycleIdOrKey, ...body } = parsed;
34
36
  await this.client.getApiClient().post(`/testcycles/${testCycleIdOrKey}/links/issues`, body);
35
37
  return {
36
38
  structuredContent: {},
@@ -40,8 +40,10 @@ class CreateTestCycleWebLink extends Tool {
40
40
  ]
41
41
  };
42
42
  handle = async (args) => {
43
- const { testCycleIdOrKey } = CreateTestCycleWebLinkParams.parse(args);
44
- const body = CreateTestCycleWebLinkBody.parse(args);
43
+ const parsed = CreateTestCycleWebLinkParams.and(
44
+ CreateTestCycleWebLinkBody
45
+ ).parse(args);
46
+ const { testCycleIdOrKey, ...body } = parsed;
45
47
  const response = await this.client.getApiClient().post(`/testcycles/${testCycleIdOrKey}/links/weblinks`, body);
46
48
  return {
47
49
  structuredContent: response,
@@ -29,8 +29,10 @@ class CreateTestExecutionIssueLink extends Tool {
29
29
  ]
30
30
  };
31
31
  handle = async (args) => {
32
- const { testExecutionIdOrKey } = CreateTestExecutionIssueLinkParams.parse(args);
33
- const body = CreateTestExecutionIssueLinkBody.parse(args);
32
+ const parsed = CreateTestExecutionIssueLinkParams.and(
33
+ CreateTestExecutionIssueLinkBody
34
+ ).parse(args);
35
+ const { testExecutionIdOrKey, ...body } = parsed;
34
36
  await this.client.getApiClient().post(`/testexecutions/${testExecutionIdOrKey}/links/issues`, body);
35
37
  return {
36
38
  structuredContent: {},
@@ -59,8 +59,10 @@ class GetTestExecutionSteps extends Tool {
59
59
  ]
60
60
  };
61
61
  handle = async (args) => {
62
- const { testExecutionIdOrKey } = GetTestExecutionTestStepsParams.parse(args);
63
- const parsedArgs = GetTestExecutionTestStepsQueryParams.parse(args);
62
+ const parsed = GetTestExecutionTestStepsParams.and(
63
+ GetTestExecutionTestStepsQueryParams
64
+ ).parse(args);
65
+ const { testExecutionIdOrKey, ...parsedArgs } = parsed;
64
66
  const response = await this.client.getApiClient().get(`/testexecutions/${testExecutionIdOrKey}/teststeps`, parsedArgs);
65
67
  return {
66
68
  structuredContent: response,
@@ -56,8 +56,11 @@ class UpdateTestExecution extends Tool {
56
56
  ]
57
57
  };
58
58
  handle = async (args) => {
59
- const { testExecutionIdOrKey } = UpdateTestExecutionParams.parse(args);
60
- const body = UpdateTestExecutionBody.partial().parse(args);
59
+ const fullInputSchema = UpdateTestExecutionParams.and(
60
+ UpdateTestExecutionBody.partial()
61
+ );
62
+ const parsed = fullInputSchema.parse(args);
63
+ const { testExecutionIdOrKey, ...body } = parsed;
61
64
  await this.client.getApiClient().put(`/testexecutions/${testExecutionIdOrKey}`, body);
62
65
  return {
63
66
  structuredContent: {},
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@smartbear/mcp",
3
- "version": "0.15.0",
3
+ "version": "0.16.0",
4
4
  "description": "MCP server for interacting SmartBear Products",
5
5
  "keywords": [
6
6
  "smartbear",
@@ -47,21 +47,23 @@
47
47
  "bump": "node scripts/bump.js"
48
48
  },
49
49
  "dependencies": {
50
- "@bugsnag/js": "^8.2.0",
51
- "@modelcontextprotocol/sdk": "^1.15.0",
50
+ "@bugsnag/js": "^8.8.1",
51
+ "@modelcontextprotocol/sdk": "^1.27.1",
52
52
  "node-cache": "^5.1.2",
53
- "swagger-client": "^3.35.6",
53
+ "swagger-client": "^3.37.1",
54
54
  "vite": "^7.3.1",
55
- "zod": "^4"
55
+ "ws": "^8.19.0",
56
+ "zod": "^4.3.6"
56
57
  },
57
58
  "devDependencies": {
58
- "@biomejs/biome": "^2.2.4",
59
+ "@biomejs/biome": "^2.4.8",
59
60
  "@types/js-yaml": "^4.0.9",
60
- "@types/node": "^22",
61
+ "@types/node": "^22.19.15",
62
+ "@types/ws": "^8.18.1",
61
63
  "@vitest/coverage-v8": "^3.2.4",
62
- "globals": "^16.2.0",
64
+ "globals": "^16.5.0",
63
65
  "shx": "^0.3.4",
64
- "typescript": "^5.6.2",
66
+ "typescript": "^5.9.3",
65
67
  "vitest": "^3.2.4",
66
68
  "vitest-fetch-mock": "^0.4.5"
67
69
  }