@smartbear/mcp 0.14.1 → 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 (68) hide show
  1. package/README.md +1 -1
  2. package/dist/bugsnag/client.js +47 -1340
  3. package/dist/bugsnag/input-schemas.js +18 -18
  4. package/dist/bugsnag/tool/error/get-error.js +98 -0
  5. package/dist/bugsnag/tool/error/list-project-errors.js +102 -0
  6. package/dist/bugsnag/tool/error/update-error.js +256 -0
  7. package/dist/bugsnag/tool/event/get-event-details-from-dashboard-url.js +55 -0
  8. package/dist/bugsnag/tool/event/get-event.js +38 -0
  9. package/dist/bugsnag/tool/performance/get-network-endpoint-groupings.js +46 -0
  10. package/dist/bugsnag/tool/performance/get-span-group.js +73 -0
  11. package/dist/bugsnag/tool/performance/get-trace.js +83 -0
  12. package/dist/bugsnag/tool/performance/list-span-groups.js +111 -0
  13. package/dist/bugsnag/tool/performance/list-spans.js +97 -0
  14. package/dist/bugsnag/tool/performance/list-trace-fields.js +41 -0
  15. package/dist/bugsnag/tool/performance/set-network-endpoint-groupings.js +90 -0
  16. package/dist/bugsnag/tool/project/get-current-project.js +31 -0
  17. package/dist/bugsnag/tool/project/list-project-event-filters.js +42 -0
  18. package/dist/bugsnag/tool/project/list-projects.js +43 -0
  19. package/dist/bugsnag/tool/release/get-build.js +50 -0
  20. package/dist/bugsnag/tool/release/get-release.js +68 -0
  21. package/dist/bugsnag/tool/release/list-releases.js +88 -0
  22. package/dist/common/prompts.js +9 -0
  23. package/dist/common/server.js +16 -0
  24. package/dist/common/transport-http.js +2 -0
  25. package/dist/package.json.js +1 -1
  26. package/dist/qmetry/client/api/client-api.js +2 -1
  27. package/dist/qmetry/client/automation.js +2 -1
  28. package/dist/qmetry/client/tools/testcase-tools.js +269 -1
  29. package/dist/qmetry/client/tools/testsuite-tools.js +1 -1
  30. package/dist/reflect/client.js +82 -255
  31. package/dist/reflect/config/constants.js +8 -0
  32. package/dist/reflect/prompt/sap-test.js +29 -0
  33. package/dist/reflect/tool/recording/add-prompt-step.js +60 -0
  34. package/dist/reflect/tool/recording/add-segment.js +56 -0
  35. package/dist/reflect/tool/recording/connect-to-session.js +89 -0
  36. package/dist/reflect/tool/recording/delete-previous-step.js +47 -0
  37. package/dist/reflect/tool/recording/get-screenshot.js +55 -0
  38. package/dist/reflect/tool/suites/cancel-suite-execution.js +50 -0
  39. package/dist/reflect/tool/suites/execute-suite.js +40 -0
  40. package/dist/reflect/tool/suites/get-suite-execution-status.js +50 -0
  41. package/dist/reflect/tool/suites/list-suite-executions.js +40 -0
  42. package/dist/reflect/tool/suites/list-suites.js +27 -0
  43. package/dist/reflect/tool/tests/get-test-status.js +42 -0
  44. package/dist/reflect/tool/tests/list-segments.js +68 -0
  45. package/dist/reflect/tool/tests/list-tests.js +27 -0
  46. package/dist/reflect/tool/tests/run-test.js +40 -0
  47. package/dist/reflect/websocket-manager.js +92 -0
  48. package/dist/zephyr/client.js +35 -1
  49. package/dist/zephyr/common/rest-api-schemas.js +463 -477
  50. package/dist/zephyr/tool/folder/create-folder.js +55 -0
  51. package/dist/zephyr/tool/issue-link/get-test-cases.js +33 -0
  52. package/dist/zephyr/tool/issue-link/get-test-cycles.js +32 -0
  53. package/dist/zephyr/tool/issue-link/get-test-executions.js +32 -0
  54. package/dist/zephyr/tool/test-case/create-issue-link.js +38 -0
  55. package/dist/zephyr/tool/test-case/create-test-script.js +57 -0
  56. package/dist/zephyr/tool/test-case/create-test-steps.js +91 -0
  57. package/dist/zephyr/tool/test-case/create-web-link.js +5 -2
  58. package/dist/zephyr/tool/test-case/get-links.js +32 -0
  59. package/dist/zephyr/tool/test-case/get-test-script.js +46 -0
  60. package/dist/zephyr/tool/test-case/get-test-steps.js +56 -0
  61. package/dist/zephyr/tool/test-cycle/create-issue-link.js +45 -0
  62. package/dist/zephyr/tool/test-cycle/create-web-link.js +56 -0
  63. package/dist/zephyr/tool/test-cycle/get-links.js +39 -0
  64. package/dist/zephyr/tool/test-execution/create-issue-link.js +45 -0
  65. package/dist/zephyr/tool/test-execution/get-test-execution-links.js +39 -0
  66. package/dist/zephyr/tool/test-execution/get-test-steps.js +75 -0
  67. package/dist/zephyr/tool/test-execution/update-test-execution.js +73 -0
  68. package/package.json +11 -9
@@ -0,0 +1,45 @@
1
+ import { Tool } from "../../../common/tools.js";
2
+ import { CreateTestExecutionIssueLinkParams, CreateTestExecutionIssueLinkBody } from "../../common/rest-api-schemas.js";
3
+ class CreateTestExecutionIssueLink extends Tool {
4
+ specification = {
5
+ title: "Create Test Execution Issue Link",
6
+ summary: "Create a new link between a Jira issue and a Test Execution in Zephyr",
7
+ readOnly: false,
8
+ idempotent: false,
9
+ inputSchema: CreateTestExecutionIssueLinkParams.and(
10
+ CreateTestExecutionIssueLinkBody
11
+ ),
12
+ examples: [
13
+ {
14
+ description: "Create a link between the test execution with key SA-E40 and the Jira Issue ID 10100",
15
+ parameters: {
16
+ testExecutionIdOrKey: "SA-E40",
17
+ issueId: 10100
18
+ },
19
+ expectedOutput: "The link between Test Execution and Jira issue should be created, but no output is expected."
20
+ },
21
+ {
22
+ description: "Create a link between the test execution with ID 1 and the Jira Issue ID 20050",
23
+ parameters: {
24
+ testExecutionIdOrKey: "1",
25
+ issueId: 20050
26
+ },
27
+ expectedOutput: "The link between Test Execution and Jira issue should be created, but no output is expected."
28
+ }
29
+ ]
30
+ };
31
+ handle = async (args) => {
32
+ const parsed = CreateTestExecutionIssueLinkParams.and(
33
+ CreateTestExecutionIssueLinkBody
34
+ ).parse(args);
35
+ const { testExecutionIdOrKey, ...body } = parsed;
36
+ await this.client.getApiClient().post(`/testexecutions/${testExecutionIdOrKey}/links/issues`, body);
37
+ return {
38
+ structuredContent: {},
39
+ content: []
40
+ };
41
+ };
42
+ }
43
+ export {
44
+ CreateTestExecutionIssueLink
45
+ };
@@ -0,0 +1,39 @@
1
+ import { Tool } from "../../../common/tools.js";
2
+ import { ListTestExecutionLinks200Response, ListTestExecutionLinksParams } from "../../common/rest-api-schemas.js";
3
+ class GetTestExecutionLinks extends Tool {
4
+ specification = {
5
+ title: "Get Test Execution Links",
6
+ summary: "Get links for a specific test execution in Zephyr",
7
+ readOnly: true,
8
+ idempotent: true,
9
+ inputSchema: ListTestExecutionLinksParams,
10
+ outputSchema: ListTestExecutionLinks200Response,
11
+ examples: [
12
+ {
13
+ description: "Get the links oftest execution with id 1",
14
+ parameters: {
15
+ testExecutionIdOrKey: "1"
16
+ },
17
+ expectedOutput: "The test execution links with its details"
18
+ },
19
+ {
20
+ description: "Get the links of test execution with key 'PROJ-E123'",
21
+ parameters: {
22
+ testExecutionIdOrKey: "PROJ-E123"
23
+ },
24
+ expectedOutput: "The test execution links with its details"
25
+ }
26
+ ]
27
+ };
28
+ handle = async (args) => {
29
+ const { testExecutionIdOrKey } = ListTestExecutionLinksParams.parse(args);
30
+ const response = await this.client.getApiClient().get(`/testexecutions/${testExecutionIdOrKey}/links`);
31
+ return {
32
+ structuredContent: response,
33
+ content: []
34
+ };
35
+ };
36
+ }
37
+ export {
38
+ GetTestExecutionLinks
39
+ };
@@ -0,0 +1,75 @@
1
+ import { Tool } from "../../../common/tools.js";
2
+ import { GetTestExecutionTestSteps200Response, GetTestExecutionTestStepsParams, GetTestExecutionTestStepsQueryParams } from "../../common/rest-api-schemas.js";
3
+ class GetTestExecutionSteps extends Tool {
4
+ specification = {
5
+ title: "Get Test Execution Steps",
6
+ summary: "Get details of test execution steps in Zephyr",
7
+ readOnly: true,
8
+ idempotent: true,
9
+ inputSchema: GetTestExecutionTestStepsParams.and(
10
+ GetTestExecutionTestStepsQueryParams.partial()
11
+ ),
12
+ outputSchema: GetTestExecutionTestSteps200Response,
13
+ examples: [
14
+ {
15
+ description: "Get the first 10 test execution steps for test execution with ID 1",
16
+ parameters: {
17
+ testExecutionIdOrKey: "1",
18
+ maxResults: 10,
19
+ startAt: 0
20
+ },
21
+ expectedOutput: "The first 10 test execution steps with their details"
22
+ },
23
+ {
24
+ description: "Get the first 10 test execution steps for test execution with key 'SA-E1'",
25
+ parameters: {
26
+ testExecutionIdOrKey: "SA-E1",
27
+ maxResults: 10,
28
+ startAt: 0
29
+ },
30
+ expectedOutput: "The first 10 test execution steps with their details"
31
+ },
32
+ {
33
+ description: "Get any test execution step for test execution with key 'SA-E1'",
34
+ parameters: {
35
+ testExecutionIdOrKey: "SA-E1",
36
+ maxResults: 1
37
+ },
38
+ expectedOutput: "One test execution step with its details"
39
+ },
40
+ {
41
+ description: "Get five test execution steps starting from the 7th test execution step for test execution with key 'SA-E1'",
42
+ parameters: {
43
+ testExecutionIdOrKey: "SA-E1",
44
+ maxResults: 5,
45
+ startAt: 6
46
+ },
47
+ expectedOutput: "The 7th to the 11th test execution steps with their details"
48
+ },
49
+ {
50
+ description: "Get test execution steps from the test data row 1 from test execution with key 'SA-E1'",
51
+ parameters: {
52
+ testExecutionIdOrKey: "SA-E1",
53
+ testDataRowNumber: 1,
54
+ maxResults: 10,
55
+ startAt: 0
56
+ },
57
+ expectedOutput: "Test execution steps for the specified test data row"
58
+ }
59
+ ]
60
+ };
61
+ handle = async (args) => {
62
+ const parsed = GetTestExecutionTestStepsParams.and(
63
+ GetTestExecutionTestStepsQueryParams
64
+ ).parse(args);
65
+ const { testExecutionIdOrKey, ...parsedArgs } = parsed;
66
+ const response = await this.client.getApiClient().get(`/testexecutions/${testExecutionIdOrKey}/teststeps`, parsedArgs);
67
+ return {
68
+ structuredContent: response,
69
+ content: []
70
+ };
71
+ };
72
+ }
73
+ export {
74
+ GetTestExecutionSteps
75
+ };
@@ -0,0 +1,73 @@
1
+ import { Tool } from "../../../common/tools.js";
2
+ import { UpdateTestExecutionParams, UpdateTestExecutionBody } from "../../common/rest-api-schemas.js";
3
+ class UpdateTestExecution extends Tool {
4
+ specification = {
5
+ title: "Update Test Execution",
6
+ summary: "Update an existing Test Execution in Zephyr. This operation only updates specified fields in the payload and ignores `null` or `undefined` values.",
7
+ readOnly: false,
8
+ idempotent: true,
9
+ inputSchema: UpdateTestExecutionParams.and(
10
+ UpdateTestExecutionBody.partial()
11
+ ),
12
+ examples: [
13
+ {
14
+ description: "Update the status name to 'PASS' and the environment name to 'ENV-1' in the test execution 'SA-E40'.",
15
+ parameters: {
16
+ testExecutionIdOrKey: "SA-E40",
17
+ statusName: "PASS",
18
+ environmentName: "ENV-1"
19
+ },
20
+ expectedOutput: "The test execution should be updated, but no output is expected."
21
+ },
22
+ {
23
+ description: "Update execution time and actual end date for test execution id '1' (keep everything else unchanged).",
24
+ parameters: {
25
+ testExecutionIdOrKey: "1",
26
+ executionTime: "2018-05-19T13:15:13Z",
27
+ actualEndDate: "2018-05-20T13:15:13Z"
28
+ },
29
+ expectedOutput: "The test execution should be updated, but no output is expected."
30
+ },
31
+ {
32
+ description: "For test execution 'SA-E40', update the test executor and assignee to be the user with ID 10000.",
33
+ parameters: {
34
+ testExecutionIdOrKey: "SA-E40",
35
+ executedById: "10000",
36
+ assignedToId: "10000"
37
+ },
38
+ expectedOutput: "The test execution should be updated, but no output is expected."
39
+ },
40
+ {
41
+ description: "In test execution 'SA-E40', add a comment saying that this execution was updated via API.",
42
+ parameters: {
43
+ testExecutionIdOrKey: "SA-E40",
44
+ comment: "execution updated via API"
45
+ },
46
+ expectedOutput: "The test execution should be updated, but no output is expected."
47
+ },
48
+ {
49
+ description: "Remove the assigned user from test execution 'SA-E40'.",
50
+ parameters: {
51
+ testExecutionIdOrKey: "SA-E40",
52
+ assignedToId: null
53
+ },
54
+ expectedOutput: "The test execution should be updated, but no output is expected."
55
+ }
56
+ ]
57
+ };
58
+ handle = async (args) => {
59
+ const fullInputSchema = UpdateTestExecutionParams.and(
60
+ UpdateTestExecutionBody.partial()
61
+ );
62
+ const parsed = fullInputSchema.parse(args);
63
+ const { testExecutionIdOrKey, ...body } = parsed;
64
+ await this.client.getApiClient().put(`/testexecutions/${testExecutionIdOrKey}`, body);
65
+ return {
66
+ structuredContent: {},
67
+ content: []
68
+ };
69
+ };
70
+ }
71
+ export {
72
+ UpdateTestExecution
73
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@smartbear/mcp",
3
- "version": "0.14.1",
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
  }