@qase/mcp-server 1.1.8 → 2.0.1

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 (296) hide show
  1. package/CHANGELOG.md +38 -0
  2. package/README.md +75 -542
  3. package/build/auth/client-context.d.ts +12 -0
  4. package/build/auth/client-context.d.ts.map +1 -0
  5. package/build/auth/client-context.js +12 -0
  6. package/build/auth/client-context.js.map +1 -0
  7. package/build/auth/jwks-verifier.d.ts +15 -0
  8. package/build/auth/jwks-verifier.d.ts.map +1 -0
  9. package/build/auth/jwks-verifier.js +31 -0
  10. package/build/auth/jwks-verifier.js.map +1 -0
  11. package/build/auth/mcp-guard.d.ts +15 -0
  12. package/build/auth/mcp-guard.d.ts.map +1 -0
  13. package/build/auth/mcp-guard.js +44 -0
  14. package/build/auth/mcp-guard.js.map +1 -0
  15. package/build/auth/oauth-config.d.ts +40 -0
  16. package/build/auth/oauth-config.d.ts.map +1 -0
  17. package/build/auth/oauth-config.js +34 -0
  18. package/build/auth/oauth-config.js.map +1 -0
  19. package/build/auth/proxy-provider.d.ts +31 -0
  20. package/build/auth/proxy-provider.d.ts.map +1 -0
  21. package/build/auth/proxy-provider.js +87 -0
  22. package/build/auth/proxy-provider.js.map +1 -0
  23. package/build/auth/token-type.d.ts +7 -0
  24. package/build/auth/token-type.d.ts.map +1 -0
  25. package/build/auth/token-type.js +10 -0
  26. package/build/auth/token-type.js.map +1 -0
  27. package/build/cache/circuit-breaker.d.ts +33 -0
  28. package/build/cache/circuit-breaker.d.ts.map +1 -0
  29. package/build/cache/circuit-breaker.js +68 -0
  30. package/build/cache/circuit-breaker.js.map +1 -0
  31. package/build/cache/index.d.ts +24 -0
  32. package/build/cache/index.d.ts.map +1 -0
  33. package/build/cache/index.js +86 -0
  34. package/build/cache/index.js.map +1 -0
  35. package/build/cache/keys.d.ts +25 -0
  36. package/build/cache/keys.d.ts.map +1 -0
  37. package/build/cache/keys.js +36 -0
  38. package/build/cache/keys.js.map +1 -0
  39. package/build/cache/layered.d.ts +31 -0
  40. package/build/cache/layered.d.ts.map +1 -0
  41. package/build/cache/layered.js +88 -0
  42. package/build/cache/layered.js.map +1 -0
  43. package/build/cache/memory.d.ts +32 -0
  44. package/build/cache/memory.d.ts.map +1 -0
  45. package/build/cache/memory.js +108 -0
  46. package/build/cache/memory.js.map +1 -0
  47. package/build/cache/metrics.d.ts +31 -0
  48. package/build/cache/metrics.d.ts.map +1 -0
  49. package/build/cache/metrics.js +95 -0
  50. package/build/cache/metrics.js.map +1 -0
  51. package/build/cache/prom-format.d.ts +7 -0
  52. package/build/cache/prom-format.d.ts.map +1 -0
  53. package/build/cache/prom-format.js +16 -0
  54. package/build/cache/prom-format.js.map +1 -0
  55. package/build/cache/redis-bus.d.ts +29 -0
  56. package/build/cache/redis-bus.d.ts.map +1 -0
  57. package/build/cache/redis-bus.js +50 -0
  58. package/build/cache/redis-bus.js.map +1 -0
  59. package/build/cache/redis.d.ts +32 -0
  60. package/build/cache/redis.d.ts.map +1 -0
  61. package/build/cache/redis.js +89 -0
  62. package/build/cache/redis.js.map +1 -0
  63. package/build/cache/types.d.ts +38 -0
  64. package/build/cache/types.d.ts.map +1 -0
  65. package/build/cache/types.js +2 -0
  66. package/build/cache/types.js.map +1 -0
  67. package/build/client/index.d.ts +10 -3
  68. package/build/client/index.d.ts.map +1 -1
  69. package/build/client/index.js +75 -50
  70. package/build/client/index.js.map +1 -1
  71. package/build/http/agent.d.ts +16 -0
  72. package/build/http/agent.d.ts.map +1 -0
  73. package/build/http/agent.js +16 -0
  74. package/build/http/agent.js.map +1 -0
  75. package/build/http/dedupe.d.ts +14 -0
  76. package/build/http/dedupe.d.ts.map +1 -0
  77. package/build/http/dedupe.js +69 -0
  78. package/build/http/dedupe.js.map +1 -0
  79. package/build/http/index.d.ts +6 -0
  80. package/build/http/index.d.ts.map +1 -0
  81. package/build/http/index.js +4 -0
  82. package/build/http/index.js.map +1 -0
  83. package/build/http/retry.d.ts +18 -0
  84. package/build/http/retry.d.ts.map +1 -0
  85. package/build/http/retry.js +52 -0
  86. package/build/http/retry.js.map +1 -0
  87. package/build/index.d.ts +1 -18
  88. package/build/index.d.ts.map +1 -1
  89. package/build/index.js +95 -63
  90. package/build/index.js.map +1 -1
  91. package/build/operations-v2/composites/ci-report.d.ts +2 -0
  92. package/build/operations-v2/composites/ci-report.d.ts.map +1 -0
  93. package/build/operations-v2/composites/ci-report.js +99 -0
  94. package/build/operations-v2/composites/ci-report.js.map +1 -0
  95. package/build/operations-v2/composites/regression-run.d.ts +2 -0
  96. package/build/operations-v2/composites/regression-run.d.ts.map +1 -0
  97. package/build/operations-v2/composites/regression-run.js +81 -0
  98. package/build/operations-v2/composites/regression-run.js.map +1 -0
  99. package/build/operations-v2/composites/triage-defect.d.ts +2 -0
  100. package/build/operations-v2/composites/triage-defect.d.ts.map +1 -0
  101. package/build/operations-v2/composites/triage-defect.js +67 -0
  102. package/build/operations-v2/composites/triage-defect.js.map +1 -0
  103. package/build/operations-v2/escape/api.d.ts +2 -0
  104. package/build/operations-v2/escape/api.d.ts.map +1 -0
  105. package/build/operations-v2/escape/api.js +34 -0
  106. package/build/operations-v2/escape/api.js.map +1 -0
  107. package/build/operations-v2/index.d.ts +21 -0
  108. package/build/operations-v2/index.d.ts.map +1 -0
  109. package/build/operations-v2/index.js +27 -0
  110. package/build/operations-v2/index.js.map +1 -0
  111. package/build/operations-v2/meta/discover.d.ts +9 -0
  112. package/build/operations-v2/meta/discover.d.ts.map +1 -0
  113. package/build/operations-v2/meta/discover.js +79 -0
  114. package/build/operations-v2/meta/discover.js.map +1 -0
  115. package/build/{operations/search.d.ts → operations-v2/qql/index.d.ts} +1 -1
  116. package/build/operations-v2/qql/index.d.ts.map +1 -0
  117. package/build/{operations/search.js → operations-v2/qql/index.js} +34 -9
  118. package/build/operations-v2/qql/index.js.map +1 -0
  119. package/build/operations-v2/read/get.d.ts +2 -0
  120. package/build/operations-v2/read/get.d.ts.map +1 -0
  121. package/build/operations-v2/read/get.js +115 -0
  122. package/build/operations-v2/read/get.js.map +1 -0
  123. package/build/operations-v2/read/project-context.d.ts +2 -0
  124. package/build/operations-v2/read/project-context.d.ts.map +1 -0
  125. package/build/operations-v2/read/project-context.js +102 -0
  126. package/build/operations-v2/read/project-context.js.map +1 -0
  127. package/build/operations-v2/write/attachments.d.ts +2 -0
  128. package/build/operations-v2/write/attachments.d.ts.map +1 -0
  129. package/build/operations-v2/write/attachments.js +58 -0
  130. package/build/operations-v2/write/attachments.js.map +1 -0
  131. package/build/operations-v2/write/case-fields.d.ts +206 -0
  132. package/build/operations-v2/write/case-fields.d.ts.map +1 -0
  133. package/build/operations-v2/write/case-fields.js +79 -0
  134. package/build/operations-v2/write/case-fields.js.map +1 -0
  135. package/build/operations-v2/write/cases-bulk.d.ts +2 -0
  136. package/build/operations-v2/write/cases-bulk.d.ts.map +1 -0
  137. package/build/operations-v2/write/cases-bulk.js +54 -0
  138. package/build/operations-v2/write/cases-bulk.js.map +1 -0
  139. package/build/operations-v2/write/cases.d.ts +2 -0
  140. package/build/operations-v2/write/cases.d.ts.map +1 -0
  141. package/build/operations-v2/write/cases.js +52 -0
  142. package/build/operations-v2/write/cases.js.map +1 -0
  143. package/build/operations-v2/write/defects.d.ts +2 -0
  144. package/build/operations-v2/write/defects.d.ts.map +1 -0
  145. package/build/operations-v2/write/defects.js +81 -0
  146. package/build/operations-v2/write/defects.js.map +1 -0
  147. package/build/operations-v2/write/environments.d.ts +2 -0
  148. package/build/operations-v2/write/environments.d.ts.map +1 -0
  149. package/build/operations-v2/write/environments.js +56 -0
  150. package/build/operations-v2/write/environments.js.map +1 -0
  151. package/build/operations-v2/write/external-issues.d.ts +2 -0
  152. package/build/operations-v2/write/external-issues.d.ts.map +1 -0
  153. package/build/operations-v2/write/external-issues.js +96 -0
  154. package/build/operations-v2/write/external-issues.js.map +1 -0
  155. package/build/operations-v2/write/milestones.d.ts +2 -0
  156. package/build/operations-v2/write/milestones.d.ts.map +1 -0
  157. package/build/operations-v2/write/milestones.js +56 -0
  158. package/build/operations-v2/write/milestones.js.map +1 -0
  159. package/build/operations-v2/write/plans.d.ts +2 -0
  160. package/build/operations-v2/write/plans.d.ts.map +1 -0
  161. package/build/operations-v2/write/plans.js +55 -0
  162. package/build/operations-v2/write/plans.js.map +1 -0
  163. package/build/operations-v2/write/results.d.ts +2 -0
  164. package/build/operations-v2/write/results.d.ts.map +1 -0
  165. package/build/operations-v2/write/results.js +72 -0
  166. package/build/operations-v2/write/results.js.map +1 -0
  167. package/build/operations-v2/write/runs.d.ts +2 -0
  168. package/build/operations-v2/write/runs.d.ts.map +1 -0
  169. package/build/operations-v2/write/runs.js +84 -0
  170. package/build/operations-v2/write/runs.js.map +1 -0
  171. package/build/operations-v2/write/shared-steps.d.ts +2 -0
  172. package/build/operations-v2/write/shared-steps.d.ts.map +1 -0
  173. package/build/operations-v2/write/shared-steps.js +60 -0
  174. package/build/operations-v2/write/shared-steps.js.map +1 -0
  175. package/build/operations-v2/write/suites.d.ts +2 -0
  176. package/build/operations-v2/write/suites.d.ts.map +1 -0
  177. package/build/operations-v2/write/suites.js +63 -0
  178. package/build/operations-v2/write/suites.js.map +1 -0
  179. package/build/prompts/index.d.ts +31 -0
  180. package/build/prompts/index.d.ts.map +1 -0
  181. package/build/prompts/index.js +229 -0
  182. package/build/prompts/index.js.map +1 -0
  183. package/build/transports/sse.d.ts.map +1 -1
  184. package/build/transports/sse.js +6 -0
  185. package/build/transports/sse.js.map +1 -1
  186. package/build/transports/streamableHttp.d.ts +6 -1
  187. package/build/transports/streamableHttp.d.ts.map +1 -1
  188. package/build/transports/streamableHttp.js +128 -16
  189. package/build/transports/streamableHttp.js.map +1 -1
  190. package/build/utils/auth-context.d.ts +8 -0
  191. package/build/utils/auth-context.d.ts.map +1 -1
  192. package/build/utils/auth-context.js +18 -0
  193. package/build/utils/auth-context.js.map +1 -1
  194. package/build/utils/case-enums.d.ts +5 -3
  195. package/build/utils/case-enums.d.ts.map +1 -1
  196. package/build/utils/case-enums.js +77 -59
  197. package/build/utils/case-enums.js.map +1 -1
  198. package/build/utils/output-schemas.d.ts +16 -0
  199. package/build/utils/output-schemas.d.ts.map +1 -0
  200. package/build/utils/output-schemas.js +82 -0
  201. package/build/utils/output-schemas.js.map +1 -0
  202. package/build/utils/registry.d.ts +42 -9
  203. package/build/utils/registry.d.ts.map +1 -1
  204. package/build/utils/registry.js +64 -11
  205. package/build/utils/registry.js.map +1 -1
  206. package/build/utils/response-shape.d.ts +23 -0
  207. package/build/utils/response-shape.d.ts.map +1 -0
  208. package/build/utils/response-shape.js +73 -0
  209. package/build/utils/response-shape.js.map +1 -0
  210. package/build/utils/rich-response.d.ts +58 -0
  211. package/build/utils/rich-response.d.ts.map +1 -0
  212. package/build/utils/rich-response.js +93 -0
  213. package/build/utils/rich-response.js.map +1 -0
  214. package/build/utils/server-context.d.ts +65 -0
  215. package/build/utils/server-context.d.ts.map +1 -0
  216. package/build/utils/server-context.js +67 -0
  217. package/build/utils/server-context.js.map +1 -0
  218. package/build/version.d.ts +1 -1
  219. package/build/version.js +1 -1
  220. package/docs/connect.md +81 -0
  221. package/docs/migration.md +351 -0
  222. package/docs/self-run.md +270 -0
  223. package/docs/tools.md +111 -0
  224. package/docs/troubleshooting.md +144 -0
  225. package/package.json +11 -2
  226. package/server.json +8 -2
  227. package/build/operations/attachments.d.ts +0 -8
  228. package/build/operations/attachments.d.ts.map +0 -1
  229. package/build/operations/attachments.js +0 -146
  230. package/build/operations/attachments.js.map +0 -1
  231. package/build/operations/authors.d.ts +0 -8
  232. package/build/operations/authors.d.ts.map +0 -1
  233. package/build/operations/authors.js +0 -70
  234. package/build/operations/authors.js.map +0 -1
  235. package/build/operations/cases.d.ts +0 -8
  236. package/build/operations/cases.d.ts.map +0 -1
  237. package/build/operations/cases.js +0 -370
  238. package/build/operations/cases.js.map +0 -1
  239. package/build/operations/configurations.d.ts +0 -10
  240. package/build/operations/configurations.d.ts.map +0 -1
  241. package/build/operations/configurations.js +0 -125
  242. package/build/operations/configurations.js.map +0 -1
  243. package/build/operations/custom-fields.d.ts +0 -8
  244. package/build/operations/custom-fields.d.ts.map +0 -1
  245. package/build/operations/custom-fields.js +0 -172
  246. package/build/operations/custom-fields.js.map +0 -1
  247. package/build/operations/defects.d.ts +0 -8
  248. package/build/operations/defects.d.ts.map +0 -1
  249. package/build/operations/defects.js +0 -256
  250. package/build/operations/defects.js.map +0 -1
  251. package/build/operations/environments.d.ts +0 -8
  252. package/build/operations/environments.d.ts.map +0 -1
  253. package/build/operations/environments.js +0 -154
  254. package/build/operations/environments.js.map +0 -1
  255. package/build/operations/milestones.d.ts +0 -8
  256. package/build/operations/milestones.d.ts.map +0 -1
  257. package/build/operations/milestones.js +0 -155
  258. package/build/operations/milestones.js.map +0 -1
  259. package/build/operations/plans.d.ts +0 -8
  260. package/build/operations/plans.d.ts.map +0 -1
  261. package/build/operations/plans.js +0 -158
  262. package/build/operations/plans.js.map +0 -1
  263. package/build/operations/projects.d.ts +0 -8
  264. package/build/operations/projects.d.ts.map +0 -1
  265. package/build/operations/projects.js +0 -192
  266. package/build/operations/projects.js.map +0 -1
  267. package/build/operations/results.d.ts +0 -8
  268. package/build/operations/results.d.ts.map +0 -1
  269. package/build/operations/results.js +0 -214
  270. package/build/operations/results.js.map +0 -1
  271. package/build/operations/runs.d.ts +0 -8
  272. package/build/operations/runs.d.ts.map +0 -1
  273. package/build/operations/runs.js +0 -224
  274. package/build/operations/runs.js.map +0 -1
  275. package/build/operations/search.d.ts.map +0 -1
  276. package/build/operations/search.js.map +0 -1
  277. package/build/operations/shared-parameters.d.ts +0 -10
  278. package/build/operations/shared-parameters.d.ts.map +0 -1
  279. package/build/operations/shared-parameters.js +0 -93
  280. package/build/operations/shared-parameters.js.map +0 -1
  281. package/build/operations/shared-steps.d.ts +0 -8
  282. package/build/operations/shared-steps.d.ts.map +0 -1
  283. package/build/operations/shared-steps.js +0 -160
  284. package/build/operations/shared-steps.js.map +0 -1
  285. package/build/operations/suites.d.ts +0 -8
  286. package/build/operations/suites.d.ts.map +0 -1
  287. package/build/operations/suites.js +0 -169
  288. package/build/operations/suites.js.map +0 -1
  289. package/build/operations/system-fields.d.ts +0 -10
  290. package/build/operations/system-fields.d.ts.map +0 -1
  291. package/build/operations/system-fields.js +0 -47
  292. package/build/operations/system-fields.js.map +0 -1
  293. package/build/operations/users.d.ts +0 -10
  294. package/build/operations/users.d.ts.map +0 -1
  295. package/build/operations/users.js +0 -78
  296. package/build/operations/users.js.map +0 -1
@@ -1,370 +0,0 @@
1
- /**
2
- * Test Cases (Qases) Operations
3
- *
4
- * Implements all MCP tools for managing test cases in Qase.
5
- * Test cases are the core entities representing individual tests.
6
- */
7
- import { z } from 'zod';
8
- import { getApiClient } from '../client/index.js';
9
- import { toolRegistry, ReadAnnotation, CreateAnnotation, UpdateAnnotation, DeleteAnnotation, } from '../utils/registry.js';
10
- import { toResultAsync, createToolError } from '../utils/errors.js';
11
- import { normalizeCaseEnums } from '../utils/case-enums.js';
12
- import { ProjectCodeSchema, IdSchema } from '../utils/validation.js';
13
- // ============================================================================
14
- // SCHEMAS
15
- // ============================================================================
16
- /**
17
- * Schema for listing test cases
18
- */
19
- const ListCasesSchema = z.object({
20
- code: ProjectCodeSchema,
21
- search: z.string().optional().describe('Search query for test case title or description'),
22
- milestone_id: z.number().int().positive().optional().describe('Filter by milestone ID'),
23
- suite_id: z.number().int().positive().optional().describe('Filter by suite ID'),
24
- severity: z.string().optional().describe('Filter by severity (e.g., "blocker", "critical")'),
25
- priority: z.string().optional().describe('Filter by priority (e.g., "high", "medium")'),
26
- type: z.string().optional().describe('Filter by type (e.g., "functional", "smoke")'),
27
- behavior: z.string().optional().describe('Filter by behavior (e.g., "positive", "negative")'),
28
- automation: z.string().optional().describe('Filter by automation status'),
29
- status: z.string().optional().describe('Filter by status (e.g., "actual", "draft")'),
30
- external_issues_type: z
31
- .enum([
32
- 'asana',
33
- 'azure-devops',
34
- 'clickup-app',
35
- 'github-app',
36
- 'gitlab-app',
37
- 'jira-cloud',
38
- 'jira-server',
39
- 'linear',
40
- 'monday',
41
- 'redmine-app',
42
- 'trello-app',
43
- 'youtrack-app',
44
- ])
45
- .optional()
46
- .describe('Filter by external integration type'),
47
- external_issues_ids: z
48
- .array(z.string())
49
- .optional()
50
- .describe('Filter by external issue IDs (e.g., Jira ticket keys)'),
51
- include: z
52
- .string()
53
- .optional()
54
- .describe('Comma-separated list of entities to include in response (e.g., "external_issues")'),
55
- limit: z.number().int().positive().max(100).optional().describe('Maximum number of items'),
56
- offset: z.number().int().nonnegative().optional().describe('Number of items to skip'),
57
- });
58
- /**
59
- * Schema for getting a specific test case
60
- */
61
- const GetCaseSchema = z.object({
62
- code: ProjectCodeSchema,
63
- id: IdSchema,
64
- });
65
- /**
66
- * Schema for test case steps
67
- */
68
- const CaseEnumValueSchema = z.string();
69
- const stepFields = {
70
- action: z.string().optional().describe('Step action description (used for classic steps)'),
71
- expected_result: z.string().optional().describe('Expected result for this step'),
72
- data: z.string().optional().describe('Test data for this step'),
73
- value: z
74
- .string()
75
- .optional()
76
- .describe('Gherkin scenario text (used when steps_type is "gherkin"). Example: "Given a user exists\\nWhen they log in\\nThen they see the dashboard"'),
77
- attachments: z.array(z.string()).optional().describe('Array of attachment hashes'),
78
- };
79
- const TestStepSchema = z.object({
80
- ...stepFields,
81
- steps: z
82
- .array(z.object(stepFields).passthrough())
83
- .optional()
84
- .describe('Nested substeps. Same structure as parent steps, supports further nesting.'),
85
- });
86
- /**
87
- * Schema for creating a test case
88
- */
89
- const CreateCaseSchema = z.object({
90
- code: ProjectCodeSchema,
91
- title: z.string().min(1).max(255).describe('Test case title'),
92
- description: z.string().optional().describe('Test case description'),
93
- preconditions: z.string().optional().describe('Preconditions for the test'),
94
- postconditions: z.string().optional().describe('Postconditions after the test'),
95
- severity: CaseEnumValueSchema.optional().describe('Test severity (label or numeric ID from the current workspace configuration)'),
96
- priority: CaseEnumValueSchema.optional().describe('Test priority (label or numeric ID: 0=not set, 1=high, 2=medium, 3=low)'),
97
- type: CaseEnumValueSchema.optional().describe('Test type (label or numeric ID: 1=functional, 2=smoke, 3=regression, 4=security, 5=usability, 6=performance, 7=acceptance)'),
98
- layer: CaseEnumValueSchema.optional().describe('Test layer (label or numeric ID from workspace configuration)'),
99
- is_flaky: z.boolean().optional().describe('Mark test case as flaky'),
100
- suite_id: z.number().int().positive().optional().describe('Suite ID to organize test case'),
101
- milestone_id: z.number().int().positive().optional().describe('Milestone ID'),
102
- behavior: CaseEnumValueSchema.optional().describe('Test behavior (label or numeric ID from workspace configuration)'),
103
- automation: CaseEnumValueSchema.optional().describe('Automation status (label, slug, or numeric ID: 0=Manual / is-not-automated, 1=To be automated, 2=Automated)'),
104
- status: CaseEnumValueSchema.optional().describe('Test case status (label or numeric ID from workspace configuration)'),
105
- steps: z.array(TestStepSchema).optional().describe('Array of test steps'),
106
- steps_type: z
107
- .enum(['classic', 'gherkin'])
108
- .optional()
109
- .describe("Step format: 'classic' for structured steps, 'gherkin' for Given/When/Then scenarios"),
110
- tags: z.array(z.string()).optional().describe('Tags for categorization'),
111
- attachments: z.array(z.string()).optional().describe('Array of attachment hashes'),
112
- custom_field: z.record(z.any()).optional().describe('Custom field values'),
113
- });
114
- /**
115
- * Schema for updating a test case
116
- */
117
- const UpdateCaseSchema = z.object({
118
- code: ProjectCodeSchema,
119
- id: IdSchema,
120
- title: z.string().min(1).max(255).optional().describe('Test case title'),
121
- description: z.string().optional().describe('Test case description'),
122
- preconditions: z.string().optional().describe('Preconditions for the test'),
123
- postconditions: z.string().optional().describe('Postconditions after the test'),
124
- severity: CaseEnumValueSchema.optional().describe('Test severity (label or numeric ID from workspace configuration)'),
125
- priority: CaseEnumValueSchema.optional().describe('Test priority (label or numeric ID: 0=not set, 1=high, 2=medium, 3=low)'),
126
- type: CaseEnumValueSchema.optional().describe('Test type (label or numeric ID: 1=functional, 2=smoke, 3=regression, 4=security, 5=usability, 6=performance, 7=acceptance)'),
127
- layer: CaseEnumValueSchema.optional().describe('Test layer (label or numeric ID from workspace configuration)'),
128
- is_flaky: z.boolean().optional().describe('Mark test case as flaky'),
129
- suite_id: z.number().int().positive().optional().describe('Suite ID'),
130
- milestone_id: z.number().int().positive().optional().describe('Milestone ID'),
131
- behavior: CaseEnumValueSchema.optional().describe('Test behavior (label or numeric ID from workspace configuration)'),
132
- automation: CaseEnumValueSchema.optional().describe('Automation status (label, slug, or numeric ID: 0=Manual / is-not-automated, 1=To be automated, 2=Automated)'),
133
- status: CaseEnumValueSchema.optional().describe('Test case status (label or numeric ID from workspace configuration)'),
134
- steps: z.array(TestStepSchema).optional().describe('Array of test steps'),
135
- steps_type: z
136
- .enum(['classic', 'gherkin'])
137
- .optional()
138
- .describe("Step format: 'classic' for structured steps, 'gherkin' for Given/When/Then scenarios"),
139
- tags: z.array(z.string()).optional().describe('Tags for categorization'),
140
- attachments: z.array(z.string()).optional().describe('Array of attachment hashes'),
141
- custom_field: z.record(z.any()).optional().describe('Custom field values'),
142
- });
143
- /**
144
- * Schema for deleting a test case
145
- */
146
- const DeleteCaseSchema = z.object({
147
- code: ProjectCodeSchema,
148
- id: IdSchema,
149
- });
150
- /**
151
- * Schema for bulk creating test cases
152
- */
153
- const BulkCreateCasesSchema = z.object({
154
- code: ProjectCodeSchema,
155
- cases: z.array(CreateCaseSchema.omit({ code: true })).describe('Array of test cases to create'),
156
- });
157
- /**
158
- * Schema for attaching external issue
159
- */
160
- const AttachExternalIssueSchema = z.object({
161
- code: ProjectCodeSchema,
162
- id: IdSchema,
163
- issue_id: z.string().describe('External issue ID (e.g., Jira issue key)'),
164
- type: z
165
- .enum(['jira-cloud', 'jira-server'])
166
- .describe('Type of external issue integration (Jira Cloud or Jira Server)'),
167
- });
168
- /**
169
- * Schema for detaching external issue
170
- */
171
- const DetachExternalIssueSchema = z.object({
172
- code: ProjectCodeSchema,
173
- id: IdSchema,
174
- issue_id: z.string().describe('External issue ID to detach'),
175
- type: z
176
- .enum(['jira-cloud', 'jira-server'])
177
- .describe('Type of external issue integration (Jira Cloud or Jira Server)'),
178
- });
179
- // ============================================================================
180
- // HELPERS
181
- // ============================================================================
182
- /**
183
- * Map the user-facing `automation` enum (0=Manual, 1=To be automated,
184
- * 2=Automated) to the current API contract (`isManual` + `isToBeAutomated`).
185
- * The legacy `automation` field is deprecated in qase-api-client and dropped
186
- * from the outbound payload.
187
- */
188
- function applyAutomationMapping(caseData) {
189
- const automationId = caseData.automation;
190
- if (typeof automationId !== 'number') {
191
- return caseData;
192
- }
193
- const { automation: _drop, ...rest } = caseData;
194
- const mapped = rest;
195
- switch (automationId) {
196
- case 2: // Automated
197
- mapped.isManual = 0;
198
- break;
199
- case 1: // To be automated
200
- mapped.isManual = 1;
201
- mapped.isToBeAutomated = 1;
202
- break;
203
- case 0: // Manual
204
- default:
205
- mapped.isManual = 1;
206
- mapped.isToBeAutomated = 0;
207
- break;
208
- }
209
- return mapped;
210
- }
211
- // ============================================================================
212
- // HANDLERS
213
- // ============================================================================
214
- /**
215
- * List all test cases in a project with filtering
216
- */
217
- async function listCases(args) {
218
- const client = getApiClient();
219
- const { code, ...filters } = args;
220
- const result = await toResultAsync(client.cases.getCases(code, filters.search, filters.milestone_id, filters.suite_id, filters.severity, filters.priority, filters.type, filters.behavior, filters.automation, filters.status, filters.external_issues_type, filters.external_issues_ids, filters.include, filters.limit, filters.offset));
221
- return result.match((response) => response.data.result, (error) => {
222
- throw createToolError(error, 'case operation');
223
- });
224
- }
225
- /**
226
- * Get a specific test case
227
- */
228
- async function getCase(args) {
229
- const client = getApiClient();
230
- const { code, id } = args;
231
- const result = await toResultAsync(client.cases.getCase(code, id));
232
- return result.match((response) => response.data.result, (error) => {
233
- throw createToolError(error, 'case operation');
234
- });
235
- }
236
- /**
237
- * Create a new test case
238
- */
239
- async function createCase(args) {
240
- const client = getApiClient();
241
- const { code, ...caseData } = args;
242
- const normalizedCaseData = applyAutomationMapping(await normalizeCaseEnums(caseData));
243
- const result = await toResultAsync(client.cases.createCase(code, normalizedCaseData));
244
- return result.match((response) => response.data.result, (error) => {
245
- throw createToolError(error, 'case operation');
246
- });
247
- }
248
- /**
249
- * Update an existing test case
250
- */
251
- async function updateCase(args) {
252
- const client = getApiClient();
253
- const { code, id, ...updateData } = args;
254
- const normalizedUpdateData = applyAutomationMapping(await normalizeCaseEnums(updateData));
255
- const result = await toResultAsync(client.cases.updateCase(code, id, normalizedUpdateData));
256
- return result.match((response) => response.data.result, (error) => {
257
- throw createToolError(error, 'case operation');
258
- });
259
- }
260
- /**
261
- * Delete a test case
262
- */
263
- async function deleteCase(args) {
264
- const client = getApiClient();
265
- const { code, id } = args;
266
- const result = await toResultAsync(client.cases.deleteCase(code, id));
267
- return result.match((_response) => ({ success: true, id }), (error) => {
268
- throw createToolError(error, 'case operation');
269
- });
270
- }
271
- /**
272
- * Bulk create multiple test cases
273
- */
274
- async function bulkCreateCases(args) {
275
- const client = getApiClient();
276
- const { code, cases } = args;
277
- const normalizedCases = await Promise.all(cases.map(async (caseData) => applyAutomationMapping(await normalizeCaseEnums(caseData))));
278
- const result = await toResultAsync(client.cases.bulk(code, { cases: normalizedCases }));
279
- return result.match((response) => response.data.result, (error) => {
280
- throw createToolError(error, 'case operation');
281
- });
282
- }
283
- /**
284
- * Attach external issue to a test case
285
- */
286
- async function attachExternalIssue(args) {
287
- const client = getApiClient();
288
- const { code, id, issue_id, type } = args;
289
- const result = await toResultAsync(client.cases.caseAttachExternalIssue(code, {
290
- type: type,
291
- links: [{ case_id: id, external_issues: [issue_id] }],
292
- }));
293
- return result.match((_response) => ({ success: true, id, issue_id }), (error) => {
294
- throw createToolError(error, 'case operation');
295
- });
296
- }
297
- /**
298
- * Detach external issue from a test case
299
- */
300
- async function detachExternalIssue(args) {
301
- const client = getApiClient();
302
- const { code, id, issue_id, type } = args;
303
- const result = await toResultAsync(client.cases.caseDetachExternalIssue(code, {
304
- type: type,
305
- links: [{ case_id: id, external_issues: [issue_id] }],
306
- }));
307
- return result.match((_response) => ({ success: true, id, issue_id }), (error) => {
308
- throw createToolError(error, 'case operation');
309
- });
310
- }
311
- // ============================================================================
312
- // TOOL REGISTRATION
313
- // ============================================================================
314
- toolRegistry.register({
315
- name: 'list_cases',
316
- description: 'Get all test cases in a project with optional filtering and pagination',
317
- schema: ListCasesSchema,
318
- handler: listCases,
319
- annotations: ReadAnnotation,
320
- });
321
- toolRegistry.register({
322
- name: 'get_case',
323
- description: 'Get a specific test case by project code and case ID',
324
- schema: GetCaseSchema,
325
- handler: getCase,
326
- annotations: ReadAnnotation,
327
- });
328
- toolRegistry.register({
329
- name: 'create_case',
330
- description: 'Create a new test case in a project',
331
- schema: CreateCaseSchema,
332
- handler: createCase,
333
- annotations: CreateAnnotation,
334
- });
335
- toolRegistry.register({
336
- name: 'update_case',
337
- description: 'Update an existing test case',
338
- schema: UpdateCaseSchema,
339
- handler: updateCase,
340
- annotations: UpdateAnnotation,
341
- });
342
- toolRegistry.register({
343
- name: 'delete_case',
344
- description: 'Delete a test case from a project',
345
- schema: DeleteCaseSchema,
346
- handler: deleteCase,
347
- annotations: DeleteAnnotation,
348
- });
349
- toolRegistry.register({
350
- name: 'bulk_create_cases',
351
- description: 'Create multiple test cases at once in a project',
352
- schema: BulkCreateCasesSchema,
353
- handler: bulkCreateCases,
354
- annotations: CreateAnnotation,
355
- });
356
- toolRegistry.register({
357
- name: 'attach_external_issue',
358
- description: 'Attach an external issue (e.g., Jira ticket) to a test case',
359
- schema: AttachExternalIssueSchema,
360
- handler: attachExternalIssue,
361
- annotations: CreateAnnotation,
362
- });
363
- toolRegistry.register({
364
- name: 'detach_external_issue',
365
- description: 'Detach an external issue from a test case',
366
- schema: DetachExternalIssueSchema,
367
- handler: detachExternalIssue,
368
- annotations: DeleteAnnotation,
369
- });
370
- //# sourceMappingURL=cases.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cases.js","sourceRoot":"","sources":["../../src/operations/cases.ts"],"names":[],"mappings":"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"}
@@ -1,10 +0,0 @@
1
- /**
2
- * Configurations Operations
3
- *
4
- * Implements all MCP tools for managing test configurations in Qase.
5
- * Configurations represent test environment settings (browser, OS, device, etc.).
6
- *
7
- * https://developers.qase.io/reference/get-configurations
8
- */
9
- export {};
10
- //# sourceMappingURL=configurations.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"configurations.d.ts","sourceRoot":"","sources":["../../src/operations/configurations.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG"}
@@ -1,125 +0,0 @@
1
- /**
2
- * Configurations Operations
3
- *
4
- * Implements all MCP tools for managing test configurations in Qase.
5
- * Configurations represent test environment settings (browser, OS, device, etc.).
6
- *
7
- * https://developers.qase.io/reference/get-configurations
8
- */
9
- import { z } from 'zod';
10
- import { getApiClient } from '../client/index.js';
11
- import { toolRegistry, ReadAnnotation, CreateAnnotation, DeleteAnnotation, } from '../utils/registry.js';
12
- import { toResultAsync, createToolError } from '../utils/errors.js';
13
- import { ProjectCodeSchema, IdSchema } from '../utils/validation.js';
14
- // ============================================================================
15
- // SCHEMAS
16
- // ============================================================================
17
- /**
18
- * Schema for a single configuration item within a group
19
- */
20
- const ConfigurationItemSchema = z.object({
21
- title: z.string().min(1).describe('Configuration item title (e.g., "Chrome", "Windows 10")'),
22
- });
23
- /**
24
- * Schema for listing configurations in a project
25
- * API: GET /v1/configuration/{code}
26
- * https://developers.qase.io/reference/get-configurations
27
- */
28
- const ListConfigurationsSchema = z.object({
29
- code: ProjectCodeSchema,
30
- });
31
- /**
32
- * Schema for creating a configuration group
33
- * API: POST /v1/configuration/{code}/group
34
- * https://developers.qase.io/reference/create-configuration-group
35
- */
36
- const CreateConfigurationGroupSchema = z.object({
37
- code: ProjectCodeSchema,
38
- title: z.string().min(1).max(255).describe('Configuration group title (e.g., "Browser", "OS")'),
39
- configurations: z
40
- .array(ConfigurationItemSchema)
41
- .min(1)
42
- .describe('Configuration items in the group'),
43
- });
44
- /**
45
- * Schema for deleting a configuration group
46
- * API: DELETE /v1/configuration/{code}/group/{id}
47
- * This endpoint is not documented in the official API docs but follows REST conventions.
48
- */
49
- const DeleteConfigurationGroupSchema = z.object({
50
- code: ProjectCodeSchema,
51
- id: IdSchema.describe('Configuration group ID'),
52
- });
53
- // ============================================================================
54
- // HANDLERS
55
- // ============================================================================
56
- /**
57
- * List all configurations in a project
58
- * API: GET /v1/configuration/{code}
59
- * https://developers.qase.io/reference/get-configurations
60
- */
61
- async function listConfigurations(args) {
62
- const client = getApiClient();
63
- const { code } = args;
64
- const result = await toResultAsync(client.configurations.getConfigurations(code));
65
- return result.match((response) => response.data.result, (error) => {
66
- throw createToolError(error, 'listing configurations');
67
- });
68
- }
69
- /**
70
- * Create a new configuration group
71
- * API: POST /v1/configuration/{code}/group
72
- * https://developers.qase.io/reference/create-configuration-group
73
- *
74
- * Note: The SDK type `ConfigurationGroupCreate` only declares `title`,
75
- * but the API also accepts a `configurations` array. We cast to `any`
76
- * to pass the full payload.
77
- */
78
- async function createConfigurationGroup(args) {
79
- const client = getApiClient();
80
- const { code, title, configurations } = args;
81
- const result = await toResultAsync(client.configurations.createConfigurationGroup(code, { title, configurations }));
82
- return result.match((response) => response.data.result, (error) => {
83
- throw createToolError(error, 'creating configuration group');
84
- });
85
- }
86
- /**
87
- * Delete a configuration group
88
- * API: DELETE /v1/configuration/{code}/group/{id}
89
- *
90
- * The SDK does not expose a delete method for configuration groups,
91
- * so we use a direct API call.
92
- */
93
- async function deleteConfigurationGroup(args) {
94
- const client = getApiClient();
95
- const { code, id } = args;
96
- await client.request(`/v1/configuration/${code}/group/${id}`, {
97
- method: 'DELETE',
98
- });
99
- return { success: true, id };
100
- }
101
- // ============================================================================
102
- // TOOL REGISTRATION
103
- // ============================================================================
104
- toolRegistry.register({
105
- name: 'list_configurations',
106
- description: 'Get all configuration groups and their items in a project',
107
- schema: ListConfigurationsSchema,
108
- handler: listConfigurations,
109
- annotations: ReadAnnotation,
110
- });
111
- toolRegistry.register({
112
- name: 'create_configuration_group',
113
- description: 'Create a new configuration group (e.g., Browser, OS) with items',
114
- schema: CreateConfigurationGroupSchema,
115
- handler: createConfigurationGroup,
116
- annotations: CreateAnnotation,
117
- });
118
- toolRegistry.register({
119
- name: 'delete_configuration_group',
120
- description: 'Delete a configuration group from a project',
121
- schema: DeleteConfigurationGroupSchema,
122
- handler: deleteConfigurationGroup,
123
- annotations: DeleteAnnotation,
124
- });
125
- //# sourceMappingURL=configurations.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"configurations.js","sourceRoot":"","sources":["../../src/operations/configurations.ts"],"names":[],"mappings":"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"}
@@ -1,8 +0,0 @@
1
- /**
2
- * Custom Fields Operations
3
- *
4
- * Implements all MCP tools for managing custom fields in Qase.
5
- * Custom fields extend entities with project-specific data fields.
6
- */
7
- export {};
8
- //# sourceMappingURL=custom-fields.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"custom-fields.d.ts","sourceRoot":"","sources":["../../src/operations/custom-fields.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}