@qase/mcp-server 2.2.0 → 2.2.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.
- package/CHANGELOG.md +10 -0
- package/build/client/index.d.ts.map +1 -1
- package/build/client/index.js +27 -4
- package/build/client/index.js.map +1 -1
- package/build/utils/test-helpers.d.ts.map +1 -1
- package/build/utils/test-helpers.js +1 -0
- package/build/utils/test-helpers.js.map +1 -1
- package/build/version.d.ts +1 -1
- package/build/version.js +1 -1
- package/docs/self-run.md +18 -0
- package/docs/troubleshooting.md +16 -2
- package/package.json +1 -1
- package/server.json +8 -2
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,16 @@ All notable changes to this project will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [2.2.1]
|
|
9
|
+
|
|
10
|
+
### Fixed
|
|
11
|
+
|
|
12
|
+
- **Requests were attributed to the SDK instead of the MCP server.** The `User-Agent` was set as an axios instance default, but `qase-api-client` puts its own `qase-api-client-js/<version>` into `Configuration.baseOptions`, and the generated code merges those headers over the instance defaults. Every call made through the SDK — which is all of them except the `qase_api` escape hatch — therefore reached Qase as `qase-api-client-js/1.1.14`, so neither the MCP source nor the split between self-run (`qase-mcp`) and hosted (`qase-mcp-hosted`) was visible in metrics. The header is now set in a request interceptor, which runs after that merge, and is covered by tests that assert what a real HTTP server receives.
|
|
13
|
+
|
|
14
|
+
### Added
|
|
15
|
+
|
|
16
|
+
- **`QASE_API_PROTOCOL`** — the scheme used to reach `QASE_API_DOMAIN`, defaulting to `https`. Requests were previously hardcoded to HTTPS, so a self-hosted or on-premise Qase API served over plain HTTP could not be reached at all: `QASE_API_DOMAIN` takes a bare domain and rejects anything carrying a scheme. Only `http` and `https` are recognised (case-insensitive, with or without a trailing `://`); any other value falls back to `https`, so a typo cannot silently downgrade the connection. Existing setups are unaffected. See [docs/self-run.md](docs/self-run.md#self-hosted-deployments-over-plain-http).
|
|
17
|
+
|
|
8
18
|
## [2.2.0]
|
|
9
19
|
|
|
10
20
|
### Changed
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAEL,WAAW,EACX,QAAQ,EACR,SAAS,EACT,OAAO,EACP,UAAU,EACV,QAAQ,EACR,aAAa,EACb,UAAU,EACV,eAAe,EACf,cAAc,EACd,cAAc,EACd,UAAU,EACV,eAAe,EACf,SAAS,EACT,iBAAiB,EACjB,eAAe,EACf,QAAQ,EACR,mBAAmB,EACnB,UAAU,EACX,MAAM,iBAAiB,CAAC;AACzB,OAAc,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,OAAO,CAAC;AAQjE;;;;GAIG;AACH,wBAAgB,YAAY,IAAI,MAAM,CAGrC;AAED;;GAEG;AACH,UAAU,eAAe;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,cAAM,aAAa;IACjB,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC;IAC/B,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC;IACzB,QAAQ,CAAC,UAAU,EAAE,aAAa,CAAC;IACnC,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,eAAe,CAAC;IACtC,QAAQ,CAAC,WAAW,EAAE,cAAc,CAAC;IACrC,QAAQ,CAAC,WAAW,EAAE,cAAc,CAAC;IACrC,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC;IAC7B,QAAQ,CAAC,YAAY,EAAE,eAAe,CAAC;IACvC,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IAC3B,QAAQ,CAAC,cAAc,EAAE,iBAAiB,CAAC;IAC3C,QAAQ,CAAC,YAAY,EAAE,eAAe,CAAC;IACvC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC;IACzB,QAAQ,CAAC,gBAAgB,EAAE,mBAAmB,CAAC;IAC/C,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC;IAE7B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgB;gBAElC,MAAM,EAAE,eAAe,EAAE,aAAa,CAAC,EAAE,aAAa;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAEL,WAAW,EACX,QAAQ,EACR,SAAS,EACT,OAAO,EACP,UAAU,EACV,QAAQ,EACR,aAAa,EACb,UAAU,EACV,eAAe,EACf,cAAc,EACd,cAAc,EACd,UAAU,EACV,eAAe,EACf,SAAS,EACT,iBAAiB,EACjB,eAAe,EACf,QAAQ,EACR,mBAAmB,EACnB,UAAU,EACX,MAAM,iBAAiB,CAAC;AACzB,OAAc,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,OAAO,CAAC;AAQjE;;;;GAIG;AACH,wBAAgB,YAAY,IAAI,MAAM,CAGrC;AAED;;GAEG;AACH,UAAU,eAAe;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,cAAM,aAAa;IACjB,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC;IAC/B,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC;IACzB,QAAQ,CAAC,UAAU,EAAE,aAAa,CAAC;IACnC,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,eAAe,CAAC;IACtC,QAAQ,CAAC,WAAW,EAAE,cAAc,CAAC;IACrC,QAAQ,CAAC,WAAW,EAAE,cAAc,CAAC;IACrC,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC;IAC7B,QAAQ,CAAC,YAAY,EAAE,eAAe,CAAC;IACvC,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IAC3B,QAAQ,CAAC,cAAc,EAAE,iBAAiB,CAAC;IAC3C,QAAQ,CAAC,YAAY,EAAE,eAAe,CAAC;IACvC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC;IACzB,QAAQ,CAAC,gBAAgB,EAAE,mBAAmB,CAAC;IAC/C,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC;IAE7B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgB;gBAElC,MAAM,EAAE,eAAe,EAAE,aAAa,CAAC,EAAE,aAAa;IA6ElE;;OAEG;IACG,OAAO,CAAC,CAAC,GAAG,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,kBAAuB,GAAG,OAAO,CAAC,CAAC,CAAC;CAoBnF;AA8CD;;;;;;;;;;GAUG;AACH,wBAAgB,YAAY,IAAI,aAAa,CAY5C;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,IAAI,CAE1C;AAED,OAAO,EAAE,aAAa,EAAE,CAAC"}
|
package/build/client/index.js
CHANGED
|
@@ -55,9 +55,18 @@ class QaseApiClient {
|
|
|
55
55
|
this.host = config.host;
|
|
56
56
|
const jwtToken = isJwt(config.token);
|
|
57
57
|
const agent = createKeepAliveAgent({ maxSockets: 20 });
|
|
58
|
-
this.axiosInstance =
|
|
59
|
-
|
|
60
|
-
|
|
58
|
+
this.axiosInstance = axiosInstance ?? axios.create({ httpsAgent: agent });
|
|
59
|
+
// The generated SDK puts its own `User-Agent: qase-api-client-js/x.y.z` into
|
|
60
|
+
// Configuration.baseOptions, and the generator merges those headers over the
|
|
61
|
+
// axios instance defaults — so setting the source as a default silently loses
|
|
62
|
+
// to it on every SDK call, leaving only the qase_api escape hatch correctly
|
|
63
|
+
// attributed. A request interceptor runs after that merge, so it is the one
|
|
64
|
+
// place the header can be asserted for both paths.
|
|
65
|
+
this.axiosInstance.interceptors.request.use((req) => {
|
|
66
|
+
req.headers = req.headers ?? {};
|
|
67
|
+
req.headers['User-Agent'] = getUserAgent();
|
|
68
|
+
return req;
|
|
69
|
+
});
|
|
61
70
|
// For JWTs, forward verbatim as Authorization: Bearer on every request.
|
|
62
71
|
// Opaque tokens keep using the Qase `Token` header via Configuration.apiKey.
|
|
63
72
|
if (jwtToken) {
|
|
@@ -132,6 +141,11 @@ class QaseApiClient {
|
|
|
132
141
|
}
|
|
133
142
|
/**
|
|
134
143
|
* Get validated API host from QASE_API_DOMAIN env var.
|
|
144
|
+
*
|
|
145
|
+
* The scheme comes from QASE_API_PROTOCOL and defaults to https; it exists so a
|
|
146
|
+
* self-hosted API served over plain HTTP (http://api.qase.lo) can be reached.
|
|
147
|
+
* A non-default port belongs in the domain (api.qase.lo:8080) — only `://` and
|
|
148
|
+
* paths are rejected here.
|
|
135
149
|
*/
|
|
136
150
|
function getHost() {
|
|
137
151
|
const domain = process.env.QASE_API_DOMAIN || 'api.qase.io';
|
|
@@ -139,7 +153,16 @@ function getHost() {
|
|
|
139
153
|
throw new Error('QASE_API_DOMAIN should only contain the domain name (e.g., api.qase.io), ' +
|
|
140
154
|
'not the full URL with protocol or path');
|
|
141
155
|
}
|
|
142
|
-
return
|
|
156
|
+
return `${getProtocol()}://${domain}`;
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Scheme for API requests. Accepts `http` or `https`, with or without the `://`
|
|
160
|
+
* suffix; anything else falls back to https rather than failing, so a typo can
|
|
161
|
+
* never downgrade the connection to something unexpected.
|
|
162
|
+
*/
|
|
163
|
+
function getProtocol() {
|
|
164
|
+
const protocol = process.env.QASE_API_PROTOCOL?.trim().toLowerCase().replace(/:\/*$/, '');
|
|
165
|
+
return protocol === 'http' ? 'http' : 'https';
|
|
143
166
|
}
|
|
144
167
|
/**
|
|
145
168
|
* Get full API client config (token + host).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EACL,aAAa,EACb,WAAW,EACX,QAAQ,EACR,SAAS,EACT,OAAO,EACP,UAAU,EACV,QAAQ,EACR,aAAa,EACb,UAAU,EACV,eAAe,EACf,cAAc,EACd,cAAc,EACd,UAAU,EACV,eAAe,EACf,SAAS,EACT,iBAAiB,EACjB,eAAe,EACf,QAAQ,EACR,mBAAmB,EACnB,UAAU,GACX,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAA4C,MAAM,OAAO,CAAC;AACjE,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAC3F,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAC9C,OAAO,QAAQ,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAClF,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAExC;;;;GAIG;AACH,MAAM,UAAU,YAAY;IAC1B,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,IAAI,EAAE,IAAI,UAAU,CAAC;IACjE,OAAO,GAAG,MAAM,IAAI,OAAO,EAAE,CAAC;AAChC,CAAC;AAUD;;GAEG;AACH,MAAM,aAAa;IACR,QAAQ,CAAc;IACtB,KAAK,CAAW;IAChB,MAAM,CAAY;IAClB,IAAI,CAAU;IACd,OAAO,CAAa;IACpB,KAAK,CAAW;IAChB,UAAU,CAAgB;IAC1B,OAAO,CAAa;IACpB,WAAW,CAAkB;IAC7B,WAAW,CAAiB;IAC5B,WAAW,CAAiB;IAC5B,OAAO,CAAa;IACpB,YAAY,CAAkB;IAC9B,MAAM,CAAY;IAClB,cAAc,CAAoB;IAClC,YAAY,CAAkB;IAC9B,KAAK,CAAW;IAChB,gBAAgB,CAAsB;IACtC,OAAO,CAAa;IAEZ,KAAK,CAAS;IACd,IAAI,CAAS;IACb,aAAa,CAAgB;IAE9C,YAAY,MAAuB,EAAE,aAA6B;QAChE,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAC1B,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QAExB,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAErC,MAAM,KAAK,GAAG,oBAAoB,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,CAAC;QACvD,IAAI,CAAC,aAAa
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-helpers.d.ts","sourceRoot":"","sources":["../../src/utils/test-helpers.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD;;GAEG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;;;;;GAOxC;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,kBAS/D;AAED;;GAEG;AACH,wBAAgB,UAAU,SAGzB;AAED;;GAEG;AACH,wBAAgB,YAAY,
|
|
1
|
+
{"version":3,"file":"test-helpers.d.ts","sourceRoot":"","sources":["../../src/utils/test-helpers.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD;;GAEG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;;;;;GAOxC;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,kBAS/D;AAED;;GAEG;AACH,wBAAgB,UAAU,SAGzB;AAED;;GAEG;AACH,wBAAgB,YAAY,SAI3B;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAiDzE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-helpers.js","sourceRoot":"","sources":["../../src/utils/test-helpers.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH;;GAEG;AACH,MAAM,UAAU,cAAc,CAAI,IAAO;IACvC,OAAO,OAAO,CAAC,OAAO,CAAC;QACrB,IAAI,EAAE;YACJ,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,IAAI;SACb;KACF,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,UAAkB,EAAE,OAAe;IAC9D,MAAM,KAAK,GAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;IACtC,KAAK,CAAC,QAAQ,GAAG;QACf,MAAM,EAAE,UAAU;QAClB,IAAI,EAAE;YACJ,YAAY,EAAE,OAAO;SACtB;KACF,CAAC;IACF,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC/B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU;IACxB,OAAO,CAAC,GAAG,CAAC,cAAc,GAAG,gBAAgB,CAAC;IAC9C,OAAO,CAAC,GAAG,CAAC,eAAe,GAAG,aAAa,CAAC;AAC9C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY;IAC1B,OAAO,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;IAClC,OAAO,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"test-helpers.js","sourceRoot":"","sources":["../../src/utils/test-helpers.ts"],"names":[],"mappings":"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"}
|
package/build/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const VERSION = "2.2.
|
|
1
|
+
export declare const VERSION = "2.2.1";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
package/build/version.js
CHANGED
package/docs/self-run.md
CHANGED
|
@@ -43,6 +43,9 @@ QASE_API_TOKEN=your_api_token_here
|
|
|
43
43
|
|
|
44
44
|
# Optional: Custom API domain for enterprise customers
|
|
45
45
|
QASE_API_DOMAIN=api.qase.io
|
|
46
|
+
|
|
47
|
+
# Optional: Scheme used to reach that domain — http or https (default: https)
|
|
48
|
+
QASE_API_PROTOCOL=https
|
|
46
49
|
```
|
|
47
50
|
|
|
48
51
|
Get your API token from: https://app.qase.io/user/api/token
|
|
@@ -55,6 +58,21 @@ If you're using Qase Enterprise with a custom domain:
|
|
|
55
58
|
QASE_API_DOMAIN=api.yourcompany.qase.io
|
|
56
59
|
```
|
|
57
60
|
|
|
61
|
+
`QASE_API_DOMAIN` takes the domain only — no scheme, no path. `https://api.yourcompany.qase.io` or `api.yourcompany.qase.io/v1` are rejected with an error.
|
|
62
|
+
|
|
63
|
+
### Self-Hosted Deployments over Plain HTTP
|
|
64
|
+
|
|
65
|
+
Requests go over HTTPS by default. If your self-hosted or on-premise Qase API is served over plain HTTP — typically a local or internal-network install without a certificate — set the scheme separately:
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
QASE_API_DOMAIN=api.qase.lo
|
|
69
|
+
QASE_API_PROTOCOL=http
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
Only `http` and `https` are recognised (case-insensitive, with or without a trailing `://`). Any other value falls back to `https`, so a typo cannot silently downgrade the connection. A non-default port belongs in `QASE_API_DOMAIN` — `api.qase.lo:8080`.
|
|
73
|
+
|
|
74
|
+
Use `http` only for deployments you control on a trusted network: the API token travels in a request header, unencrypted, on every call.
|
|
75
|
+
|
|
58
76
|
## Client Setup (stdio)
|
|
59
77
|
|
|
60
78
|
### Claude Desktop
|
package/docs/troubleshooting.md
CHANGED
|
@@ -113,8 +113,22 @@ To find your certificate:
|
|
|
113
113
|
|
|
114
114
|
**Solution**:
|
|
115
115
|
1. Ensure `QASE_API_DOMAIN` is set to just the domain (e.g., `api.company.qase.io`)
|
|
116
|
-
2. Don't include `https://` or `/v1` in the domain
|
|
117
|
-
3.
|
|
116
|
+
2. Don't include `https://` or `/v1` in the domain — the scheme goes in `QASE_API_PROTOCOL` instead (see below), and the API version is appended by the server
|
|
117
|
+
3. A non-default port does belong in the domain: `api.company.qase.io:8080`
|
|
118
|
+
4. Verify with your Qase administrator
|
|
119
|
+
|
|
120
|
+
## Self-Hosted API Served over Plain HTTP
|
|
121
|
+
|
|
122
|
+
**Error**: connection or TLS errors against a self-hosted Qase API that has no certificate
|
|
123
|
+
|
|
124
|
+
**Solution**: requests default to HTTPS. For a self-hosted or on-premise deployment served over plain HTTP, set the scheme separately:
|
|
125
|
+
|
|
126
|
+
```bash
|
|
127
|
+
QASE_API_DOMAIN=api.qase.lo
|
|
128
|
+
QASE_API_PROTOCOL=http
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
Only `http` and `https` are recognised; any other value falls back to `https`, so check for a typo if the scheme appears to be ignored. Use `http` only on a trusted network — the API token is sent unencrypted in a request header.
|
|
118
132
|
|
|
119
133
|
## No Tools Showing in MCP Client
|
|
120
134
|
|
package/package.json
CHANGED
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.2.
|
|
11
|
+
"version": "2.2.1",
|
|
12
12
|
"packages": [
|
|
13
13
|
{
|
|
14
14
|
"registryType": "npm",
|
|
15
15
|
"identifier": "@qase/mcp-server",
|
|
16
|
-
"version": "2.2.
|
|
16
|
+
"version": "2.2.1",
|
|
17
17
|
"transport": {
|
|
18
18
|
"type": "stdio"
|
|
19
19
|
},
|
|
@@ -29,6 +29,12 @@
|
|
|
29
29
|
"description": "Custom API domain for enterprise (default: api.qase.io)",
|
|
30
30
|
"isRequired": false,
|
|
31
31
|
"default": "api.qase.io"
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
"name": "QASE_API_PROTOCOL",
|
|
35
|
+
"description": "Scheme used to reach the API domain: http or https. Use http only for self-hosted deployments served without TLS (default: https)",
|
|
36
|
+
"isRequired": false,
|
|
37
|
+
"default": "https"
|
|
32
38
|
}
|
|
33
39
|
]
|
|
34
40
|
}
|