@qase/mcp-server 2.3.0 → 2.4.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.
- package/CHANGELOG.md +47 -0
- package/build/index.d.ts +1 -1
- package/build/index.d.ts.map +1 -1
- package/build/index.js +2 -161
- package/build/index.js.map +1 -1
- package/build/operations-v2/composites/ci-report.js +9 -3
- package/build/operations-v2/composites/ci-report.js.map +1 -1
- package/build/operations-v2/composites/regression-run.js +8 -3
- package/build/operations-v2/composites/regression-run.js.map +1 -1
- package/build/operations-v2/composites/triage-defect.js +15 -5
- package/build/operations-v2/composites/triage-defect.js.map +1 -1
- package/build/operations-v2/escape/api.js +27 -5
- package/build/operations-v2/escape/api.js.map +1 -1
- package/build/operations-v2/index.d.ts +2 -0
- package/build/operations-v2/index.d.ts.map +1 -1
- package/build/operations-v2/index.js +2 -0
- package/build/operations-v2/index.js.map +1 -1
- package/build/operations-v2/meta/discover.js +8 -3
- package/build/operations-v2/meta/discover.js.map +1 -1
- package/build/operations-v2/qql/index.js +19 -6
- package/build/operations-v2/qql/index.js.map +1 -1
- package/build/operations-v2/read/get.js +10 -4
- package/build/operations-v2/read/get.js.map +1 -1
- package/build/operations-v2/read/project-context.js +11 -7
- package/build/operations-v2/read/project-context.js.map +1 -1
- package/build/operations-v2/write/attachments.js +17 -8
- package/build/operations-v2/write/attachments.js.map +1 -1
- package/build/operations-v2/write/cases-bulk.js +9 -5
- package/build/operations-v2/write/cases-bulk.js.map +1 -1
- package/build/operations-v2/write/cases.js +16 -6
- package/build/operations-v2/write/cases.js.map +1 -1
- package/build/operations-v2/write/custom-fields.d.ts +2 -0
- package/build/operations-v2/write/custom-fields.d.ts.map +1 -0
- package/build/operations-v2/write/custom-fields.js +226 -0
- package/build/operations-v2/write/custom-fields.js.map +1 -0
- package/build/operations-v2/write/defects.js +26 -4
- package/build/operations-v2/write/defects.js.map +1 -1
- package/build/operations-v2/write/environments.js +11 -3
- package/build/operations-v2/write/environments.js.map +1 -1
- package/build/operations-v2/write/external-issues.js +7 -5
- package/build/operations-v2/write/external-issues.js.map +1 -1
- package/build/operations-v2/write/milestones.js +10 -3
- package/build/operations-v2/write/milestones.js.map +1 -1
- package/build/operations-v2/write/plans.js +11 -3
- package/build/operations-v2/write/plans.js.map +1 -1
- package/build/operations-v2/write/projects.d.ts +2 -0
- package/build/operations-v2/write/projects.d.ts.map +1 -0
- package/build/operations-v2/write/projects.js +77 -0
- package/build/operations-v2/write/projects.js.map +1 -0
- package/build/operations-v2/write/results.js +15 -4
- package/build/operations-v2/write/results.js.map +1 -1
- package/build/operations-v2/write/reviews.js +28 -13
- package/build/operations-v2/write/reviews.js.map +1 -1
- package/build/operations-v2/write/runs.js +20 -3
- package/build/operations-v2/write/runs.js.map +1 -1
- package/build/operations-v2/write/shared-steps.js +11 -3
- package/build/operations-v2/write/shared-steps.js.map +1 -1
- package/build/operations-v2/write/suites.js +17 -5
- package/build/operations-v2/write/suites.js.map +1 -1
- package/build/server-instructions.d.ts +9 -0
- package/build/server-instructions.d.ts.map +1 -0
- package/build/server-instructions.js +21 -0
- package/build/server-instructions.js.map +1 -0
- package/build/server.d.ts +18 -0
- package/build/server.d.ts.map +1 -0
- package/build/server.js +181 -0
- package/build/server.js.map +1 -0
- package/build/transports/sse.d.ts.map +1 -1
- package/build/transports/sse.js +7 -2
- package/build/transports/sse.js.map +1 -1
- package/build/transports/streamableHttp.d.ts.map +1 -1
- package/build/transports/streamableHttp.js +3 -1
- package/build/transports/streamableHttp.js.map +1 -1
- package/build/utils/case-enums.d.ts +6 -0
- package/build/utils/case-enums.d.ts.map +1 -1
- package/build/utils/case-enums.js +11 -3
- package/build/utils/case-enums.js.map +1 -1
- package/build/utils/registry.d.ts.map +1 -1
- package/build/utils/registry.js +11 -3
- package/build/utils/registry.js.map +1 -1
- package/build/utils/server-context.d.ts +26 -6
- package/build/utils/server-context.d.ts.map +1 -1
- package/build/utils/server-context.js +37 -26
- package/build/utils/server-context.js.map +1 -1
- package/build/version.d.ts +1 -1
- package/build/version.js +1 -1
- package/package.json +2 -2
- package/server.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/utils/registry.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/utils/registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
*/
|
|
10
10
|
import { AsyncLocalStorage } from 'async_hooks';
|
|
11
11
|
import type { Server } from '@modelcontextprotocol/sdk/server/index.js';
|
|
12
|
+
import type { RequestId } from '@modelcontextprotocol/sdk/types.js';
|
|
12
13
|
/**
|
|
13
14
|
* Per-request server storage.
|
|
14
15
|
* Holds the Server instance for the current request context.
|
|
@@ -52,14 +53,33 @@ export declare const serverStorage: AsyncLocalStorage<Server<{
|
|
|
52
53
|
* Returns undefined if called outside of a serverStorage.run() scope.
|
|
53
54
|
*/
|
|
54
55
|
export declare function getServer(): Server | undefined;
|
|
56
|
+
/** Why a destructive action was refused. */
|
|
57
|
+
export type RefusalReason =
|
|
58
|
+
/** The client cannot show a confirmation prompt at all. */
|
|
59
|
+
'unsupported'
|
|
60
|
+
/** The prompt was sent but no answer came back (dropped, timed out). */
|
|
61
|
+
| 'undeliverable'
|
|
62
|
+
/** The human saw the prompt and said no. */
|
|
63
|
+
| 'declined';
|
|
64
|
+
/** Outcome of the destructive-action gate. */
|
|
65
|
+
export type DestructiveConfirmation = {
|
|
66
|
+
allowed: true;
|
|
67
|
+
} | {
|
|
68
|
+
allowed: false;
|
|
69
|
+
reason: RefusalReason;
|
|
70
|
+
};
|
|
55
71
|
/**
|
|
56
72
|
* Ask the user to confirm a destructive action via MCP elicitation.
|
|
57
73
|
*
|
|
58
|
-
*
|
|
59
|
-
*
|
|
60
|
-
*
|
|
61
|
-
*
|
|
62
|
-
*
|
|
74
|
+
* Fail-closed: the action proceeds only on an explicit yes. Anything else —
|
|
75
|
+
* no server, no elicitation capability, an undelivered prompt, a decline —
|
|
76
|
+
* refuses and names the reason, so the caller can say what happened.
|
|
77
|
+
*
|
|
78
|
+
* `relatedRequestId` is what makes the prompt arrive: without it the SDK sends
|
|
79
|
+
* the request on the standalone SSE stream (opened by `GET /mcp`), which MCP
|
|
80
|
+
* clients do not open, and the prompt is silently dropped.
|
|
63
81
|
*/
|
|
64
|
-
export declare function confirmDestructiveAction(toolName: string, args: Record<string, unknown
|
|
82
|
+
export declare function confirmDestructiveAction(toolName: string, args: Record<string, unknown>, relatedRequestId?: RequestId): Promise<DestructiveConfirmation>;
|
|
83
|
+
/** Human-readable explanation for a refused destructive action. */
|
|
84
|
+
export declare function describeRefusal(toolName: string, reason: RefusalReason): string;
|
|
65
85
|
//# sourceMappingURL=server-context.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server-context.d.ts","sourceRoot":"","sources":["../../src/utils/server-context.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;
|
|
1
|
+
{"version":3,"file":"server-context.d.ts","sourceRoot":"","sources":["../../src/utils/server-context.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACxE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oCAAoC,CAAC;AAEpE;;;GAGG;AACH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAAkC,CAAC;AAE7D;;;GAGG;AACH,wBAAgB,SAAS,IAAI,MAAM,GAAG,SAAS,CAE9C;AAED,4CAA4C;AAC5C,MAAM,MAAM,aAAa;AACvB,2DAA2D;AACzD,aAAa;AACf,wEAAwE;GACtE,eAAe;AACjB,4CAA4C;GAC1C,UAAU,CAAC;AAEf,8CAA8C;AAC9C,MAAM,MAAM,uBAAuB,GAAG;IAAE,OAAO,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,OAAO,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,aAAa,CAAA;CAAE,CAAC;AAIpG;;;;;;;;;;GAUG;AACH,wBAAsB,wBAAwB,CAC5C,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,gBAAgB,CAAC,EAAE,SAAS,GAC3B,OAAO,CAAC,uBAAuB,CAAC,CAiClC;AAED,mEAAmE;AACnE,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,MAAM,CAgB/E"}
|
|
@@ -20,48 +20,59 @@ export const serverStorage = new AsyncLocalStorage();
|
|
|
20
20
|
export function getServer() {
|
|
21
21
|
return serverStorage.getStore();
|
|
22
22
|
}
|
|
23
|
+
const REFUSED_UNSUPPORTED = { allowed: false, reason: 'unsupported' };
|
|
23
24
|
/**
|
|
24
25
|
* Ask the user to confirm a destructive action via MCP elicitation.
|
|
25
26
|
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
*
|
|
27
|
+
* Fail-closed: the action proceeds only on an explicit yes. Anything else —
|
|
28
|
+
* no server, no elicitation capability, an undelivered prompt, a decline —
|
|
29
|
+
* refuses and names the reason, so the caller can say what happened.
|
|
30
|
+
*
|
|
31
|
+
* `relatedRequestId` is what makes the prompt arrive: without it the SDK sends
|
|
32
|
+
* the request on the standalone SSE stream (opened by `GET /mcp`), which MCP
|
|
33
|
+
* clients do not open, and the prompt is silently dropped.
|
|
31
34
|
*/
|
|
32
|
-
export async function confirmDestructiveAction(toolName, args) {
|
|
35
|
+
export async function confirmDestructiveAction(toolName, args, relatedRequestId) {
|
|
33
36
|
const server = getServer();
|
|
34
37
|
if (!server)
|
|
35
|
-
return
|
|
38
|
+
return REFUSED_UNSUPPORTED;
|
|
36
39
|
// Check if the client supports elicitation
|
|
37
40
|
const caps = server.getClientCapabilities();
|
|
38
41
|
if (!caps?.elicitation)
|
|
39
|
-
return
|
|
42
|
+
return REFUSED_UNSUPPORTED;
|
|
40
43
|
try {
|
|
41
44
|
const argsPreview = Object.entries(args)
|
|
42
45
|
.map(([k, v]) => ` ${k}: ${JSON.stringify(v)}`)
|
|
43
46
|
.join('\n');
|
|
44
47
|
const result = await server.elicitInput({
|
|
45
|
-
message: `Confirm destructive action: ${toolName}\n\n${argsPreview}
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
},
|
|
55
|
-
},
|
|
56
|
-
required: ['confirm'],
|
|
57
|
-
},
|
|
58
|
-
});
|
|
59
|
-
return result.action === 'accept' && result.content?.confirm === true;
|
|
48
|
+
message: `Confirm destructive action: ${toolName}\n\n${argsPreview}\n\n` +
|
|
49
|
+
'This permanently deletes the resource and cannot be undone.',
|
|
50
|
+
// No fields to fill in: accepting the prompt is the confirmation, and
|
|
51
|
+
// the client's own decline button is the refusal. A checkbox on top of
|
|
52
|
+
// that only produced false refusals — people accepted the dialog and
|
|
53
|
+
// left the box at its default.
|
|
54
|
+
requestedSchema: { type: 'object', properties: {} },
|
|
55
|
+
}, relatedRequestId === undefined ? undefined : { relatedRequestId });
|
|
56
|
+
return result.action === 'accept' ? { allowed: true } : { allowed: false, reason: 'declined' };
|
|
60
57
|
}
|
|
61
58
|
catch (error) {
|
|
62
|
-
//
|
|
63
|
-
console.error('[Server] Elicitation failed,
|
|
64
|
-
return
|
|
59
|
+
// The prompt never came back — refuse rather than delete unconfirmed.
|
|
60
|
+
console.error('[Server] Elicitation failed, refusing destructive action:', error);
|
|
61
|
+
return { allowed: false, reason: 'undeliverable' };
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
/** Human-readable explanation for a refused destructive action. */
|
|
65
|
+
export function describeRefusal(toolName, reason) {
|
|
66
|
+
switch (reason) {
|
|
67
|
+
case 'unsupported':
|
|
68
|
+
return (`Refused "${toolName}": destructive actions need confirmation, and this client ` +
|
|
69
|
+
`does not support MCP elicitation, so it cannot be asked for. Use a client that ` +
|
|
70
|
+
`declares the elicitation capability, or perform the deletion in the Qase UI.`);
|
|
71
|
+
case 'undeliverable':
|
|
72
|
+
return (`Refused "${toolName}": the confirmation prompt was not answered, so the action ` +
|
|
73
|
+
`was not confirmed. Nothing was deleted. Retry and answer the prompt.`);
|
|
74
|
+
case 'declined':
|
|
75
|
+
return `Action "${toolName}" declined by the user. Nothing was deleted.`;
|
|
65
76
|
}
|
|
66
77
|
}
|
|
67
78
|
//# sourceMappingURL=server-context.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server-context.js","sourceRoot":"","sources":["../../src/utils/server-context.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"server-context.js","sourceRoot":"","sources":["../../src/utils/server-context.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAIhD;;;GAGG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,iBAAiB,EAAU,CAAC;AAE7D;;;GAGG;AACH,MAAM,UAAU,SAAS;IACvB,OAAO,aAAa,CAAC,QAAQ,EAAE,CAAC;AAClC,CAAC;AAcD,MAAM,mBAAmB,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,aAAa,EAAW,CAAC;AAE/E;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,QAAgB,EAChB,IAA6B,EAC7B,gBAA4B;IAE5B,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,IAAI,CAAC,MAAM;QAAE,OAAO,mBAAmB,CAAC;IAExC,2CAA2C;IAC3C,MAAM,IAAI,GAAG,MAAM,CAAC,qBAAqB,EAAE,CAAC;IAC5C,IAAI,CAAC,IAAI,EAAE,WAAW;QAAE,OAAO,mBAAmB,CAAC;IAEnD,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;aACrC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;aAC/C,IAAI,CAAC,IAAI,CAAC,CAAC;QAEd,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,WAAW,CACrC;YACE,OAAO,EACL,+BAA+B,QAAQ,OAAO,WAAW,MAAM;gBAC/D,6DAA6D;YAC/D,sEAAsE;YACtE,uEAAuE;YACvE,qEAAqE;YACrE,+BAA+B;YAC/B,eAAe,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE;SACpD,EACD,gBAAgB,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,CAClE,CAAC;QAEF,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;IACjG,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,sEAAsE;QACtE,OAAO,CAAC,KAAK,CAAC,2DAA2D,EAAE,KAAK,CAAC,CAAC;QAClF,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC;IACrD,CAAC;AACH,CAAC;AAED,mEAAmE;AACnE,MAAM,UAAU,eAAe,CAAC,QAAgB,EAAE,MAAqB;IACrE,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,aAAa;YAChB,OAAO,CACL,YAAY,QAAQ,4DAA4D;gBAChF,iFAAiF;gBACjF,8EAA8E,CAC/E,CAAC;QACJ,KAAK,eAAe;YAClB,OAAO,CACL,YAAY,QAAQ,6DAA6D;gBACjF,sEAAsE,CACvE,CAAC;QACJ,KAAK,UAAU;YACb,OAAO,WAAW,QAAQ,8CAA8C,CAAC;IAC7E,CAAC;AACH,CAAC"}
|
package/build/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const VERSION = "2.
|
|
1
|
+
export declare const VERSION = "2.4.0";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
package/build/version.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@qase/mcp-server",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.4.0",
|
|
4
4
|
"mcpName": "io.qase/mcp-server",
|
|
5
5
|
"description": "Official MCP server for Qase Test Management Platform",
|
|
6
6
|
"type": "module",
|
|
@@ -69,7 +69,7 @@
|
|
|
69
69
|
"dependencies": {
|
|
70
70
|
"@modelcontextprotocol/sdk": "^1.26.0",
|
|
71
71
|
"axios": "^1.13.5",
|
|
72
|
-
"express": "^
|
|
72
|
+
"express": "^5.2.1",
|
|
73
73
|
"form-data": "^4.0.5",
|
|
74
74
|
"jose": "^6.1.3",
|
|
75
75
|
"lru-cache": "^11.3.5",
|
package/server.json
CHANGED
|
@@ -8,12 +8,12 @@
|
|
|
8
8
|
"url": "https://github.com/qase-tms/qase-mcp-server",
|
|
9
9
|
"source": "github"
|
|
10
10
|
},
|
|
11
|
-
"version": "2.
|
|
11
|
+
"version": "2.4.0",
|
|
12
12
|
"packages": [
|
|
13
13
|
{
|
|
14
14
|
"registryType": "npm",
|
|
15
15
|
"identifier": "@qase/mcp-server",
|
|
16
|
-
"version": "2.
|
|
16
|
+
"version": "2.4.0",
|
|
17
17
|
"transport": {
|
|
18
18
|
"type": "stdio"
|
|
19
19
|
},
|