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
|
@@ -0,0 +1,362 @@
|
|
|
1
|
+
/** MCP self-telemetry exported through the official OpenTelemetry SDK. */
|
|
2
|
+
import { context, defaultTextMapGetter, defaultTextMapSetter, isSpanContextValid, propagation, ROOT_CONTEXT, SpanStatusCode, trace, } from "@opentelemetry/api";
|
|
3
|
+
import { CompositePropagator, W3CBaggagePropagator, W3CTraceContextPropagator, } from "@opentelemetry/core";
|
|
4
|
+
import { OTLPMetricExporter } from "@opentelemetry/exporter-metrics-otlp-proto";
|
|
5
|
+
import { OTLPTraceExporter } from "@opentelemetry/exporter-trace-otlp-proto";
|
|
6
|
+
import { resourceFromAttributes } from "@opentelemetry/resources";
|
|
7
|
+
import { MeterProvider, PeriodicExportingMetricReader, } from "@opentelemetry/sdk-metrics";
|
|
8
|
+
import { BatchSpanProcessor } from "@opentelemetry/sdk-trace-base";
|
|
9
|
+
import { NodeTracerProvider } from "@opentelemetry/sdk-trace-node";
|
|
10
|
+
import { ATTR_SERVICE_INSTANCE_ID, ATTR_SERVICE_NAME, ATTR_SERVICE_VERSION, } from "@opentelemetry/semantic-conventions";
|
|
11
|
+
import { METRIC_MCP_CLIENT_OPERATION_DURATION, METRIC_MCP_CLIENT_SESSION_DURATION, METRIC_MCP_SERVER_OPERATION_DURATION, METRIC_MCP_SERVER_SESSION_DURATION, } from "@opentelemetry/semantic-conventions/incubating";
|
|
12
|
+
import qylOpenApi from "@ancplua/qyl-api-schema/openapi" with { type: "json" };
|
|
13
|
+
import { AsyncLocalStorage } from "node:async_hooks";
|
|
14
|
+
import { randomUUID } from "node:crypto";
|
|
15
|
+
import packageMetadata from "../package.json" with { type: "json" };
|
|
16
|
+
import { describeMcpOperationMetric, describeMcpOperationSpan, describeMcpSessionMetric, } from "./mcp-semconv.js";
|
|
17
|
+
import { isObservabilitySelfExportSuppressed } from "./observability-suppression.js";
|
|
18
|
+
import { SecretRedactor } from "./secret-redactor.js";
|
|
19
|
+
export { WorkbenchTelemetryAttributes, describeMcpOperationMetric, describeMcpOperationSpan, describeMcpSessionMetric, } from "./mcp-semconv.js";
|
|
20
|
+
const Product = {
|
|
21
|
+
name: "qyl.mcp",
|
|
22
|
+
version: packageMetadata.version,
|
|
23
|
+
};
|
|
24
|
+
const FLUSH_INTERVAL_MS = 5_000;
|
|
25
|
+
const MAX_QUEUE = 512;
|
|
26
|
+
const EXPORT_TIMEOUT_MS = 3_000;
|
|
27
|
+
const ATTRIBUTE_VALUE_LIMIT = 2_000;
|
|
28
|
+
const MAX_PROPAGATION_FIELDS = 32;
|
|
29
|
+
const MAX_PROPAGATION_KEY_CHARACTERS = 256;
|
|
30
|
+
const MAX_PROPAGATION_VALUE_CHARACTERS = 8_192;
|
|
31
|
+
const INSTRUMENTATION_SCOPE = "qyl.mcp";
|
|
32
|
+
const STANDARD_MCP_PROPAGATOR = new CompositePropagator({
|
|
33
|
+
propagators: [
|
|
34
|
+
new W3CTraceContextPropagator(),
|
|
35
|
+
new W3CBaggagePropagator(),
|
|
36
|
+
],
|
|
37
|
+
});
|
|
38
|
+
export const MCP_DURATION_EXPLICIT_BUCKET_BOUNDARIES = [
|
|
39
|
+
0.01, 0.02, 0.05, 0.1, 0.2, 0.5, 1, 2, 5, 10, 30, 60, 120, 300,
|
|
40
|
+
];
|
|
41
|
+
const API_KEY_HEADER = qylOpenApi.components.securitySchemes.ApiKeyAuth.name;
|
|
42
|
+
if (typeof API_KEY_HEADER !== "string" || API_KEY_HEADER.length === 0) {
|
|
43
|
+
throw new Error("published Qyl OpenAPI has no API-key header name");
|
|
44
|
+
}
|
|
45
|
+
const activeMcpContext = new AsyncLocalStorage();
|
|
46
|
+
/**
|
|
47
|
+
* Carries one explicitly-created MCP operation through SDK dispatch without
|
|
48
|
+
* installing a global OpenTelemetry provider or context manager. A null store
|
|
49
|
+
* deliberately clears any outer operation so unrelated requests cannot inherit
|
|
50
|
+
* stale propagation state.
|
|
51
|
+
*/
|
|
52
|
+
export function runWithMcpPropagation(carrier, operation) {
|
|
53
|
+
if (carrier === undefined)
|
|
54
|
+
return activeMcpContext.run(null, operation);
|
|
55
|
+
const extracted = extractPropagation(context.active(), carrier);
|
|
56
|
+
return activeMcpContext.run(extracted, () => context.with(extracted, operation));
|
|
57
|
+
}
|
|
58
|
+
/** Compatibility wrapper for callers that only have a W3C traceparent. */
|
|
59
|
+
export function runWithMcpTraceparent(traceparent, operation) {
|
|
60
|
+
return runWithMcpPropagation(traceparent === undefined ? undefined : { traceparent }, operation);
|
|
61
|
+
}
|
|
62
|
+
/** Current execution-local propagation carrier, if an MCP operation exists. */
|
|
63
|
+
export function currentMcpPropagation() {
|
|
64
|
+
const active = activeMcpContext.getStore();
|
|
65
|
+
return active === null || active === undefined ? undefined : injectPropagation(active);
|
|
66
|
+
}
|
|
67
|
+
/** Current execution-local W3C trace parent, if a client operation span exists. */
|
|
68
|
+
export function currentMcpTraceparent() {
|
|
69
|
+
return currentMcpPropagation()?.traceparent;
|
|
70
|
+
}
|
|
71
|
+
export function signalEndpoint(env, signal) {
|
|
72
|
+
const explicit = signal === "traces"
|
|
73
|
+
? env.OTEL_EXPORTER_OTLP_TRACES_ENDPOINT
|
|
74
|
+
: env.OTEL_EXPORTER_OTLP_METRICS_ENDPOINT;
|
|
75
|
+
if (explicit)
|
|
76
|
+
return explicit;
|
|
77
|
+
const base = (env.QYL_OTLP_ENDPOINT
|
|
78
|
+
?? env.QYL_COLLECTOR_URL
|
|
79
|
+
?? env.OTEL_EXPORTER_OTLP_ENDPOINT
|
|
80
|
+
?? "http://127.0.0.1:4318").replace(/\/+$/, "");
|
|
81
|
+
return `${base}/v1/${signal}`;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Records completed MCP operations and sessions without installing global SDK
|
|
85
|
+
* providers. Signal-specific descriptors prevent span-only identifiers from
|
|
86
|
+
* appearing on duration histograms.
|
|
87
|
+
*/
|
|
88
|
+
export class McpTelemetry {
|
|
89
|
+
traceProvider;
|
|
90
|
+
metricProvider;
|
|
91
|
+
tracer;
|
|
92
|
+
histograms = new Map();
|
|
93
|
+
redactor;
|
|
94
|
+
get operationTracingEnabled() {
|
|
95
|
+
return this.tracer !== undefined;
|
|
96
|
+
}
|
|
97
|
+
constructor(env = process.env, redactor = new SecretRedactor({ environment: env }), options = {}) {
|
|
98
|
+
this.redactor = redactor;
|
|
99
|
+
this.tracer = options.tracer;
|
|
100
|
+
if (env.QYL_MCP_TELEMETRY === "0")
|
|
101
|
+
return;
|
|
102
|
+
const resource = resourceFromAttributes({
|
|
103
|
+
[ATTR_SERVICE_NAME]: Product.name,
|
|
104
|
+
[ATTR_SERVICE_VERSION]: Product.version,
|
|
105
|
+
[ATTR_SERVICE_INSTANCE_ID]: randomUUID(),
|
|
106
|
+
});
|
|
107
|
+
const headers = env.QYL_API_KEY?.trim()
|
|
108
|
+
? { [API_KEY_HEADER]: env.QYL_API_KEY.trim() }
|
|
109
|
+
: undefined;
|
|
110
|
+
const traceExporter = new OTLPTraceExporter({
|
|
111
|
+
url: signalEndpoint(env, "traces"),
|
|
112
|
+
timeoutMillis: EXPORT_TIMEOUT_MS,
|
|
113
|
+
headers,
|
|
114
|
+
});
|
|
115
|
+
const processor = new BatchSpanProcessor(traceExporter, {
|
|
116
|
+
maxQueueSize: MAX_QUEUE,
|
|
117
|
+
maxExportBatchSize: MAX_QUEUE,
|
|
118
|
+
scheduledDelayMillis: FLUSH_INTERVAL_MS,
|
|
119
|
+
exportTimeoutMillis: EXPORT_TIMEOUT_MS,
|
|
120
|
+
});
|
|
121
|
+
this.traceProvider = new NodeTracerProvider({
|
|
122
|
+
resource,
|
|
123
|
+
spanProcessors: [processor],
|
|
124
|
+
spanLimits: {
|
|
125
|
+
attributeValueLengthLimit: ATTRIBUTE_VALUE_LIMIT,
|
|
126
|
+
attributeCountLimit: 32,
|
|
127
|
+
eventCountLimit: 0,
|
|
128
|
+
linkCountLimit: 1,
|
|
129
|
+
},
|
|
130
|
+
});
|
|
131
|
+
this.tracer ??= this.traceProvider.getTracer(INSTRUMENTATION_SCOPE, Product.version);
|
|
132
|
+
const metricExporter = new OTLPMetricExporter({
|
|
133
|
+
url: signalEndpoint(env, "metrics"),
|
|
134
|
+
timeoutMillis: EXPORT_TIMEOUT_MS,
|
|
135
|
+
headers,
|
|
136
|
+
});
|
|
137
|
+
this.metricProvider = new MeterProvider({
|
|
138
|
+
resource,
|
|
139
|
+
readers: [new PeriodicExportingMetricReader({
|
|
140
|
+
exporter: metricExporter,
|
|
141
|
+
exportIntervalMillis: FLUSH_INTERVAL_MS,
|
|
142
|
+
exportTimeoutMillis: EXPORT_TIMEOUT_MS,
|
|
143
|
+
})],
|
|
144
|
+
});
|
|
145
|
+
const meter = this.metricProvider.getMeter(INSTRUMENTATION_SCOPE, Product.version);
|
|
146
|
+
for (const name of [
|
|
147
|
+
METRIC_MCP_CLIENT_OPERATION_DURATION,
|
|
148
|
+
METRIC_MCP_CLIENT_SESSION_DURATION,
|
|
149
|
+
METRIC_MCP_SERVER_OPERATION_DURATION,
|
|
150
|
+
METRIC_MCP_SERVER_SESSION_DURATION,
|
|
151
|
+
]) {
|
|
152
|
+
this.histograms.set(name, meter.createHistogram(name, {
|
|
153
|
+
unit: "s",
|
|
154
|
+
advice: {
|
|
155
|
+
explicitBucketBoundaries: [...MCP_DURATION_EXPLICIT_BUCKET_BOUNDARIES],
|
|
156
|
+
},
|
|
157
|
+
}));
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Start an MCP operation before the SDK call so its trace context can be
|
|
162
|
+
* propagated. Completion-only attributes are applied immediately before
|
|
163
|
+
* ending the span, and the metric is recorded exactly once at completion.
|
|
164
|
+
*/
|
|
165
|
+
startOperation(input) {
|
|
166
|
+
if (isObservabilitySelfExportSuppressed())
|
|
167
|
+
return inactiveOperation();
|
|
168
|
+
const ambientContext = activeMcpContext.getStore() ?? context.active();
|
|
169
|
+
const baseParentContext = input.role === "server" ? ROOT_CONTEXT : ambientContext;
|
|
170
|
+
const parentContext = input.remotePropagation === undefined
|
|
171
|
+
? baseParentContext
|
|
172
|
+
: extractPropagation(baseParentContext, input.remotePropagation);
|
|
173
|
+
const links = operationLinks(input.role, ambientContext, parentContext);
|
|
174
|
+
let span;
|
|
175
|
+
let operationContext;
|
|
176
|
+
if (this.tracer) {
|
|
177
|
+
try {
|
|
178
|
+
const descriptor = describeMcpOperationSpan({
|
|
179
|
+
...input,
|
|
180
|
+
endTimeMs: input.startTimeMs,
|
|
181
|
+
}, this.redactor);
|
|
182
|
+
span = this.tracer.startSpan(descriptor.name, {
|
|
183
|
+
kind: descriptor.kind,
|
|
184
|
+
attributes: descriptor.attributes,
|
|
185
|
+
startTime: input.startTimeMs,
|
|
186
|
+
...(links === undefined ? {} : { links }),
|
|
187
|
+
}, parentContext);
|
|
188
|
+
operationContext = trace.setSpan(parentContext, span);
|
|
189
|
+
}
|
|
190
|
+
catch {
|
|
191
|
+
// Self-telemetry must never change the MCP request.
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
const identifiers = span?.spanContext();
|
|
195
|
+
const correlation = identifiers !== undefined && isSpanContextValid(identifiers)
|
|
196
|
+
? { traceId: identifiers.traceId, spanId: identifiers.spanId }
|
|
197
|
+
: undefined;
|
|
198
|
+
const carrier = operationContext === undefined
|
|
199
|
+
? undefined
|
|
200
|
+
: injectPropagation(operationContext);
|
|
201
|
+
const traceparent = carrier?.traceparent;
|
|
202
|
+
let ended = false;
|
|
203
|
+
return {
|
|
204
|
+
...(correlation === undefined ? {} : { correlation }),
|
|
205
|
+
...(carrier === undefined ? {} : { propagation: carrier }),
|
|
206
|
+
...(traceparent === undefined ? {} : { traceparent }),
|
|
207
|
+
run: (operation) => operationContext === undefined
|
|
208
|
+
? operation()
|
|
209
|
+
: activeMcpContext.run(operationContext, () => context.with(operationContext, operation)),
|
|
210
|
+
end: (completion) => {
|
|
211
|
+
if (ended)
|
|
212
|
+
return correlation;
|
|
213
|
+
ended = true;
|
|
214
|
+
const completed = { ...input, ...completion };
|
|
215
|
+
let metric;
|
|
216
|
+
try {
|
|
217
|
+
metric = describeMcpOperationMetric(completed, this.redactor);
|
|
218
|
+
}
|
|
219
|
+
catch {
|
|
220
|
+
// Self-telemetry must never change the MCP response.
|
|
221
|
+
}
|
|
222
|
+
if (span === undefined) {
|
|
223
|
+
this.recordOperationMetric(metric);
|
|
224
|
+
return correlation;
|
|
225
|
+
}
|
|
226
|
+
try {
|
|
227
|
+
try {
|
|
228
|
+
const descriptor = describeMcpOperationSpan(completed, this.redactor);
|
|
229
|
+
span.setAttributes(descriptor.attributes);
|
|
230
|
+
}
|
|
231
|
+
catch {
|
|
232
|
+
// Keep the already-started span valid even if optional completion data is invalid.
|
|
233
|
+
}
|
|
234
|
+
if (metric !== undefined) {
|
|
235
|
+
this.histograms.get(metric.name)?.record(metric.value, metric.attributes, operationContext);
|
|
236
|
+
metric = undefined;
|
|
237
|
+
}
|
|
238
|
+
if (completed.errorType) {
|
|
239
|
+
span.setStatus({ code: SpanStatusCode.ERROR });
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
catch {
|
|
243
|
+
// Self-telemetry must never change the MCP response.
|
|
244
|
+
}
|
|
245
|
+
finally {
|
|
246
|
+
try {
|
|
247
|
+
span.end(completed.endTimeMs);
|
|
248
|
+
}
|
|
249
|
+
catch {
|
|
250
|
+
// Self-telemetry must never change the MCP response.
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
this.recordOperationMetric(metric);
|
|
254
|
+
return correlation;
|
|
255
|
+
},
|
|
256
|
+
};
|
|
257
|
+
}
|
|
258
|
+
/** Record one already-completed client or server operation. Never throws. */
|
|
259
|
+
recordOperation(input) {
|
|
260
|
+
const { endTimeMs, errorType, rpcResponseStatusCode, jsonRpcRequestId, ...start } = input;
|
|
261
|
+
return this.startOperation(start).end({
|
|
262
|
+
endTimeMs,
|
|
263
|
+
...(errorType === undefined ? {} : { errorType }),
|
|
264
|
+
...(rpcResponseStatusCode === undefined ? {} : { rpcResponseStatusCode }),
|
|
265
|
+
...(jsonRpcRequestId === undefined ? {} : { jsonRpcRequestId }),
|
|
266
|
+
});
|
|
267
|
+
}
|
|
268
|
+
/** Record one completed client or server session histogram. Never throws. */
|
|
269
|
+
recordSession(input) {
|
|
270
|
+
if (isObservabilitySelfExportSuppressed())
|
|
271
|
+
return;
|
|
272
|
+
try {
|
|
273
|
+
const metric = describeMcpSessionMetric(input, this.redactor);
|
|
274
|
+
this.histograms.get(metric.name)?.record(metric.value, metric.attributes);
|
|
275
|
+
}
|
|
276
|
+
catch {
|
|
277
|
+
// Self-telemetry must never change connection shutdown.
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
/** Flush and stop both SDK providers during runner shutdown. */
|
|
281
|
+
async close() {
|
|
282
|
+
await Promise.all([
|
|
283
|
+
this.traceProvider?.shutdown(),
|
|
284
|
+
this.metricProvider?.shutdown(),
|
|
285
|
+
]);
|
|
286
|
+
}
|
|
287
|
+
recordOperationMetric(metric) {
|
|
288
|
+
if (metric === undefined)
|
|
289
|
+
return;
|
|
290
|
+
try {
|
|
291
|
+
this.histograms.get(metric.name)?.record(metric.value, metric.attributes);
|
|
292
|
+
}
|
|
293
|
+
catch {
|
|
294
|
+
// Self-telemetry must never change the MCP response.
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
function inactiveOperation() {
|
|
299
|
+
return {
|
|
300
|
+
run: (operation) => operation(),
|
|
301
|
+
end: () => undefined,
|
|
302
|
+
};
|
|
303
|
+
}
|
|
304
|
+
function extractPropagation(base, carrier) {
|
|
305
|
+
let extracted = STANDARD_MCP_PROPAGATOR.extract(base, carrier, defaultTextMapGetter);
|
|
306
|
+
try {
|
|
307
|
+
extracted = propagation.extract(extracted, carrier, defaultTextMapGetter);
|
|
308
|
+
}
|
|
309
|
+
catch {
|
|
310
|
+
// A host-configured propagator cannot change MCP behavior.
|
|
311
|
+
}
|
|
312
|
+
return extracted;
|
|
313
|
+
}
|
|
314
|
+
function injectPropagation(value) {
|
|
315
|
+
const staging = Object.create(null);
|
|
316
|
+
STANDARD_MCP_PROPAGATOR.inject(value, staging, defaultTextMapSetter);
|
|
317
|
+
try {
|
|
318
|
+
propagation.inject(value, staging, defaultTextMapSetter);
|
|
319
|
+
}
|
|
320
|
+
catch {
|
|
321
|
+
// Retain the standard W3C fields when a host propagator fails.
|
|
322
|
+
}
|
|
323
|
+
const bounded = Object.create(null);
|
|
324
|
+
for (const [key, entry] of prioritizedPropagationEntries(staging)) {
|
|
325
|
+
if (key.length === 0
|
|
326
|
+
|| key.length > MAX_PROPAGATION_KEY_CHARACTERS
|
|
327
|
+
|| typeof entry !== "string"
|
|
328
|
+
|| entry.length > MAX_PROPAGATION_VALUE_CHARACTERS) {
|
|
329
|
+
continue;
|
|
330
|
+
}
|
|
331
|
+
bounded[key] = entry;
|
|
332
|
+
if (Object.keys(bounded).length >= MAX_PROPAGATION_FIELDS)
|
|
333
|
+
break;
|
|
334
|
+
}
|
|
335
|
+
return Object.keys(bounded).length === 0
|
|
336
|
+
? undefined
|
|
337
|
+
: Object.freeze({ ...bounded });
|
|
338
|
+
}
|
|
339
|
+
function operationLinks(role, ambientContext, parentContext) {
|
|
340
|
+
if (role !== "server")
|
|
341
|
+
return undefined;
|
|
342
|
+
const ambient = trace.getSpanContext(ambientContext);
|
|
343
|
+
const parent = trace.getSpanContext(parentContext);
|
|
344
|
+
if (ambient === undefined || !isSpanContextValid(ambient)) {
|
|
345
|
+
return undefined;
|
|
346
|
+
}
|
|
347
|
+
if (parent !== undefined
|
|
348
|
+
&& isSpanContextValid(parent)
|
|
349
|
+
&& ambient.traceId === parent.traceId
|
|
350
|
+
&& ambient.spanId === parent.spanId)
|
|
351
|
+
return undefined;
|
|
352
|
+
return [{ context: ambient }];
|
|
353
|
+
}
|
|
354
|
+
function prioritizedPropagationEntries(value) {
|
|
355
|
+
const entries = Object.entries(value);
|
|
356
|
+
const priority = new Set(["traceparent", "tracestate", "baggage"]);
|
|
357
|
+
return [
|
|
358
|
+
...entries.filter(([key]) => priority.has(key)),
|
|
359
|
+
...entries.filter(([key]) => !priority.has(key)),
|
|
360
|
+
];
|
|
361
|
+
}
|
|
362
|
+
//# sourceMappingURL=telemetry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"telemetry.js","sourceRoot":"","sources":["../src/telemetry.ts"],"names":[],"mappings":"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"}
|
package/dist/tools.d.ts
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/** Qyl's directly registered, read-only telemetry tools. */
|
|
2
|
+
import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
3
|
+
import type { CallToolResult } from "@modelcontextprotocol/sdk/types.js";
|
|
4
|
+
/**
|
|
5
|
+
* The qyl telemetry tools only query the configured collector. They neither
|
|
6
|
+
* mutate it nor reach an unbounded set of external entities.
|
|
7
|
+
*/
|
|
8
|
+
export declare const READ_ONLY_TELEMETRY_TOOL_ANNOTATIONS: {
|
|
9
|
+
readonly readOnlyHint: true;
|
|
10
|
+
readonly destructiveHint: false;
|
|
11
|
+
readonly idempotentHint: true;
|
|
12
|
+
readonly openWorldHint: false;
|
|
13
|
+
};
|
|
14
|
+
/** Uniform failure result: clear text + isError, never a thrown exception. */
|
|
15
|
+
export declare function toolError(err: unknown): CallToolResult;
|
|
16
|
+
/** Register the four model-visible read tools against published contract schemas. */
|
|
17
|
+
export declare function registerTelemetryTools(server: McpServer): void;
|
package/dist/tools.js
ADDED
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
/** Qyl's directly registered, read-only telemetry tools. */
|
|
2
|
+
import { GetTraceInputSchema, GetTraceOutputSchema, ListSessionsInputSchema, ListSessionsOutputSchema, ListTracesInputSchema, ListTracesOutputSchema, SearchLogsInputSchema, SearchLogsOutputSchema, } from "./contract-validation.js";
|
|
3
|
+
import { fetchLogs, fetchSessions, fetchTrace, fetchTraces } from "./data.js";
|
|
4
|
+
import { summarizeLogs, summarizeSessions, summarizeTrace, summarizeTraceTable, } from "./summaries.js";
|
|
5
|
+
import { CollectorError } from "./collector.js";
|
|
6
|
+
import { redactTelemetryText, telemetryToolResult, } from "./telemetry-redaction.js";
|
|
7
|
+
/**
|
|
8
|
+
* The qyl telemetry tools only query the configured collector. They neither
|
|
9
|
+
* mutate it nor reach an unbounded set of external entities.
|
|
10
|
+
*/
|
|
11
|
+
export const READ_ONLY_TELEMETRY_TOOL_ANNOTATIONS = {
|
|
12
|
+
readOnlyHint: true,
|
|
13
|
+
destructiveHint: false,
|
|
14
|
+
idempotentHint: true,
|
|
15
|
+
openWorldHint: false,
|
|
16
|
+
};
|
|
17
|
+
/** Uniform failure result: clear text + isError, never a thrown exception. */
|
|
18
|
+
export function toolError(err) {
|
|
19
|
+
const message = err instanceof CollectorError
|
|
20
|
+
? err.message
|
|
21
|
+
: "Telemetry request failed.";
|
|
22
|
+
return {
|
|
23
|
+
content: [{ type: "text", text: redactTelemetryText(message) }],
|
|
24
|
+
isError: true,
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
/** Register the four model-visible read tools against published contract schemas. */
|
|
28
|
+
export function registerTelemetryTools(server) {
|
|
29
|
+
server.registerTool("list_traces", {
|
|
30
|
+
title: "List Traces",
|
|
31
|
+
description: "List recent qyl traces with summary fields (root span, services, duration, " +
|
|
32
|
+
"span count, error flag). Spans are omitted — use get_trace for full span data. " +
|
|
33
|
+
"Use display_traces instead when the user wants to LOOK at traces in the explorer UI.",
|
|
34
|
+
inputSchema: ListTracesInputSchema,
|
|
35
|
+
outputSchema: ListTracesOutputSchema,
|
|
36
|
+
annotations: READ_ONLY_TELEMETRY_TOOL_ANNOTATIONS,
|
|
37
|
+
}, async (args) => {
|
|
38
|
+
try {
|
|
39
|
+
const { traces, mode } = await fetchTraces(args.limit ?? 20);
|
|
40
|
+
const output = {
|
|
41
|
+
traces: traces.map(({ spans: _spans, ...summary }) => summary),
|
|
42
|
+
mode,
|
|
43
|
+
};
|
|
44
|
+
return telemetryToolResult(summarizeTraceTable(traces, mode), output);
|
|
45
|
+
}
|
|
46
|
+
catch (err) {
|
|
47
|
+
return toolError(err);
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
server.registerTool("get_trace", {
|
|
51
|
+
title: "Get Trace",
|
|
52
|
+
description: "Fetch a single qyl trace by trace id, including every span with timing, " +
|
|
53
|
+
"attributes, events, and status. Use display_traces instead when the user " +
|
|
54
|
+
"wants to SEE the trace waterfall.",
|
|
55
|
+
inputSchema: GetTraceInputSchema,
|
|
56
|
+
outputSchema: GetTraceOutputSchema,
|
|
57
|
+
annotations: READ_ONLY_TELEMETRY_TOOL_ANNOTATIONS,
|
|
58
|
+
}, async (args) => {
|
|
59
|
+
try {
|
|
60
|
+
const { trace, mode } = await fetchTrace(args.trace_id);
|
|
61
|
+
const output = { trace, mode };
|
|
62
|
+
return telemetryToolResult(summarizeTrace(trace, mode), output);
|
|
63
|
+
}
|
|
64
|
+
catch (err) {
|
|
65
|
+
return toolError(err);
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
server.registerTool("list_sessions", {
|
|
69
|
+
title: "List Sessions",
|
|
70
|
+
description: "List qyl sessions with trace/span/error counts, state, and GenAI token " +
|
|
71
|
+
"usage where present. Pass a session id to display_traces to see a " +
|
|
72
|
+
"session's traces in the explorer UI.",
|
|
73
|
+
inputSchema: ListSessionsInputSchema,
|
|
74
|
+
outputSchema: ListSessionsOutputSchema,
|
|
75
|
+
annotations: READ_ONLY_TELEMETRY_TOOL_ANNOTATIONS,
|
|
76
|
+
}, async (args) => {
|
|
77
|
+
try {
|
|
78
|
+
const { sessions, mode } = await fetchSessions(args.limit ?? 20, args.active_only);
|
|
79
|
+
const output = { sessions, mode };
|
|
80
|
+
return telemetryToolResult(summarizeSessions(sessions, mode), output);
|
|
81
|
+
}
|
|
82
|
+
catch (err) {
|
|
83
|
+
return toolError(err);
|
|
84
|
+
}
|
|
85
|
+
});
|
|
86
|
+
server.registerTool("search_logs", {
|
|
87
|
+
title: "Search Logs",
|
|
88
|
+
description: "Search qyl log records, filterable by trace id (correlated logs), service " +
|
|
89
|
+
"name, minimum severity (OTel numbers: 9 INFO, 13 WARN, 17 ERROR), and a " +
|
|
90
|
+
"body substring query.",
|
|
91
|
+
inputSchema: SearchLogsInputSchema,
|
|
92
|
+
outputSchema: SearchLogsOutputSchema,
|
|
93
|
+
annotations: READ_ONLY_TELEMETRY_TOOL_ANNOTATIONS,
|
|
94
|
+
}, async (args) => {
|
|
95
|
+
try {
|
|
96
|
+
const { logs, mode } = await fetchLogs({
|
|
97
|
+
trace_id: args.trace_id,
|
|
98
|
+
service_name: args.service_name,
|
|
99
|
+
severity_min: args.severity_min,
|
|
100
|
+
query: args.query,
|
|
101
|
+
limit: args.limit ?? 50,
|
|
102
|
+
});
|
|
103
|
+
const output = { logs, mode };
|
|
104
|
+
return telemetryToolResult(summarizeLogs(logs, mode), output);
|
|
105
|
+
}
|
|
106
|
+
catch (err) {
|
|
107
|
+
return toolError(err);
|
|
108
|
+
}
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
//# sourceMappingURL=tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}
|
package/dist/wire.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Internal aliases over the generated Qyl contract types. This module contains
|
|
3
|
+
* no handwritten wire shape; TypeSpec and its published JSON Schema own both
|
|
4
|
+
* compile-time types and runtime validators.
|
|
5
|
+
*/
|
|
6
|
+
import type { McpDataMode, McpToolStats } from "@ancplua/qyl-api-schema/types";
|
|
7
|
+
export type { LogRecord as QylLogRecord, McpDashboardStats, SessionEntity as QylSession, Span as QylSpan, Trace as QylTrace, } from "@ancplua/qyl-api-schema/types";
|
|
8
|
+
export type Mode = McpDataMode;
|
|
9
|
+
export type McpToolRow = McpToolStats;
|
|
10
|
+
export { LogRecordSchema, McpDashboardStatsSchema, ModeSchema, ProblemDetailsSchema, SessionSchema, SpanSchema, TraceSchema, TraceSummarySchema, } from "./contract-validation.js";
|
package/dist/wire.js
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Internal aliases over the generated Qyl contract types. This module contains
|
|
3
|
+
* no handwritten wire shape; TypeSpec and its published JSON Schema own both
|
|
4
|
+
* compile-time types and runtime validators.
|
|
5
|
+
*/
|
|
6
|
+
export { LogRecordSchema, McpDashboardStatsSchema, ModeSchema, ProblemDetailsSchema, SessionSchema, SpanSchema, TraceSchema, TraceSummarySchema, } from "./contract-validation.js";
|
|
7
|
+
//# sourceMappingURL=wire.js.map
|
package/dist/wire.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wire.js","sourceRoot":"","sources":["../src/wire.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAkBH,OAAO,EACL,eAAe,EACf,uBAAuB,EACvB,UAAU,EACV,oBAAoB,EACpB,aAAa,EACb,UAAU,EACV,WAAW,EACX,kBAAkB,GACnB,MAAM,0BAA0B,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "qyl-mcp-server",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"description": "qyl telemetry MCP Apps server: trace explorer and MCP dashboard for a live collector or explicit demo mode",
|
|
6
|
+
"repository": {
|
|
7
|
+
"type": "git",
|
|
8
|
+
"url": "https://github.com/ANcpLua/qyl.mcp",
|
|
9
|
+
"directory": "server"
|
|
10
|
+
},
|
|
11
|
+
"license": "MIT",
|
|
12
|
+
"main": "dist/server.js",
|
|
13
|
+
"types": "dist/server.d.ts",
|
|
14
|
+
"exports": {
|
|
15
|
+
".": {
|
|
16
|
+
"types": "./dist/server.d.ts",
|
|
17
|
+
"default": "./dist/server.js"
|
|
18
|
+
},
|
|
19
|
+
"./contract-validation": {
|
|
20
|
+
"types": "./dist/contract-validation.d.ts",
|
|
21
|
+
"default": "./dist/contract-validation.js"
|
|
22
|
+
},
|
|
23
|
+
"./secret-redactor": {
|
|
24
|
+
"types": "./dist/secret-redactor.d.ts",
|
|
25
|
+
"default": "./dist/secret-redactor.js"
|
|
26
|
+
},
|
|
27
|
+
"./atomic-json-store": {
|
|
28
|
+
"types": "./dist/atomic-json-store.d.ts",
|
|
29
|
+
"default": "./dist/atomic-json-store.js"
|
|
30
|
+
},
|
|
31
|
+
"./execution-evidence": {
|
|
32
|
+
"types": "./dist/execution-evidence.d.ts",
|
|
33
|
+
"default": "./dist/execution-evidence.js"
|
|
34
|
+
},
|
|
35
|
+
"./execution-result": {
|
|
36
|
+
"types": "./dist/execution-result.d.ts",
|
|
37
|
+
"default": "./dist/execution-result.js"
|
|
38
|
+
},
|
|
39
|
+
"./mcp-semconv": {
|
|
40
|
+
"types": "./dist/mcp-semconv.d.ts",
|
|
41
|
+
"default": "./dist/mcp-semconv.js"
|
|
42
|
+
},
|
|
43
|
+
"./observability-suppression": {
|
|
44
|
+
"types": "./dist/observability-suppression.d.ts",
|
|
45
|
+
"default": "./dist/observability-suppression.js"
|
|
46
|
+
},
|
|
47
|
+
"./telemetry": {
|
|
48
|
+
"types": "./dist/telemetry.d.ts",
|
|
49
|
+
"default": "./dist/telemetry.js"
|
|
50
|
+
}
|
|
51
|
+
},
|
|
52
|
+
"bin": {
|
|
53
|
+
"qyl-mcp-server": "dist/main.js"
|
|
54
|
+
},
|
|
55
|
+
"files": [
|
|
56
|
+
"dist"
|
|
57
|
+
],
|
|
58
|
+
"scripts": {
|
|
59
|
+
"clean": "node -e \"require('node:fs').rmSync('dist', { recursive: true, force: true }); require('node:fs').rmSync('dist-test', { recursive: true, force: true })\"",
|
|
60
|
+
"build": "npm run clean && tsc --noEmit && vite build --mode mcp-app && vite build --mode mcp-dashboard && tsc -p tsconfig.server.json && node -e \"require('node:fs').chmodSync('dist/main.js', 0o755)\"",
|
|
61
|
+
"test": "npm run build && tsc -p tsconfig.test.json && node --test dist-test/*.test.js",
|
|
62
|
+
"smoke": "node smoke-test.mjs",
|
|
63
|
+
"prepack": "npm run build"
|
|
64
|
+
},
|
|
65
|
+
"dependencies": {
|
|
66
|
+
"@ancplua/qyl-api-schema": "1.0.2",
|
|
67
|
+
"@modelcontextprotocol/ext-apps": "^1.7.4",
|
|
68
|
+
"@modelcontextprotocol/sdk": "^1.29.0",
|
|
69
|
+
"@opentelemetry/api": "^1.9.1",
|
|
70
|
+
"@opentelemetry/core": "^2.9.0",
|
|
71
|
+
"@opentelemetry/exporter-metrics-otlp-proto": "^0.220.0",
|
|
72
|
+
"@opentelemetry/exporter-trace-otlp-proto": "^0.220.0",
|
|
73
|
+
"@opentelemetry/resources": "^2.9.0",
|
|
74
|
+
"@opentelemetry/sdk-metrics": "^2.9.0",
|
|
75
|
+
"@opentelemetry/sdk-trace-base": "^2.9.0",
|
|
76
|
+
"@opentelemetry/sdk-trace-node": "^2.9.0",
|
|
77
|
+
"@opentelemetry/semantic-conventions": "^1.43.0",
|
|
78
|
+
"express": "^5.2.1",
|
|
79
|
+
"zod": "^4.4.3"
|
|
80
|
+
},
|
|
81
|
+
"devDependencies": {
|
|
82
|
+
"@types/express": "5.0.6",
|
|
83
|
+
"@types/node": "24.13.3",
|
|
84
|
+
"typescript": "7.0.2",
|
|
85
|
+
"vite": "8.1.4",
|
|
86
|
+
"vite-plugin-singlefile": "2.3.3"
|
|
87
|
+
},
|
|
88
|
+
"engines": {
|
|
89
|
+
"node": ">=22.12.0"
|
|
90
|
+
}
|
|
91
|
+
}
|