qyl-mcp-server 0.1.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/LICENSE +21 -0
- package/README.md +41 -0
- package/dist/atomic-json-store.d.ts +37 -0
- package/dist/atomic-json-store.js +143 -0
- package/dist/atomic-json-store.js.map +1 -0
- package/dist/ci.d.ts +51 -0
- package/dist/ci.js +158 -0
- package/dist/ci.js.map +1 -0
- package/dist/collector.d.ts +43 -0
- package/dist/collector.js +163 -0
- package/dist/collector.js.map +1 -0
- package/dist/config.d.ts +14 -0
- package/dist/config.js +39 -0
- package/dist/config.js.map +1 -0
- package/dist/contract-validation.d.ts +146 -0
- package/dist/contract-validation.js +350 -0
- package/dist/contract-validation.js.map +1 -0
- package/dist/data.d.ts +46 -0
- package/dist/data.js +138 -0
- package/dist/data.js.map +1 -0
- package/dist/demo.d.ts +23 -0
- package/dist/demo.js +836 -0
- package/dist/demo.js.map +1 -0
- package/dist/execution-evidence.d.ts +13 -0
- package/dist/execution-evidence.js +81 -0
- package/dist/execution-evidence.js.map +1 -0
- package/dist/execution-result.d.ts +5 -0
- package/dist/execution-result.js +17 -0
- package/dist/execution-result.js.map +1 -0
- package/dist/http-security.d.ts +36 -0
- package/dist/http-security.js +101 -0
- package/dist/http-security.js.map +1 -0
- package/dist/log-body.d.ts +3 -0
- package/dist/log-body.js +12 -0
- package/dist/log-body.js.map +1 -0
- package/dist/main.d.ts +51 -0
- package/dist/main.js +215 -0
- package/dist/main.js.map +1 -0
- package/dist/mcp-app.html +218 -0
- package/dist/mcp-dashboard.html +223 -0
- package/dist/mcp-errors.d.ts +5 -0
- package/dist/mcp-errors.js +15 -0
- package/dist/mcp-errors.js.map +1 -0
- package/dist/mcp-semconv.d.ts +68 -0
- package/dist/mcp-semconv.js +208 -0
- package/dist/mcp-semconv.js.map +1 -0
- package/dist/native-execution.d.ts +132 -0
- package/dist/native-execution.js +508 -0
- package/dist/native-execution.js.map +1 -0
- package/dist/observability-suppression.d.ts +8 -0
- package/dist/observability-suppression.js +15 -0
- package/dist/observability-suppression.js.map +1 -0
- package/dist/secret-redactor.d.ts +30 -0
- package/dist/secret-redactor.js +255 -0
- package/dist/secret-redactor.js.map +1 -0
- package/dist/server.d.ts +25 -0
- package/dist/server.js +207 -0
- package/dist/server.js.map +1 -0
- package/dist/stats.d.ts +18 -0
- package/dist/stats.js +141 -0
- package/dist/stats.js.map +1 -0
- package/dist/summaries.d.ts +14 -0
- package/dist/summaries.js +128 -0
- package/dist/summaries.js.map +1 -0
- package/dist/telemetry-redaction.d.ts +6 -0
- package/dist/telemetry-redaction.js +28 -0
- package/dist/telemetry-redaction.js.map +1 -0
- package/dist/telemetry.d.ts +72 -0
- package/dist/telemetry.js +362 -0
- package/dist/telemetry.js.map +1 -0
- package/dist/tools.d.ts +17 -0
- package/dist/tools.js +111 -0
- package/dist/tools.js.map +1 -0
- package/dist/wire.d.ts +10 -0
- package/dist/wire.js +7 -0
- package/dist/wire.js.map +1 -0
- package/package.json +91 -0
package/dist/demo.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"demo.js","sourceRoot":"","sources":["../src/demo.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { RunnerMcpExecutionCost, RunnerMcpExecutionTokenUsage } from "@ancplua/qyl-api-schema/types";
|
|
2
|
+
export interface ExecutionEvidenceMetadata {
|
|
3
|
+
tokenUsage?: RunnerMcpExecutionTokenUsage;
|
|
4
|
+
cost?: RunnerMcpExecutionCost;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Read only explicitly named usage/cost evidence from an MCP tool result.
|
|
8
|
+
*
|
|
9
|
+
* MCP does not define a universal billing envelope for tool results. qyl.mcp
|
|
10
|
+
* therefore accepts metadata only from structured result fields (or _meta),
|
|
11
|
+
* never from prose, latency, payload size, or a locally maintained estimate.
|
|
12
|
+
*/
|
|
13
|
+
export declare function extractExecutionEvidence(result: unknown): ExecutionEvidenceMetadata;
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Read only explicitly named usage/cost evidence from an MCP tool result.
|
|
3
|
+
*
|
|
4
|
+
* MCP does not define a universal billing envelope for tool results. qyl.mcp
|
|
5
|
+
* therefore accepts metadata only from structured result fields (or _meta),
|
|
6
|
+
* never from prose, latency, payload size, or a locally maintained estimate.
|
|
7
|
+
*/
|
|
8
|
+
export function extractExecutionEvidence(result) {
|
|
9
|
+
if (!isRecord(result))
|
|
10
|
+
return {};
|
|
11
|
+
const roots = [result.structuredContent, result._meta]
|
|
12
|
+
.filter(isRecord);
|
|
13
|
+
let tokenUsage;
|
|
14
|
+
let cost;
|
|
15
|
+
for (const root of roots) {
|
|
16
|
+
tokenUsage ??= parseTokenUsage(root.tokenUsage
|
|
17
|
+
?? root.token_usage
|
|
18
|
+
?? root.usage);
|
|
19
|
+
cost ??= parseCost(root.cost ?? root.costUsd ?? root.cost_usd);
|
|
20
|
+
}
|
|
21
|
+
return {
|
|
22
|
+
...(tokenUsage === undefined ? {} : { tokenUsage }),
|
|
23
|
+
...(cost === undefined ? {} : { cost }),
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
function parseTokenUsage(value) {
|
|
27
|
+
if (!isRecord(value))
|
|
28
|
+
return undefined;
|
|
29
|
+
const inputTokens = nonNegativeInteger(value.inputTokens ?? value.input_tokens);
|
|
30
|
+
const outputTokens = nonNegativeInteger(value.outputTokens ?? value.output_tokens);
|
|
31
|
+
const totalTokens = nonNegativeInteger(value.totalTokens ?? value.total_tokens);
|
|
32
|
+
if (inputTokens === undefined && outputTokens === undefined && totalTokens === undefined) {
|
|
33
|
+
return undefined;
|
|
34
|
+
}
|
|
35
|
+
return {
|
|
36
|
+
...(inputTokens === undefined ? {} : { inputTokens }),
|
|
37
|
+
...(outputTokens === undefined ? {} : { outputTokens }),
|
|
38
|
+
...(totalTokens === undefined ? {} : { totalTokens }),
|
|
39
|
+
// A producer that reports token counts has supplied observed evidence.
|
|
40
|
+
// It can opt into the explicit estimated=true state when appropriate.
|
|
41
|
+
estimated: value.estimated === true,
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
function parseCost(value) {
|
|
45
|
+
if (typeof value === "number") {
|
|
46
|
+
return nonNegativeNumber(value) === undefined
|
|
47
|
+
? undefined
|
|
48
|
+
: { amountUsd: value, estimated: false };
|
|
49
|
+
}
|
|
50
|
+
if (!isRecord(value))
|
|
51
|
+
return undefined;
|
|
52
|
+
const amountUsd = nonNegativeNumber(value.amountUsd ?? value.amount_usd);
|
|
53
|
+
if (amountUsd === undefined)
|
|
54
|
+
return undefined;
|
|
55
|
+
const source = typeof value.source === "string" && value.source.trim().length > 0
|
|
56
|
+
? value.source.trim().slice(0, 256)
|
|
57
|
+
: undefined;
|
|
58
|
+
return {
|
|
59
|
+
amountUsd,
|
|
60
|
+
estimated: value.estimated === true,
|
|
61
|
+
...(source === undefined ? {} : { source }),
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
function isRecord(value) {
|
|
65
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
66
|
+
}
|
|
67
|
+
function nonNegativeInteger(value) {
|
|
68
|
+
return typeof value === "number"
|
|
69
|
+
&& Number.isSafeInteger(value)
|
|
70
|
+
&& value >= 0
|
|
71
|
+
? value
|
|
72
|
+
: undefined;
|
|
73
|
+
}
|
|
74
|
+
function nonNegativeNumber(value) {
|
|
75
|
+
return typeof value === "number"
|
|
76
|
+
&& Number.isFinite(value)
|
|
77
|
+
&& value >= 0
|
|
78
|
+
? value
|
|
79
|
+
: undefined;
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=execution-evidence.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"execution-evidence.js","sourceRoot":"","sources":["../src/execution-evidence.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { CallToolResult } from "@modelcontextprotocol/sdk/types.js";
|
|
2
|
+
import { SecretRedactor } from "./secret-redactor.js";
|
|
3
|
+
export declare const MAX_PERSISTED_RESULT_CHARACTERS = 2000000;
|
|
4
|
+
/** Redact a validated MCP result and bound only its durable representation. */
|
|
5
|
+
export declare function sanitizePersistedToolResult(result: CallToolResult, redactor: SecretRedactor): CallToolResult;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export const MAX_PERSISTED_RESULT_CHARACTERS = 2_000_000;
|
|
2
|
+
/** Redact a validated MCP result and bound only its durable representation. */
|
|
3
|
+
export function sanitizePersistedToolResult(result, redactor) {
|
|
4
|
+
const sanitized = redactor.redact(result);
|
|
5
|
+
const serialized = JSON.stringify(sanitized);
|
|
6
|
+
if (serialized.length <= MAX_PERSISTED_RESULT_CHARACTERS)
|
|
7
|
+
return sanitized;
|
|
8
|
+
return {
|
|
9
|
+
content: [{
|
|
10
|
+
type: "text",
|
|
11
|
+
text: `[Tool output omitted: sanitized result exceeded ${MAX_PERSISTED_RESULT_CHARACTERS} characters.]`,
|
|
12
|
+
}],
|
|
13
|
+
isError: true,
|
|
14
|
+
_meta: { qylOutputTruncated: true },
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=execution-result.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"execution-result.js","sourceRoot":"","sources":["../src/execution-result.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,+BAA+B,GAAG,SAAS,CAAC;AAEzD,+EAA+E;AAC/E,MAAM,UAAU,2BAA2B,CACzC,MAAsB,EACtB,QAAwB;IAExB,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAmB,CAAC;IAC5D,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7C,IAAI,UAAU,CAAC,MAAM,IAAI,+BAA+B;QAAE,OAAO,SAAS,CAAC;IAC3E,OAAO;QACL,OAAO,EAAE,CAAC;gBACR,IAAI,EAAE,MAAM;gBACZ,IAAI,EACF,mDAAmD,+BAA+B,eAAe;aACpG,CAAC;QACF,OAAO,EAAE,IAAI;QACb,KAAK,EAAE,EAAE,kBAAkB,EAAE,IAAI,EAAE;KACpC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/streamableHttp.js";
|
|
2
|
+
import type { RequestHandler } from "express";
|
|
3
|
+
export interface McpAppOptions {
|
|
4
|
+
bindHost: string;
|
|
5
|
+
allowedHosts?: readonly string[];
|
|
6
|
+
}
|
|
7
|
+
export declare function loopbackOrigins(port: number): string[];
|
|
8
|
+
/**
|
|
9
|
+
* The official MCP Express middleware owns Host validation. In hosted mode
|
|
10
|
+
* the allowlist is explicit; with the loopback default the SDK supplies its
|
|
11
|
+
* built-in localhost protection.
|
|
12
|
+
*/
|
|
13
|
+
export declare function createMcpApp({ bindHost, allowedHosts }: McpAppOptions): import("express").Express;
|
|
14
|
+
/**
|
|
15
|
+
* The transport owns Origin validation. Host validation stays in the
|
|
16
|
+
* Express middleware so hostnames remain port-agnostic behind a proxy.
|
|
17
|
+
*/
|
|
18
|
+
export declare function createMcpTransport(allowedOrigins: readonly string[]): StreamableHTTPServerTransport;
|
|
19
|
+
/**
|
|
20
|
+
* Returns the configured static token, rejecting values that cannot safely be
|
|
21
|
+
* represented as a Bearer credential. An unset token deliberately remains
|
|
22
|
+
* undefined so the loopback-only local default stays convenient.
|
|
23
|
+
*/
|
|
24
|
+
export declare function readMcpAuthToken(environment?: NodeJS.ProcessEnv): string | undefined;
|
|
25
|
+
/**
|
|
26
|
+
* Protects the public MCP route with the first hosted-mode authentication
|
|
27
|
+
* mechanism. The token is intentionally static and environment-backed; a
|
|
28
|
+
* production OAuth provider can replace this middleware without changing the
|
|
29
|
+
* MCP transport boundary.
|
|
30
|
+
*/
|
|
31
|
+
export declare function requireMcpAuthentication(token?: string | undefined): RequestHandler;
|
|
32
|
+
export declare function isLoopbackBindHost(host: string): boolean;
|
|
33
|
+
/** @deprecated Use createMcpApp({ bindHost }) for hosted deployments. */
|
|
34
|
+
export declare function createLoopbackMcpApp(): import("express").Express;
|
|
35
|
+
/** @deprecated Use createMcpTransport(allowedOrigins) for hosted deployments. */
|
|
36
|
+
export declare function createLoopbackMcpTransport(port: number): StreamableHTTPServerTransport;
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { timingSafeEqual } from "node:crypto";
|
|
2
|
+
import { createMcpExpressApp } from "@modelcontextprotocol/sdk/server/express.js";
|
|
3
|
+
import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/streamableHttp.js";
|
|
4
|
+
function unique(values) {
|
|
5
|
+
return [...new Set(values)];
|
|
6
|
+
}
|
|
7
|
+
export function loopbackOrigins(port) {
|
|
8
|
+
return [
|
|
9
|
+
`http://127.0.0.1:${port}`,
|
|
10
|
+
`http://localhost:${port}`,
|
|
11
|
+
`http://[::1]:${port}`,
|
|
12
|
+
];
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* The official MCP Express middleware owns Host validation. In hosted mode
|
|
16
|
+
* the allowlist is explicit; with the loopback default the SDK supplies its
|
|
17
|
+
* built-in localhost protection.
|
|
18
|
+
*/
|
|
19
|
+
export function createMcpApp({ bindHost, allowedHosts }) {
|
|
20
|
+
return createMcpExpressApp({
|
|
21
|
+
host: bindHost,
|
|
22
|
+
allowedHosts: allowedHosts === undefined ? undefined : unique(allowedHosts),
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* The transport owns Origin validation. Host validation stays in the
|
|
27
|
+
* Express middleware so hostnames remain port-agnostic behind a proxy.
|
|
28
|
+
*/
|
|
29
|
+
export function createMcpTransport(allowedOrigins) {
|
|
30
|
+
return new StreamableHTTPServerTransport({
|
|
31
|
+
sessionIdGenerator: undefined,
|
|
32
|
+
enableDnsRebindingProtection: true,
|
|
33
|
+
allowedOrigins: unique(allowedOrigins),
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Returns the configured static token, rejecting values that cannot safely be
|
|
38
|
+
* represented as a Bearer credential. An unset token deliberately remains
|
|
39
|
+
* undefined so the loopback-only local default stays convenient.
|
|
40
|
+
*/
|
|
41
|
+
export function readMcpAuthToken(environment = process.env) {
|
|
42
|
+
const configured = environment.MCP_AUTH_TOKEN;
|
|
43
|
+
if (configured === undefined)
|
|
44
|
+
return undefined;
|
|
45
|
+
const token = configured.trim();
|
|
46
|
+
if (token.length === 0) {
|
|
47
|
+
throw new Error("MCP_AUTH_TOKEN must not be empty");
|
|
48
|
+
}
|
|
49
|
+
if (/\s/u.test(token)) {
|
|
50
|
+
throw new Error("MCP_AUTH_TOKEN must not contain whitespace");
|
|
51
|
+
}
|
|
52
|
+
return token;
|
|
53
|
+
}
|
|
54
|
+
function hasExpectedBearer(authorization, expectedToken) {
|
|
55
|
+
if (typeof authorization !== "string")
|
|
56
|
+
return false;
|
|
57
|
+
const match = /^Bearer[ \t]+([^ \t]+)$/iu.exec(authorization);
|
|
58
|
+
if (match === null)
|
|
59
|
+
return false;
|
|
60
|
+
const actual = Buffer.from(match[1], "utf8");
|
|
61
|
+
const expected = Buffer.from(expectedToken, "utf8");
|
|
62
|
+
return actual.length === expected.length && timingSafeEqual(actual, expected);
|
|
63
|
+
}
|
|
64
|
+
function sendUnauthorized(response) {
|
|
65
|
+
response.setHeader("WWW-Authenticate", 'Bearer realm="qyl-mcp"');
|
|
66
|
+
response.setHeader("Cache-Control", "no-store");
|
|
67
|
+
response.status(401).json({ error: "Unauthorized" });
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Protects the public MCP route with the first hosted-mode authentication
|
|
71
|
+
* mechanism. The token is intentionally static and environment-backed; a
|
|
72
|
+
* production OAuth provider can replace this middleware without changing the
|
|
73
|
+
* MCP transport boundary.
|
|
74
|
+
*/
|
|
75
|
+
export function requireMcpAuthentication(token = readMcpAuthToken()) {
|
|
76
|
+
return (request, response, next) => {
|
|
77
|
+
// No token is the deliberate local loopback mode. Hosted startup rejects
|
|
78
|
+
// this configuration before the listener is created.
|
|
79
|
+
if (token === undefined) {
|
|
80
|
+
next();
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
if (!hasExpectedBearer(request.headers.authorization, token)) {
|
|
84
|
+
sendUnauthorized(response);
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
next();
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
export function isLoopbackBindHost(host) {
|
|
91
|
+
return host === "127.0.0.1" || host === "localhost" || host === "::1";
|
|
92
|
+
}
|
|
93
|
+
/** @deprecated Use createMcpApp({ bindHost }) for hosted deployments. */
|
|
94
|
+
export function createLoopbackMcpApp() {
|
|
95
|
+
return createMcpApp({ bindHost: "127.0.0.1" });
|
|
96
|
+
}
|
|
97
|
+
/** @deprecated Use createMcpTransport(allowedOrigins) for hosted deployments. */
|
|
98
|
+
export function createLoopbackMcpTransport(port) {
|
|
99
|
+
return createMcpTransport(loopbackOrigins(port));
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=http-security.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http-security.js","sourceRoot":"","sources":["../src/http-security.ts"],"names":[],"mappings":"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"}
|
package/dist/log-body.js
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/** Render every generated OTel LogBody variant without assuming string-only logs. */
|
|
2
|
+
export function logBodyText(body) {
|
|
3
|
+
if ("string_value" in body)
|
|
4
|
+
return body.string_value;
|
|
5
|
+
if ("kv_list_value" in body) {
|
|
6
|
+
return JSON.stringify(Object.fromEntries(body.kv_list_value.map(({ key, value }) => [key, value])));
|
|
7
|
+
}
|
|
8
|
+
if ("array_value" in body)
|
|
9
|
+
return JSON.stringify(body.array_value);
|
|
10
|
+
return `[base64 bytes: ${body.bytes_value.length} characters]`;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=log-body.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"log-body.js","sourceRoot":"","sources":["../src/log-body.ts"],"names":[],"mappings":"AAEA,qFAAqF;AACrF,MAAM,UAAU,WAAW,CAAC,IAAa;IACvC,IAAI,cAAc,IAAI,IAAI;QAAE,OAAO,IAAI,CAAC,YAAY,CAAC;IACrD,IAAI,eAAe,IAAI,IAAI,EAAE,CAAC;QAC5B,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACtG,CAAC;IACD,IAAI,aAAa,IAAI,IAAI;QAAE,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACnE,OAAO,kBAAkB,IAAI,CAAC,WAAW,CAAC,MAAM,cAAc,CAAC;AACjE,CAAC"}
|
package/dist/main.d.ts
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Standalone entry point for the qyl telemetry MCP server.
|
|
4
|
+
* Run with: node dist/main.js [--stdio]
|
|
5
|
+
*
|
|
6
|
+
* The qyl.mcp runner does NOT go through this file — it hosts createServer()
|
|
7
|
+
* in-process over an in-memory transport (runner/main.ts). This entry exists
|
|
8
|
+
* for direct chat-client wiring (stdio) and hosted HTTP deployments.
|
|
9
|
+
*/
|
|
10
|
+
import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
11
|
+
import type { Transport } from "@modelcontextprotocol/sdk/shared/transport.js";
|
|
12
|
+
import type { Server as HttpServer } from "node:http";
|
|
13
|
+
interface CleanupFailure {
|
|
14
|
+
resource: "server" | "transport";
|
|
15
|
+
errorType: string;
|
|
16
|
+
}
|
|
17
|
+
export declare function sanitizedErrorType(error: unknown): string;
|
|
18
|
+
/**
|
|
19
|
+
* McpServer owns its connected transport. A direct transport close is only a
|
|
20
|
+
* fallback when the server-owned close fails, avoiding duplicate close races.
|
|
21
|
+
*/
|
|
22
|
+
export declare function closeMcpRequestResources(server: Pick<McpServer, "close">, transport: Pick<Transport, "close">): Promise<CleanupFailure[]>;
|
|
23
|
+
export declare function closeHttpListener(server: HttpServer): Promise<void>;
|
|
24
|
+
export interface StreamableHTTPServerConfig {
|
|
25
|
+
port: number;
|
|
26
|
+
bindHost: string;
|
|
27
|
+
publicUrl?: URL;
|
|
28
|
+
allowedHosts?: string[];
|
|
29
|
+
allowedOrigins: string[];
|
|
30
|
+
authToken?: string;
|
|
31
|
+
hosted: boolean;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Reads the standalone HTTP configuration without exposing secret values in
|
|
35
|
+
* errors or logs. The default remains loopback-only; a non-loopback bind or a
|
|
36
|
+
* public URL is an explicit hosted mode and requires authentication.
|
|
37
|
+
*/
|
|
38
|
+
export declare function readStreamableHTTPConfig(environment?: NodeJS.ProcessEnv): StreamableHTTPServerConfig;
|
|
39
|
+
/**
|
|
40
|
+
* Starts an MCP server with Streamable HTTP transport in stateless mode.
|
|
41
|
+
*
|
|
42
|
+
* @param createServer - Factory function that creates a new McpServer instance per request.
|
|
43
|
+
*/
|
|
44
|
+
export declare function startStreamableHTTPServer(createServer: () => McpServer): Promise<void>;
|
|
45
|
+
/**
|
|
46
|
+
* Starts an MCP server with stdio transport.
|
|
47
|
+
*
|
|
48
|
+
* @param createServer - Factory function that creates a new McpServer instance.
|
|
49
|
+
*/
|
|
50
|
+
export declare function startStdioServer(createServer: () => McpServer): Promise<void>;
|
|
51
|
+
export {};
|
package/dist/main.js
ADDED
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Standalone entry point for the qyl telemetry MCP server.
|
|
4
|
+
* Run with: node dist/main.js [--stdio]
|
|
5
|
+
*
|
|
6
|
+
* The qyl.mcp runner does NOT go through this file — it hosts createServer()
|
|
7
|
+
* in-process over an in-memory transport (runner/main.ts). This entry exists
|
|
8
|
+
* for direct chat-client wiring (stdio) and hosted HTTP deployments.
|
|
9
|
+
*/
|
|
10
|
+
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
11
|
+
import { ErrorCode } from "@modelcontextprotocol/sdk/types.js";
|
|
12
|
+
import { resolve } from "node:path";
|
|
13
|
+
import { pathToFileURL } from "node:url";
|
|
14
|
+
import { createServer } from "./server.js";
|
|
15
|
+
import { createMcpApp, createMcpTransport, isLoopbackBindHost, loopbackOrigins, readMcpAuthToken, requireMcpAuthentication, } from "./http-security.js";
|
|
16
|
+
import { mcpErrorResponse, mcpRequestId } from "./mcp-errors.js";
|
|
17
|
+
import { closeDefaultNativeExecutionRuntime } from "./native-execution.js";
|
|
18
|
+
export function sanitizedErrorType(error) {
|
|
19
|
+
if (!(error instanceof Error))
|
|
20
|
+
return "UnknownError";
|
|
21
|
+
return /^[A-Za-z][A-Za-z0-9]*$/.test(error.name) ? error.name : "Error";
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* McpServer owns its connected transport. A direct transport close is only a
|
|
25
|
+
* fallback when the server-owned close fails, avoiding duplicate close races.
|
|
26
|
+
*/
|
|
27
|
+
export async function closeMcpRequestResources(server, transport) {
|
|
28
|
+
try {
|
|
29
|
+
await server.close();
|
|
30
|
+
return [];
|
|
31
|
+
}
|
|
32
|
+
catch (error) {
|
|
33
|
+
const failures = [
|
|
34
|
+
{ resource: "server", errorType: sanitizedErrorType(error) },
|
|
35
|
+
];
|
|
36
|
+
try {
|
|
37
|
+
await transport.close();
|
|
38
|
+
}
|
|
39
|
+
catch (fallbackError) {
|
|
40
|
+
failures.push({
|
|
41
|
+
resource: "transport",
|
|
42
|
+
errorType: sanitizedErrorType(fallbackError),
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
return failures;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
function logCleanupFailures(failures) {
|
|
49
|
+
for (const failure of failures) {
|
|
50
|
+
console.error(`Standalone MCP ${failure.resource} cleanup failed (${failure.errorType}); secret details omitted`);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
export function closeHttpListener(server) {
|
|
54
|
+
return new Promise((resolveClose, rejectClose) => {
|
|
55
|
+
server.close((error) => (error ? rejectClose(error) : resolveClose()));
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
function commaSeparated(value) {
|
|
59
|
+
return (value ?? "")
|
|
60
|
+
.split(",")
|
|
61
|
+
.map((entry) => entry.trim())
|
|
62
|
+
.filter(Boolean);
|
|
63
|
+
}
|
|
64
|
+
function unique(values) {
|
|
65
|
+
return [...new Set(values)];
|
|
66
|
+
}
|
|
67
|
+
function configuredPublicUrl(environment) {
|
|
68
|
+
const configured = environment.MCP_PUBLIC_URL?.trim();
|
|
69
|
+
if (!configured)
|
|
70
|
+
return undefined;
|
|
71
|
+
let publicUrl;
|
|
72
|
+
try {
|
|
73
|
+
publicUrl = new URL(configured);
|
|
74
|
+
}
|
|
75
|
+
catch {
|
|
76
|
+
throw new Error("MCP_PUBLIC_URL must be an absolute URL");
|
|
77
|
+
}
|
|
78
|
+
if (publicUrl.protocol !== "http:" && publicUrl.protocol !== "https:") {
|
|
79
|
+
throw new Error("MCP_PUBLIC_URL must use HTTP or HTTPS");
|
|
80
|
+
}
|
|
81
|
+
return publicUrl;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Reads the standalone HTTP configuration without exposing secret values in
|
|
85
|
+
* errors or logs. The default remains loopback-only; a non-loopback bind or a
|
|
86
|
+
* public URL is an explicit hosted mode and requires authentication.
|
|
87
|
+
*/
|
|
88
|
+
export function readStreamableHTTPConfig(environment = process.env) {
|
|
89
|
+
const port = Number.parseInt(environment.PORT ?? "3001", 10);
|
|
90
|
+
if (!Number.isInteger(port) || port < 1 || port > 65_535) {
|
|
91
|
+
throw new Error("PORT must be an integer from 1 through 65535");
|
|
92
|
+
}
|
|
93
|
+
const bindHost = environment.MCP_BIND_HOST?.trim() || "127.0.0.1";
|
|
94
|
+
const publicUrl = configuredPublicUrl(environment);
|
|
95
|
+
const additionalHosts = commaSeparated(environment.MCP_ALLOWED_HOSTS);
|
|
96
|
+
const additionalOrigins = commaSeparated(environment.MCP_ALLOWED_ORIGINS);
|
|
97
|
+
const allowedHosts = publicUrl
|
|
98
|
+
? unique([publicUrl.hostname, ...additionalHosts])
|
|
99
|
+
: undefined;
|
|
100
|
+
const allowedOrigins = publicUrl
|
|
101
|
+
? unique([publicUrl.origin, ...additionalOrigins])
|
|
102
|
+
: loopbackOrigins(port);
|
|
103
|
+
const authToken = readMcpAuthToken(environment);
|
|
104
|
+
const hosted = publicUrl !== undefined || !isLoopbackBindHost(bindHost);
|
|
105
|
+
if (hosted && authToken === undefined) {
|
|
106
|
+
throw new Error("MCP_AUTH_TOKEN must be configured when MCP_BIND_HOST is non-loopback or MCP_PUBLIC_URL is set");
|
|
107
|
+
}
|
|
108
|
+
return {
|
|
109
|
+
port,
|
|
110
|
+
bindHost,
|
|
111
|
+
...(publicUrl === undefined ? {} : { publicUrl }),
|
|
112
|
+
...(allowedHosts === undefined ? {} : { allowedHosts }),
|
|
113
|
+
allowedOrigins,
|
|
114
|
+
...(authToken === undefined ? {} : { authToken }),
|
|
115
|
+
hosted,
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
function urlHost(host) {
|
|
119
|
+
return host.includes(":") && !host.startsWith("[") ? `[${host}]` : host;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Starts an MCP server with Streamable HTTP transport in stateless mode.
|
|
123
|
+
*
|
|
124
|
+
* @param createServer - Factory function that creates a new McpServer instance per request.
|
|
125
|
+
*/
|
|
126
|
+
export async function startStreamableHTTPServer(createServer) {
|
|
127
|
+
const config = readStreamableHTTPConfig();
|
|
128
|
+
const app = createMcpApp({
|
|
129
|
+
bindHost: config.bindHost,
|
|
130
|
+
allowedHosts: config.allowedHosts,
|
|
131
|
+
});
|
|
132
|
+
app.get("/healthz", (_request, response) => {
|
|
133
|
+
response.status(200).json({ status: "ok" });
|
|
134
|
+
});
|
|
135
|
+
app.all("/mcp", requireMcpAuthentication(config.authToken), async (req, res) => {
|
|
136
|
+
const server = createServer();
|
|
137
|
+
const transport = createMcpTransport(config.allowedOrigins);
|
|
138
|
+
res.once("close", () => {
|
|
139
|
+
void closeMcpRequestResources(server, transport).then(logCleanupFailures);
|
|
140
|
+
});
|
|
141
|
+
try {
|
|
142
|
+
await server.connect(transport);
|
|
143
|
+
await transport.handleRequest(req, res, req.body);
|
|
144
|
+
}
|
|
145
|
+
catch (error) {
|
|
146
|
+
console.error(`Standalone MCP request failed (${sanitizedErrorType(error)}); secret details omitted`);
|
|
147
|
+
if (!res.headersSent) {
|
|
148
|
+
res
|
|
149
|
+
.status(500)
|
|
150
|
+
.json(mcpErrorResponse(ErrorCode.InternalError, "Internal server error", mcpRequestId(req.body)));
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
});
|
|
154
|
+
const httpServer = app.listen(config.port, config.bindHost);
|
|
155
|
+
await new Promise((resolve, reject) => {
|
|
156
|
+
httpServer.once("listening", resolve);
|
|
157
|
+
httpServer.once("error", reject);
|
|
158
|
+
});
|
|
159
|
+
const endpoint = config.publicUrl
|
|
160
|
+
? new URL("/mcp", config.publicUrl).href
|
|
161
|
+
: `http://${urlHost(config.bindHost)}:${config.port}/mcp`;
|
|
162
|
+
console.log(`MCP server listening on ${endpoint}`);
|
|
163
|
+
let shuttingDown = false;
|
|
164
|
+
const shutdown = () => {
|
|
165
|
+
if (shuttingDown)
|
|
166
|
+
return;
|
|
167
|
+
shuttingDown = true;
|
|
168
|
+
console.log("\nShutting down...");
|
|
169
|
+
void closeHttpListener(httpServer)
|
|
170
|
+
.then(closeDefaultNativeExecutionRuntime)
|
|
171
|
+
.catch((error) => {
|
|
172
|
+
console.error(`Standalone MCP HTTP shutdown cleanup failed (${sanitizedErrorType(error)}); secret details omitted`);
|
|
173
|
+
process.exitCode = 1;
|
|
174
|
+
});
|
|
175
|
+
};
|
|
176
|
+
process.once("SIGINT", shutdown);
|
|
177
|
+
process.once("SIGTERM", shutdown);
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Starts an MCP server with stdio transport.
|
|
181
|
+
*
|
|
182
|
+
* @param createServer - Factory function that creates a new McpServer instance.
|
|
183
|
+
*/
|
|
184
|
+
export async function startStdioServer(createServer) {
|
|
185
|
+
const server = createServer();
|
|
186
|
+
const transport = new StdioServerTransport();
|
|
187
|
+
await server.connect(transport);
|
|
188
|
+
let shuttingDown = false;
|
|
189
|
+
const shutdown = () => {
|
|
190
|
+
if (shuttingDown)
|
|
191
|
+
return;
|
|
192
|
+
shuttingDown = true;
|
|
193
|
+
void closeMcpRequestResources(server, transport)
|
|
194
|
+
.then(logCleanupFailures)
|
|
195
|
+
.finally(closeDefaultNativeExecutionRuntime);
|
|
196
|
+
};
|
|
197
|
+
process.once("SIGINT", shutdown);
|
|
198
|
+
process.once("SIGTERM", shutdown);
|
|
199
|
+
}
|
|
200
|
+
async function main() {
|
|
201
|
+
if (process.argv.includes("--stdio")) {
|
|
202
|
+
await startStdioServer(() => createServer({ transport: "stdio" }));
|
|
203
|
+
}
|
|
204
|
+
else {
|
|
205
|
+
await startStreamableHTTPServer(() => createServer({ transport: "streamable_http" }));
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
const entryPoint = process.argv[1];
|
|
209
|
+
if (entryPoint !== undefined && pathToFileURL(resolve(entryPoint)).href === import.meta.url) {
|
|
210
|
+
void main().catch((error) => {
|
|
211
|
+
console.error(`Standalone MCP startup failed (${sanitizedErrorType(error)}); secret details omitted`);
|
|
212
|
+
process.exitCode = 1;
|
|
213
|
+
});
|
|
214
|
+
}
|
|
215
|
+
//# sourceMappingURL=main.js.map
|
package/dist/main.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"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"}
|