@qase/mcp-server 1.0.0-beta.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 (107) hide show
  1. package/CHANGELOG.md +165 -0
  2. package/README.md +450 -0
  3. package/build/client/index.d.ts +23 -0
  4. package/build/client/index.d.ts.map +1 -0
  5. package/build/client/index.js +55 -0
  6. package/build/client/index.js.map +1 -0
  7. package/build/index.d.ts +32 -0
  8. package/build/index.d.ts.map +1 -0
  9. package/build/index.js +125 -0
  10. package/build/index.js.map +1 -0
  11. package/build/operations/attachments.d.ts +8 -0
  12. package/build/operations/attachments.d.ts.map +1 -0
  13. package/build/operations/attachments.js +123 -0
  14. package/build/operations/attachments.js.map +1 -0
  15. package/build/operations/authors.d.ts +8 -0
  16. package/build/operations/authors.d.ts.map +1 -0
  17. package/build/operations/authors.js +68 -0
  18. package/build/operations/authors.js.map +1 -0
  19. package/build/operations/cases.d.ts +8 -0
  20. package/build/operations/cases.d.ts.map +1 -0
  21. package/build/operations/cases.js +278 -0
  22. package/build/operations/cases.js.map +1 -0
  23. package/build/operations/configurations.d.ts +8 -0
  24. package/build/operations/configurations.d.ts.map +1 -0
  25. package/build/operations/configurations.js +102 -0
  26. package/build/operations/configurations.js.map +1 -0
  27. package/build/operations/custom-fields.d.ts +8 -0
  28. package/build/operations/custom-fields.d.ts.map +1 -0
  29. package/build/operations/custom-fields.js +167 -0
  30. package/build/operations/custom-fields.js.map +1 -0
  31. package/build/operations/defects.d.ts +8 -0
  32. package/build/operations/defects.d.ts.map +1 -0
  33. package/build/operations/defects.js +219 -0
  34. package/build/operations/defects.js.map +1 -0
  35. package/build/operations/environments.d.ts +8 -0
  36. package/build/operations/environments.d.ts.map +1 -0
  37. package/build/operations/environments.js +149 -0
  38. package/build/operations/environments.js.map +1 -0
  39. package/build/operations/milestones.d.ts +8 -0
  40. package/build/operations/milestones.d.ts.map +1 -0
  41. package/build/operations/milestones.js +150 -0
  42. package/build/operations/milestones.js.map +1 -0
  43. package/build/operations/plans.d.ts +8 -0
  44. package/build/operations/plans.d.ts.map +1 -0
  45. package/build/operations/plans.js +153 -0
  46. package/build/operations/plans.js.map +1 -0
  47. package/build/operations/projects.d.ts +8 -0
  48. package/build/operations/projects.d.ts.map +1 -0
  49. package/build/operations/projects.js +186 -0
  50. package/build/operations/projects.js.map +1 -0
  51. package/build/operations/results.d.ts +8 -0
  52. package/build/operations/results.d.ts.map +1 -0
  53. package/build/operations/results.js +208 -0
  54. package/build/operations/results.js.map +1 -0
  55. package/build/operations/runs.d.ts +8 -0
  56. package/build/operations/runs.d.ts.map +1 -0
  57. package/build/operations/runs.js +211 -0
  58. package/build/operations/runs.js.map +1 -0
  59. package/build/operations/search.d.ts +8 -0
  60. package/build/operations/search.d.ts.map +1 -0
  61. package/build/operations/search.js +138 -0
  62. package/build/operations/search.js.map +1 -0
  63. package/build/operations/shared-parameters.d.ts +8 -0
  64. package/build/operations/shared-parameters.d.ts.map +1 -0
  65. package/build/operations/shared-parameters.js +139 -0
  66. package/build/operations/shared-parameters.js.map +1 -0
  67. package/build/operations/shared-steps.d.ts +8 -0
  68. package/build/operations/shared-steps.d.ts.map +1 -0
  69. package/build/operations/shared-steps.js +155 -0
  70. package/build/operations/shared-steps.js.map +1 -0
  71. package/build/operations/suites.d.ts +8 -0
  72. package/build/operations/suites.d.ts.map +1 -0
  73. package/build/operations/suites.js +164 -0
  74. package/build/operations/suites.js.map +1 -0
  75. package/build/operations/system-fields.d.ts +8 -0
  76. package/build/operations/system-fields.d.ts.map +1 -0
  77. package/build/operations/system-fields.js +40 -0
  78. package/build/operations/system-fields.js.map +1 -0
  79. package/build/operations/users.d.ts +8 -0
  80. package/build/operations/users.d.ts.map +1 -0
  81. package/build/operations/users.js +68 -0
  82. package/build/operations/users.js.map +1 -0
  83. package/build/types/index.d.ts +49 -0
  84. package/build/types/index.d.ts.map +1 -0
  85. package/build/types/index.js +13 -0
  86. package/build/types/index.js.map +1 -0
  87. package/build/utils/errors.d.ts +73 -0
  88. package/build/utils/errors.d.ts.map +1 -0
  89. package/build/utils/errors.js +136 -0
  90. package/build/utils/errors.js.map +1 -0
  91. package/build/utils/qql-helpers.d.ts +59 -0
  92. package/build/utils/qql-helpers.d.ts.map +1 -0
  93. package/build/utils/qql-helpers.js +85 -0
  94. package/build/utils/qql-helpers.js.map +1 -0
  95. package/build/utils/registry.d.ts +97 -0
  96. package/build/utils/registry.d.ts.map +1 -0
  97. package/build/utils/registry.js +132 -0
  98. package/build/utils/registry.js.map +1 -0
  99. package/build/utils/test-helpers.d.ts +32 -0
  100. package/build/utils/test-helpers.d.ts.map +1 -0
  101. package/build/utils/test-helpers.js +81 -0
  102. package/build/utils/test-helpers.js.map +1 -0
  103. package/build/utils/validation.d.ts +107 -0
  104. package/build/utils/validation.d.ts.map +1 -0
  105. package/build/utils/validation.js +104 -0
  106. package/build/utils/validation.js.map +1 -0
  107. package/package.json +84 -0
@@ -0,0 +1,107 @@
1
+ /**
2
+ * Validation Utilities
3
+ *
4
+ * Provides reusable Zod schemas and validation helpers for:
5
+ * - Common parameters (pagination, search, etc.)
6
+ * - Qase-specific formats (project codes, IDs, etc.)
7
+ * - Schema composition utilities
8
+ */
9
+ import { z } from 'zod';
10
+ /**
11
+ * Schema for pagination parameters
12
+ * Used across all list operations
13
+ */
14
+ export declare const PaginationSchema: z.ZodObject<{
15
+ limit: z.ZodOptional<z.ZodNumber>;
16
+ offset: z.ZodOptional<z.ZodNumber>;
17
+ }, "strip", z.ZodTypeAny, {
18
+ limit?: number | undefined;
19
+ offset?: number | undefined;
20
+ }, {
21
+ limit?: number | undefined;
22
+ offset?: number | undefined;
23
+ }>;
24
+ /**
25
+ * Schema for Qase project codes
26
+ * Format: 2-10 uppercase letters, numbers, or underscores
27
+ * Examples: DEMO, TEST, MY_PROJECT, PROJECT_123
28
+ */
29
+ export declare const ProjectCodeSchema: z.ZodString;
30
+ /**
31
+ * Schema for search query strings
32
+ */
33
+ export declare const SearchSchema: z.ZodOptional<z.ZodString>;
34
+ /**
35
+ * Schema for entity IDs (positive integers)
36
+ */
37
+ export declare const IdSchema: z.ZodNumber;
38
+ /**
39
+ * Schema for hash identifiers (used by some entities like shared steps)
40
+ */
41
+ export declare const HashSchema: z.ZodString;
42
+ /**
43
+ * Schema for filtering by entity status
44
+ */
45
+ export declare const StatusFilterSchema: z.ZodOptional<z.ZodEnum<["active", "archived", "deleted"]>>;
46
+ /**
47
+ * Helper function to merge a schema with pagination parameters
48
+ *
49
+ * @param schema - The base schema to extend
50
+ * @returns Combined schema with pagination
51
+ *
52
+ * @example
53
+ * ```typescript
54
+ * const ListProjectsSchema = withPagination({
55
+ * search: SearchSchema,
56
+ * });
57
+ * ```
58
+ */
59
+ export declare function withPagination<T extends z.ZodRawShape>(schema: T): z.ZodObject<z.objectUtil.extendShape<T, {
60
+ limit: z.ZodOptional<z.ZodNumber>;
61
+ offset: z.ZodOptional<z.ZodNumber>;
62
+ }>, "strip", z.ZodTypeAny, z.objectUtil.addQuestionMarks<z.baseObjectOutputType<z.objectUtil.extendShape<T, {
63
+ limit: z.ZodOptional<z.ZodNumber>;
64
+ offset: z.ZodOptional<z.ZodNumber>;
65
+ }>>, any> extends infer T_1 ? { [k in keyof T_1]: T_1[k]; } : never, z.baseObjectInputType<z.objectUtil.extendShape<T, {
66
+ limit: z.ZodOptional<z.ZodNumber>;
67
+ offset: z.ZodOptional<z.ZodNumber>;
68
+ }>> extends infer T_2 ? { [k_1 in keyof T_2]: T_2[k_1]; } : never>;
69
+ /**
70
+ * Helper function to add project code to a schema
71
+ *
72
+ * @param schema - The base schema to extend
73
+ * @returns Combined schema with project code
74
+ *
75
+ * @example
76
+ * ```typescript
77
+ * const GetCaseSchema = withProjectCode({
78
+ * id: IdSchema,
79
+ * });
80
+ * // Results in: { code: ProjectCodeSchema, id: IdSchema }
81
+ * ```
82
+ */
83
+ export declare function withProjectCode<T extends z.ZodRawShape>(schema: T): z.ZodObject<{
84
+ code: z.ZodString;
85
+ } & T, "strip", z.ZodTypeAny, z.objectUtil.addQuestionMarks<z.baseObjectOutputType<{
86
+ code: z.ZodString;
87
+ } & T>, any> extends infer T_1 ? { [k in keyof T_1]: T_1[k]; } : never, z.baseObjectInputType<{
88
+ code: z.ZodString;
89
+ } & T> extends infer T_2 ? { [k_1 in keyof T_2]: T_2[k_1]; } : never>;
90
+ /**
91
+ * Helper function to make all fields in a schema optional
92
+ *
93
+ * @param schema - The schema to make partial
94
+ * @returns Schema with all fields optional
95
+ */
96
+ export declare function makePartial<T extends z.ZodObject<z.ZodRawShape>>(schema: T): z.ZodObject<{
97
+ [x: string]: z.ZodOptional<z.ZodTypeAny>;
98
+ }, z.UnknownKeysParam, z.ZodTypeAny, {
99
+ [x: string]: any;
100
+ }, {
101
+ [x: string]: any;
102
+ }>;
103
+ export type Pagination = z.infer<typeof PaginationSchema>;
104
+ export type ProjectCode = z.infer<typeof ProjectCodeSchema>;
105
+ export type EntityId = z.infer<typeof IdSchema>;
106
+ export type Hash = z.infer<typeof HashSchema>;
107
+ //# sourceMappingURL=validation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/utils/validation.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;GAGG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;EAc3B,CAAC;AAEH;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,aAQ+C,CAAC;AAE9E;;GAEG;AACH,eAAO,MAAM,YAAY,4BAAwE,CAAC;AAElG;;GAEG;AACH,eAAO,MAAM,QAAQ,aAAuE,CAAC;AAE7F;;GAEG;AACH,eAAO,MAAM,UAAU,aAAyD,CAAC;AAEjF;;GAEG;AACH,eAAO,MAAM,kBAAkB,6DAGO,CAAC;AAEvC;;;;;;;;;;;;GAYG;AACH,wBAAgB,cAAc,CAAC,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,MAAM,EAAE,CAAC;;;;;;;;;mEAEhE;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,eAAe,CAAC,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,MAAM,EAAE,CAAC;;;;;;sEAKjE;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;;;;;;GAE1E;AAGD,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAC1D,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAC5D,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,QAAQ,CAAC,CAAC;AAChD,MAAM,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC"}
@@ -0,0 +1,104 @@
1
+ /**
2
+ * Validation Utilities
3
+ *
4
+ * Provides reusable Zod schemas and validation helpers for:
5
+ * - Common parameters (pagination, search, etc.)
6
+ * - Qase-specific formats (project codes, IDs, etc.)
7
+ * - Schema composition utilities
8
+ */
9
+ import { z } from 'zod';
10
+ /**
11
+ * Schema for pagination parameters
12
+ * Used across all list operations
13
+ */
14
+ export const PaginationSchema = z.object({
15
+ limit: z
16
+ .number()
17
+ .int()
18
+ .positive()
19
+ .max(100)
20
+ .optional()
21
+ .describe('Maximum number of items to return (default: 10, max: 100)'),
22
+ offset: z
23
+ .number()
24
+ .int()
25
+ .nonnegative()
26
+ .optional()
27
+ .describe('Number of items to skip for pagination (default: 0)'),
28
+ });
29
+ /**
30
+ * Schema for Qase project codes
31
+ * Format: 2-10 uppercase letters, numbers, or underscores
32
+ * Examples: DEMO, TEST, MY_PROJECT, PROJECT_123
33
+ */
34
+ export const ProjectCodeSchema = z
35
+ .string()
36
+ .min(2, 'Project code must be at least 2 characters')
37
+ .max(10, 'Project code must be at most 10 characters')
38
+ .regex(/^[A-Z0-9_]+$/, 'Project code must contain only uppercase letters, numbers, or underscores')
39
+ .describe('Project code (2-10 uppercase letters, numbers, or underscores)');
40
+ /**
41
+ * Schema for search query strings
42
+ */
43
+ export const SearchSchema = z.string().min(1).max(255).optional().describe('Search query string');
44
+ /**
45
+ * Schema for entity IDs (positive integers)
46
+ */
47
+ export const IdSchema = z.number().int().positive().describe('Entity ID (positive integer)');
48
+ /**
49
+ * Schema for hash identifiers (used by some entities like shared steps)
50
+ */
51
+ export const HashSchema = z.string().min(1).max(255).describe('Hash identifier');
52
+ /**
53
+ * Schema for filtering by entity status
54
+ */
55
+ export const StatusFilterSchema = z
56
+ .enum(['active', 'archived', 'deleted'])
57
+ .optional()
58
+ .describe('Filter by entity status');
59
+ /**
60
+ * Helper function to merge a schema with pagination parameters
61
+ *
62
+ * @param schema - The base schema to extend
63
+ * @returns Combined schema with pagination
64
+ *
65
+ * @example
66
+ * ```typescript
67
+ * const ListProjectsSchema = withPagination({
68
+ * search: SearchSchema,
69
+ * });
70
+ * ```
71
+ */
72
+ export function withPagination(schema) {
73
+ return z.object(schema).merge(PaginationSchema);
74
+ }
75
+ /**
76
+ * Helper function to add project code to a schema
77
+ *
78
+ * @param schema - The base schema to extend
79
+ * @returns Combined schema with project code
80
+ *
81
+ * @example
82
+ * ```typescript
83
+ * const GetCaseSchema = withProjectCode({
84
+ * id: IdSchema,
85
+ * });
86
+ * // Results in: { code: ProjectCodeSchema, id: IdSchema }
87
+ * ```
88
+ */
89
+ export function withProjectCode(schema) {
90
+ return z.object({
91
+ code: ProjectCodeSchema,
92
+ ...schema,
93
+ });
94
+ }
95
+ /**
96
+ * Helper function to make all fields in a schema optional
97
+ *
98
+ * @param schema - The schema to make partial
99
+ * @returns Schema with all fields optional
100
+ */
101
+ export function makePartial(schema) {
102
+ return schema.partial();
103
+ }
104
+ //# sourceMappingURL=validation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/utils/validation.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;GAGG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,KAAK,EAAE,CAAC;SACL,MAAM,EAAE;SACR,GAAG,EAAE;SACL,QAAQ,EAAE;SACV,GAAG,CAAC,GAAG,CAAC;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,2DAA2D,CAAC;IACxE,MAAM,EAAE,CAAC;SACN,MAAM,EAAE;SACR,GAAG,EAAE;SACL,WAAW,EAAE;SACb,QAAQ,EAAE;SACV,QAAQ,CAAC,qDAAqD,CAAC;CACnE,CAAC,CAAC;AAEH;;;;GAIG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC;KAC/B,MAAM,EAAE;KACR,GAAG,CAAC,CAAC,EAAE,4CAA4C,CAAC;KACpD,GAAG,CAAC,EAAE,EAAE,4CAA4C,CAAC;KACrD,KAAK,CACJ,cAAc,EACd,2EAA2E,CAC5E;KACA,QAAQ,CAAC,gEAAgE,CAAC,CAAC;AAE9E;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC;AAElG;;GAEG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8BAA8B,CAAC,CAAC;AAE7F;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;AAEjF;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC;KAChC,IAAI,CAAC,CAAC,QAAQ,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;KACvC,QAAQ,EAAE;KACV,QAAQ,CAAC,yBAAyB,CAAC,CAAC;AAEvC;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,cAAc,CAA0B,MAAS;IAC/D,OAAO,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;AAClD,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,eAAe,CAA0B,MAAS;IAChE,OAAO,CAAC,CAAC,MAAM,CAAC;QACd,IAAI,EAAE,iBAAiB;QACvB,GAAG,MAAM;KACV,CAAC,CAAC;AACL,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CAAuC,MAAS;IACzE,OAAO,MAAM,CAAC,OAAO,EAAE,CAAC;AAC1B,CAAC"}
package/package.json ADDED
@@ -0,0 +1,84 @@
1
+ {
2
+ "name": "@qase/mcp-server",
3
+ "version": "1.0.0-beta.1",
4
+ "description": "Official MCP server for Qase Test Management Platform",
5
+ "type": "module",
6
+ "main": "build/index.js",
7
+ "bin": {
8
+ "qase-mcp-server": "build/index.js"
9
+ },
10
+ "license": "MIT",
11
+ "repository": {
12
+ "type": "git",
13
+ "url": "https://github.com/qase-tms/qase-mcp-server.git"
14
+ },
15
+ "keywords": [
16
+ "mcp",
17
+ "qase",
18
+ "testing",
19
+ "test-management",
20
+ "model-context-protocol",
21
+ "test-automation",
22
+ "qa",
23
+ "quality-assurance",
24
+ "test-cases",
25
+ "test-runs",
26
+ "defect-tracking",
27
+ "claude",
28
+ "ai-assistant",
29
+ "llm",
30
+ "anthropic"
31
+ ],
32
+ "author": {
33
+ "name": "Qase",
34
+ "email": "support@qase.io",
35
+ "url": "https://qase.io"
36
+ },
37
+ "homepage": "https://github.com/qase-tms/qase-mcp-server#readme",
38
+ "bugs": {
39
+ "url": "https://github.com/qase-tms/qase-mcp-server/issues",
40
+ "email": "support@qase.io"
41
+ },
42
+ "engines": {
43
+ "node": ">=20.0.0"
44
+ },
45
+ "scripts": {
46
+ "build": "tsc && chmod +x build/index.js",
47
+ "prepare": "husky",
48
+ "watch": "tsc --watch",
49
+ "lint": "eslint src",
50
+ "lint:fix": "eslint src --fix",
51
+ "test": "jest",
52
+ "test:watch": "jest --watch",
53
+ "test:coverage": "jest --coverage",
54
+ "inspector": "npx @modelcontextprotocol/inspector node build/index.js"
55
+ },
56
+ "lint-staged": {
57
+ "src/**/*.ts": [
58
+ "eslint --fix"
59
+ ]
60
+ },
61
+ "dependencies": {
62
+ "@modelcontextprotocol/sdk": "^0.6.0",
63
+ "axios": "^1.7.0",
64
+ "neverthrow": "^8.2.0",
65
+ "qaseio": "^2.4.1",
66
+ "zod": "^3.24.2",
67
+ "zod-to-json-schema": "^3.24.3"
68
+ },
69
+ "devDependencies": {
70
+ "@types/jest": "^29.5.12",
71
+ "@types/node": "^20.11.24",
72
+ "@typescript-eslint/eslint-plugin": "^8.26.1",
73
+ "@typescript-eslint/parser": "^8.26.1",
74
+ "eslint": "^9.22.0",
75
+ "eslint-config-prettier": "^10.1.1",
76
+ "eslint-plugin-prettier": "^5.2.3",
77
+ "husky": "^9.1.7",
78
+ "jest": "^29.7.0",
79
+ "lint-staged": "^16.2.3",
80
+ "prettier": "^3.4.2",
81
+ "ts-jest": "^29.1.2",
82
+ "typescript": "^5.3.3"
83
+ }
84
+ }