@awarecorp/mcp-logger 0.0.2-dev.0 → 0.0.2-dev.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/dist/cli/cli.d.ts.map +1 -0
  2. package/dist/cli/cli.js +84 -1
  3. package/dist/cli/cli.js.map +1 -0
  4. package/dist/cli/interceptor.d.ts.map +1 -0
  5. package/dist/cli/interceptor.js +170 -1
  6. package/dist/cli/interceptor.js.map +1 -0
  7. package/dist/cli/types.d.ts.map +1 -0
  8. package/dist/cli/types.js +5 -0
  9. package/dist/cli/types.js.map +1 -0
  10. package/dist/index.d.ts +10 -110
  11. package/dist/index.d.ts.map +1 -0
  12. package/dist/index.js +21 -1
  13. package/dist/index.js.map +1 -0
  14. package/dist/sdk/index.d.ts +66 -0
  15. package/dist/sdk/index.d.ts.map +1 -0
  16. package/dist/sdk/index.js +80 -1
  17. package/dist/sdk/index.js.map +1 -0
  18. package/dist/sdk/instrumentation.d.ts +11 -0
  19. package/dist/sdk/instrumentation.d.ts.map +1 -0
  20. package/dist/sdk/instrumentation.js +99 -1
  21. package/dist/sdk/instrumentation.js.map +1 -0
  22. package/dist/sdk/types.d.ts +11 -40
  23. package/dist/sdk/types.d.ts.map +1 -0
  24. package/dist/sdk/types.js +5 -0
  25. package/dist/sdk/types.js.map +1 -0
  26. package/dist/shared/config.d.ts +18 -0
  27. package/dist/shared/config.d.ts.map +1 -0
  28. package/dist/shared/config.js +18 -1
  29. package/dist/shared/config.js.map +1 -0
  30. package/dist/shared/span-utils.d.ts +31 -0
  31. package/dist/shared/span-utils.d.ts.map +1 -0
  32. package/dist/shared/span-utils.js +90 -1
  33. package/dist/shared/span-utils.js.map +1 -0
  34. package/dist/shared/telemetry.d.ts +25 -0
  35. package/dist/shared/telemetry.d.ts.map +1 -0
  36. package/dist/shared/telemetry.js +91 -1
  37. package/dist/shared/telemetry.js.map +1 -0
  38. package/dist/shared/types.d.ts +5 -6
  39. package/dist/shared/types.d.ts.map +1 -0
  40. package/dist/shared/types.js +5 -0
  41. package/dist/shared/types.js.map +1 -0
  42. package/package.json +5 -11
@@ -1 +1,99 @@
1
- import"@opentelemetry/sdk-node";import"@opentelemetry/exporter-trace-otlp-http";import"@opentelemetry/resources";import"@opentelemetry/api";function e(e,t=!1){throw new Error("[MCP Logger SDK] Tracer not initialized. Call initMCPLogger first.")}export{e as instrumentMCPServer};
1
+ /**
2
+ * MCP Server 자동 계측
3
+ *
4
+ * setRequestHandler를 오버라이드하여 모든 요청/응답을 자동으로 추적합니다.
5
+ */
6
+ import { getTracer } from '../shared/telemetry.js';
7
+ import { setSpanAttributes, addSpanEvent, recordSpanError, markSpanSuccess, safeStringify } from '../shared/span-utils.js';
8
+ /**
9
+ * MCP Server에 자동 계측 적용
10
+ */
11
+ export function instrumentMCPServer(server, debug = false) {
12
+ const tracer = getTracer();
13
+ if (!tracer) {
14
+ throw new Error('[MCP Logger SDK] Tracer not initialized. Call initMCPLogger first.');
15
+ }
16
+ // 원본 setRequestHandler 저장
17
+ const originalSetRequestHandler = server.setRequestHandler.bind(server);
18
+ // setRequestHandler 오버라이드
19
+ server.setRequestHandler = function (requestSchema, handler) {
20
+ // requestSchema에서 method 추출
21
+ const methodLiteral = requestSchema.shape?.method;
22
+ const method = methodLiteral?._def?.value || 'unknown';
23
+ if (debug) {
24
+ console.log(`[MCP Logger SDK] Instrumenting handler: ${method}`);
25
+ }
26
+ // 래핑된 핸들러 생성
27
+ const wrappedHandler = async (request, extra) => {
28
+ const spanName = `mcp.${method}`;
29
+ return await tracer.startActiveSpan(spanName, {
30
+ attributes: {
31
+ 'mcp.method': method,
32
+ 'mcp.request.method': request.method,
33
+ },
34
+ }, async (span) => {
35
+ const startTime = Date.now();
36
+ try {
37
+ // Request 로깅
38
+ const paramsStr = safeStringify(request.params || {});
39
+ setSpanAttributes(span, {
40
+ 'mcp.request.id': 'unknown', // MCPRequest에 id가 없으므로 'unknown'으로 설정
41
+ 'mcp.request.params.size': paramsStr?.length,
42
+ });
43
+ if (paramsStr && paramsStr.length < 1000) {
44
+ span.setAttribute('mcp.request.params', paramsStr);
45
+ }
46
+ addSpanEvent(span, 'mcp.request.received', {
47
+ 'request.method': request.method,
48
+ 'request.timestamp': startTime,
49
+ }, debug);
50
+ if (debug) {
51
+ console.log(`[MCP Logger SDK] Request received:`, {
52
+ method: request.method,
53
+ params: request.params,
54
+ });
55
+ }
56
+ // 원본 핸들러 실행
57
+ const result = await handler(request, extra);
58
+ const endTime = Date.now();
59
+ const duration = endTime - startTime;
60
+ // Response 로깅
61
+ const resultStr = safeStringify(result);
62
+ setSpanAttributes(span, {
63
+ 'mcp.duration_ms': duration,
64
+ 'mcp.response.size': resultStr?.length,
65
+ });
66
+ if (resultStr && resultStr.length < 1000) {
67
+ span.setAttribute('mcp.response.result', resultStr);
68
+ }
69
+ addSpanEvent(span, 'mcp.response.sent', {
70
+ 'response.timestamp': endTime,
71
+ 'response.duration_ms': duration,
72
+ }, debug);
73
+ markSpanSuccess(span);
74
+ if (debug) {
75
+ console.log(`[MCP Logger SDK] Response sent (${duration}ms):`, result);
76
+ }
77
+ return result;
78
+ }
79
+ catch (error) {
80
+ // Error 로깅
81
+ recordSpanError(span, error, debug);
82
+ if (debug) {
83
+ console.error(`[MCP Logger SDK] Error occurred:`, error);
84
+ }
85
+ throw error;
86
+ }
87
+ finally {
88
+ span.end();
89
+ }
90
+ });
91
+ };
92
+ // 래핑된 핸들러로 등록
93
+ return originalSetRequestHandler(requestSchema, wrappedHandler);
94
+ };
95
+ if (debug) {
96
+ console.log('[MCP Logger SDK] Server instrumentation complete');
97
+ }
98
+ }
99
+ //# sourceMappingURL=instrumentation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"instrumentation.js","sourceRoot":"","sources":["../../src/sdk/instrumentation.ts"],"names":[],"mappings":"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"}
@@ -1,66 +1,37 @@
1
- import { Server } from '@modelcontextprotocol/sdk/server/index.js';
2
- import { ZodObject, ZodLiteral } from 'zod';
3
- import { Request, Result } from '@modelcontextprotocol/sdk/types.js';
4
-
5
- /**
6
- * 공통 타입 정의
7
- */
8
- /**
9
- * 텔레메트리 초기화 옵션
10
- */
11
- interface TelemetryOptions {
12
- /**
13
- * API Key for authentication (필수)
14
- */
15
- apiKey: string;
16
- /**
17
- * 서비스 이름 (옵션)
18
- * 지정하지 않으면 자동으로 'mcp-server-{random}' 형식으로 생성
19
- */
20
- serviceName?: string;
21
- /**
22
- * 커스텀 OTLP 엔드포인트 (옵션)
23
- * 기본값: CONFIG.ENDPOINT
24
- */
25
- endpoint?: string;
26
- /**
27
- * 디버그 로그 활성화 (옵션)
28
- */
29
- debug?: boolean;
30
- }
31
-
32
1
  /**
33
2
  * SDK 타입 정의
34
3
  */
35
-
4
+ import type { Server } from '@modelcontextprotocol/sdk/server/index.js';
5
+ import type { ZodObject, ZodLiteral } from 'zod';
6
+ import type { Request, Result } from '@modelcontextprotocol/sdk/types.js';
7
+ import type { TelemetryOptions } from '../shared/types.js';
36
8
  /**
37
9
  * SDK 초기화 옵션 (TelemetryOptions 확장)
38
10
  */
39
- interface SDKInitOptions extends TelemetryOptions {
11
+ export interface SDKInitOptions extends TelemetryOptions {
40
12
  }
41
13
  /**
42
14
  * MCP JSON-RPC Request 타입
43
15
  */
44
- type MCPRequest = Request;
16
+ export type MCPRequest = Request;
45
17
  /**
46
18
  * MCP Result 타입
47
19
  */
48
- type MCPResult = Result;
20
+ export type MCPResult = Result;
49
21
  /**
50
22
  * MCP Request Schema 타입
51
23
  */
52
- type MCPRequestSchema = ZodObject<{
24
+ export type MCPRequestSchema = ZodObject<{
53
25
  method: ZodLiteral<string>;
54
26
  }>;
55
27
  /**
56
28
  * Request Handler Extra 타입
57
29
  */
58
- interface RequestHandlerExtra {
30
+ export interface RequestHandlerExtra {
59
31
  signal: AbortSignal;
60
32
  }
61
33
  /**
62
34
  * MCP Server 타입 (재export)
63
35
  */
64
- type MCPServer = Server;
65
-
66
- export type { MCPRequest, MCPRequestSchema, MCPResult, MCPServer, RequestHandlerExtra, SDKInitOptions };
36
+ export type MCPServer = Server;
37
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/sdk/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACxE,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AACjD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAE3D;;GAEG;AACH,MAAM,WAAW,cAAe,SAAQ,gBAAgB;CAAG;AAE3D;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,OAAO,CAAC;AAEjC;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC;AAE/B;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,SAAS,CAAC;IACvC,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;CAC5B,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,WAAW,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * SDK 타입 정의
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/sdk/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * 공통 설정 상수
3
+ */
4
+ export declare const CONFIG: {
5
+ /**
6
+ * OTLP Endpoint (하드코딩)
7
+ */
8
+ readonly ENDPOINT: "https://aware.mcypher.com/v1/traces";
9
+ /**
10
+ * SDK 버전
11
+ */
12
+ readonly SDK_VERSION: "1.0.0";
13
+ /**
14
+ * 서비스 이름 접두사
15
+ */
16
+ readonly SERVICE_NAME_PREFIX: "mcp-server";
17
+ };
18
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/shared/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,eAAO,MAAM,MAAM;IACjB;;OAEG;;IAGH;;OAEG;;IAGH;;OAEG;;CAEK,CAAC"}
@@ -1 +1,18 @@
1
- const e={ENDPOINT:"https://aware.mcypher.com/v1/traces",SDK_VERSION:"1.0.0",SERVICE_NAME_PREFIX:"mcp-server"};export{e as CONFIG};
1
+ /**
2
+ * 공통 설정 상수
3
+ */
4
+ export const CONFIG = {
5
+ /**
6
+ * OTLP Endpoint (하드코딩)
7
+ */
8
+ ENDPOINT: 'https://aware.mcypher.com/v1/traces',
9
+ /**
10
+ * SDK 버전
11
+ */
12
+ SDK_VERSION: '1.0.0',
13
+ /**
14
+ * 서비스 이름 접두사
15
+ */
16
+ SERVICE_NAME_PREFIX: 'mcp-server',
17
+ };
18
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/shared/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB;;OAEG;IACH,QAAQ,EAAE,qCAAqC;IAE/C;;OAEG;IACH,WAAW,EAAE,OAAO;IAEpB;;OAEG;IACH,mBAAmB,EAAE,YAAY;CACzB,CAAC"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Span 생성 및 관리 유틸리티
3
+ */
4
+ import { Span } from '@opentelemetry/api';
5
+ import type { SpanAttributes } from './types.js';
6
+ /**
7
+ * Span에 안전하게 속성 추가
8
+ */
9
+ export declare function setSpanAttributes(span: Span, attributes: SpanAttributes): void;
10
+ /**
11
+ * Span에 이벤트 추가 (에러 핸들링 포함)
12
+ */
13
+ export declare function addSpanEvent(span: Span, name: string, attributes?: SpanAttributes, debug?: boolean): void;
14
+ /**
15
+ * Span에 에러 기록
16
+ */
17
+ export declare function recordSpanError(span: Span, error: Error | unknown, debug?: boolean): void;
18
+ /**
19
+ * Span을 성공으로 마크
20
+ */
21
+ export declare function markSpanSuccess(span: Span): void;
22
+ /**
23
+ * 객체를 안전하게 JSON 문자열로 변환
24
+ * (circular reference 처리)
25
+ */
26
+ export declare function safeStringify(obj: any, maxLength?: number): string | null;
27
+ /**
28
+ * Trace context 전파 헤더 생성
29
+ */
30
+ export declare function getTraceHeaders(): Record<string, string>;
31
+ //# sourceMappingURL=span-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"span-utils.d.ts","sourceRoot":"","sources":["../../src/shared/span-utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,IAAI,EAAkC,MAAM,oBAAoB,CAAC;AAC1E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,cAAc,GAAG,IAAI,CAM9E;AAED;;GAEG;AACH,wBAAgB,YAAY,CAC1B,IAAI,EAAE,IAAI,EACV,IAAI,EAAE,MAAM,EACZ,UAAU,CAAC,EAAE,cAAc,EAC3B,KAAK,CAAC,EAAE,OAAO,GACd,IAAI,CAYN;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,KAAK,GAAG,OAAO,EACtB,KAAK,CAAC,EAAE,OAAO,GACd,IAAI,CAoBN;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAEhD;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,SAAS,GAAE,MAAc,GAAG,MAAM,GAAG,IAAI,CAUhF;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAaxD"}
@@ -1 +1,90 @@
1
- import{SpanStatusCode as t,context as r,trace as e}from"@opentelemetry/api";function n(t,r){for(const[e,n]of Object.entries(r))null!=n&&t.setAttribute(e,n)}function o(t,r,e,n){try{e?t.addEvent(r,e):t.addEvent(r)}catch(t){n&&console.error("[MCP Logger] Failed to add span event:",t)}}function c(r,e,n){const o=e instanceof Error?e.message:"Unknown error",c=e instanceof Error?e.constructor.name:"Error";e instanceof Error&&r.recordException(e),r.setStatus({code:t.ERROR,message:o}),r.setAttribute("error",!0),r.setAttribute("error.type",c),r.setAttribute("error.message",o),n&&console.error("[MCP Logger] Error recorded in span:",e)}function s(r){r.setStatus({code:t.OK})}function a(t,r=1e4){try{const e=JSON.stringify(t);return e.length>r?e.slice(0,r)+"... (truncated)":e}catch(t){return null}}function i(){const t={},n=r.active(),o=e.getSpan(n);if(o){const r=o.spanContext();r&&(t.traceparent=`00-${r.traceId}-${r.spanId}-01`)}return t}export{o as addSpanEvent,i as getTraceHeaders,s as markSpanSuccess,c as recordSpanError,a as safeStringify,n as setSpanAttributes};
1
+ /**
2
+ * Span 생성 및 관리 유틸리티
3
+ */
4
+ import { SpanStatusCode, context, trace } from '@opentelemetry/api';
5
+ /**
6
+ * Span에 안전하게 속성 추가
7
+ */
8
+ export function setSpanAttributes(span, attributes) {
9
+ for (const [key, value] of Object.entries(attributes)) {
10
+ if (value !== undefined && value !== null) {
11
+ span.setAttribute(key, value);
12
+ }
13
+ }
14
+ }
15
+ /**
16
+ * Span에 이벤트 추가 (에러 핸들링 포함)
17
+ */
18
+ export function addSpanEvent(span, name, attributes, debug) {
19
+ try {
20
+ if (attributes) {
21
+ span.addEvent(name, attributes);
22
+ }
23
+ else {
24
+ span.addEvent(name);
25
+ }
26
+ }
27
+ catch (err) {
28
+ if (debug) {
29
+ console.error('[MCP Logger] Failed to add span event:', err);
30
+ }
31
+ }
32
+ }
33
+ /**
34
+ * Span에 에러 기록
35
+ */
36
+ export function recordSpanError(span, error, debug) {
37
+ const errorMessage = error instanceof Error ? error.message : 'Unknown error';
38
+ const errorName = error instanceof Error ? error.constructor.name : 'Error';
39
+ if (error instanceof Error) {
40
+ span.recordException(error);
41
+ }
42
+ span.setStatus({
43
+ code: SpanStatusCode.ERROR,
44
+ message: errorMessage,
45
+ });
46
+ span.setAttribute('error', true);
47
+ span.setAttribute('error.type', errorName);
48
+ span.setAttribute('error.message', errorMessage);
49
+ if (debug) {
50
+ console.error('[MCP Logger] Error recorded in span:', error);
51
+ }
52
+ }
53
+ /**
54
+ * Span을 성공으로 마크
55
+ */
56
+ export function markSpanSuccess(span) {
57
+ span.setStatus({ code: SpanStatusCode.OK });
58
+ }
59
+ /**
60
+ * 객체를 안전하게 JSON 문자열로 변환
61
+ * (circular reference 처리)
62
+ */
63
+ export function safeStringify(obj, maxLength = 10000) {
64
+ try {
65
+ const str = JSON.stringify(obj);
66
+ if (str.length > maxLength) {
67
+ return str.slice(0, maxLength) + '... (truncated)';
68
+ }
69
+ return str;
70
+ }
71
+ catch (err) {
72
+ return null;
73
+ }
74
+ }
75
+ /**
76
+ * Trace context 전파 헤더 생성
77
+ */
78
+ export function getTraceHeaders() {
79
+ const headers = {};
80
+ const ctx = context.active();
81
+ const span = trace.getSpan(ctx);
82
+ if (span) {
83
+ const spanContext = span.spanContext();
84
+ if (spanContext) {
85
+ headers['traceparent'] = `00-${spanContext.traceId}-${spanContext.spanId}-01`;
86
+ }
87
+ }
88
+ return headers;
89
+ }
90
+ //# sourceMappingURL=span-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"span-utils.js","sourceRoot":"","sources":["../../src/shared/span-utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * 공통 텔레메트리 레이어
3
+ *
4
+ * OpenTelemetry SDK 초기화 및 관리를 담당합니다.
5
+ * SDK와 CLI 양쪽에서 공통으로 사용됩니다.
6
+ */
7
+ import { Tracer } from '@opentelemetry/api';
8
+ import type { TelemetryOptions } from './types.js';
9
+ /**
10
+ * OpenTelemetry SDK 초기화
11
+ */
12
+ export declare function initializeTelemetry(options: TelemetryOptions): Tracer;
13
+ /**
14
+ * 현재 Tracer 반환
15
+ */
16
+ export declare function getTracer(): Tracer | null;
17
+ /**
18
+ * 초기화 여부 확인
19
+ */
20
+ export declare function isInitializedTelemetry(): boolean;
21
+ /**
22
+ * Telemetry 종료
23
+ */
24
+ export declare function shutdownTelemetry(): Promise<void>;
25
+ //# sourceMappingURL=telemetry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telemetry.d.ts","sourceRoot":"","sources":["../../src/shared/telemetry.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,EAAS,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAEnD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAMnD;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,gBAAgB,GAAG,MAAM,CAoDrE;AAED;;GAEG;AACH,wBAAgB,SAAS,IAAI,MAAM,GAAG,IAAI,CAEzC;AAED;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,OAAO,CAEhD;AAED;;GAEG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,CAWvD"}
@@ -1 +1,91 @@
1
- import{NodeSDK as e}from"@opentelemetry/sdk-node";import{OTLPTraceExporter as r}from"@opentelemetry/exporter-trace-otlp-http";import{Resource as o}from"@opentelemetry/resources";import{trace as t}from"@opentelemetry/api";const n="https://aware.mcypher.com/v1/traces",i="1.0.0";let c=null,s=null,l=!1;function a(a){if(l)return a.debug&&console.error("[MCP Logger] Telemetry already initialized, returning existing tracer"),s;const g=a.serviceName||`mcp-server-${Math.random().toString(36).slice(2,8)}`;a.debug&&(console.error("[MCP Logger] Initializing telemetry..."),console.error(`[MCP Logger] Endpoint: ${a.endpoint||n}`),console.error(`[MCP Logger] Service: ${g}`)),c=new e({resource:new o({"service.name":g,"service.version":i}),traceExporter:new r({url:a.endpoint||n,headers:{"x-api-key":a.apiKey}})}),c.start(),s=t.getTracer("mcp-logger",i),l=!0,a.debug&&console.error("[MCP Logger] Telemetry initialized successfully");const p=async()=>{a.debug&&console.error("[MCP Logger] Shutting down telemetry..."),await u()};return process.once("SIGTERM",p),process.once("SIGINT",p),s}function g(){return s}function p(){return l}async function u(){if(c)try{await c.shutdown(),c=null,s=null,l=!1}catch(e){console.error("[MCP Logger] Error shutting down telemetry:",e)}}export{g as getTracer,a as initializeTelemetry,p as isInitializedTelemetry,u as shutdownTelemetry};
1
+ /**
2
+ * 공통 텔레메트리 레이어
3
+ *
4
+ * OpenTelemetry SDK 초기화 및 관리를 담당합니다.
5
+ * SDK와 CLI 양쪽에서 공통으로 사용됩니다.
6
+ */
7
+ import { NodeSDK } from '@opentelemetry/sdk-node';
8
+ import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-http';
9
+ import { Resource } from '@opentelemetry/resources';
10
+ import { trace } from '@opentelemetry/api';
11
+ import { CONFIG } from './config.js';
12
+ let sdk = null;
13
+ let tracer = null;
14
+ let isInitialized = false;
15
+ /**
16
+ * OpenTelemetry SDK 초기화
17
+ */
18
+ export function initializeTelemetry(options) {
19
+ if (isInitialized) {
20
+ if (options.debug) {
21
+ console.error('[MCP Logger] Telemetry already initialized, returning existing tracer');
22
+ }
23
+ return tracer;
24
+ }
25
+ // 서비스 이름 생성
26
+ const serviceName = options.serviceName ||
27
+ `${CONFIG.SERVICE_NAME_PREFIX}-${Math.random().toString(36).slice(2, 8)}`;
28
+ if (options.debug) {
29
+ console.error('[MCP Logger] Initializing telemetry...');
30
+ console.error(`[MCP Logger] Endpoint: ${options.endpoint || CONFIG.ENDPOINT}`);
31
+ console.error(`[MCP Logger] Service: ${serviceName}`);
32
+ }
33
+ // SDK 초기화
34
+ sdk = new NodeSDK({
35
+ resource: new Resource({
36
+ ["service.name"]: serviceName,
37
+ ["service.version"]: CONFIG.SDK_VERSION,
38
+ }),
39
+ traceExporter: new OTLPTraceExporter({
40
+ url: options.endpoint || CONFIG.ENDPOINT,
41
+ headers: {
42
+ 'x-api-key': options.apiKey,
43
+ },
44
+ }),
45
+ });
46
+ sdk.start();
47
+ tracer = trace.getTracer('mcp-logger', CONFIG.SDK_VERSION);
48
+ isInitialized = true;
49
+ if (options.debug) {
50
+ console.error('[MCP Logger] Telemetry initialized successfully');
51
+ }
52
+ // 프로세스 종료 시 정리
53
+ const cleanup = async () => {
54
+ if (options.debug) {
55
+ console.error('[MCP Logger] Shutting down telemetry...');
56
+ }
57
+ await shutdownTelemetry();
58
+ };
59
+ process.once('SIGTERM', cleanup);
60
+ process.once('SIGINT', cleanup);
61
+ return tracer;
62
+ }
63
+ /**
64
+ * 현재 Tracer 반환
65
+ */
66
+ export function getTracer() {
67
+ return tracer;
68
+ }
69
+ /**
70
+ * 초기화 여부 확인
71
+ */
72
+ export function isInitializedTelemetry() {
73
+ return isInitialized;
74
+ }
75
+ /**
76
+ * Telemetry 종료
77
+ */
78
+ export async function shutdownTelemetry() {
79
+ if (sdk) {
80
+ try {
81
+ await sdk.shutdown();
82
+ sdk = null;
83
+ tracer = null;
84
+ isInitialized = false;
85
+ }
86
+ catch (err) {
87
+ console.error('[MCP Logger] Error shutting down telemetry:', err);
88
+ }
89
+ }
90
+ }
91
+ //# sourceMappingURL=telemetry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telemetry.js","sourceRoot":"","sources":["../../src/shared/telemetry.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@
4
4
  /**
5
5
  * 텔레메트리 초기화 옵션
6
6
  */
7
- interface TelemetryOptions {
7
+ export interface TelemetryOptions {
8
8
  /**
9
9
  * API Key for authentication (필수)
10
10
  */
@@ -27,17 +27,17 @@ interface TelemetryOptions {
27
27
  /**
28
28
  * Span 속성 인터페이스
29
29
  */
30
- interface SpanAttributes {
30
+ export interface SpanAttributes {
31
31
  [key: string]: string | number | boolean | undefined;
32
32
  }
33
33
  /**
34
34
  * MCP 메시지 방향
35
35
  */
36
- type MessageDirection = 'request' | 'response';
36
+ export type MessageDirection = 'request' | 'response';
37
37
  /**
38
38
  * JSON-RPC 메시지 타입
39
39
  */
40
- interface JSONRPCMessage {
40
+ export interface JSONRPCMessage {
41
41
  jsonrpc: '2.0';
42
42
  id?: string | number;
43
43
  method?: string;
@@ -49,5 +49,4 @@ interface JSONRPCMessage {
49
49
  data?: any;
50
50
  };
51
51
  }
52
-
53
- export type { JSONRPCMessage, MessageDirection, SpanAttributes, TelemetryOptions };
52
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/shared/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;CACtD;AAED;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,UAAU,CAAC;AAEtD;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,KAAK,CAAC;IACf,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,GAAG,CAAC;IACb,MAAM,CAAC,EAAE,GAAG,CAAC;IACb,KAAK,CAAC,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,CAAC,EAAE,GAAG,CAAC;KACZ,CAAC;CACH"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * 공통 타입 정의
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/shared/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@awarecorp/mcp-logger",
3
- "version": "0.0.2-dev.0",
3
+ "version": "0.0.2-dev.1",
4
4
  "description": "Unified MCP observability solution - SDK for code integration and CLI for zero-config wrapping",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -14,12 +14,11 @@
14
14
  "!dist/cli/**/*.d.ts"
15
15
  ],
16
16
  "scripts": {
17
- "build": "npm run clean && rollup -c",
18
- "build:readable": "npm run clean && tsc",
17
+ "build": "tsc",
19
18
  "prepublishOnly": "npm run build",
20
19
  "clean": "rm -rf dist",
21
20
  "dev": "tsc --watch",
22
- "test:cli": "npm run build:readable && node bin/mcp-logger.js --help",
21
+ "test:cli": "npm run build && node bin/mcp-logger.js --help",
23
22
  "publish:stable": "npm run build && npm publish --access public",
24
23
  "publish:dev": "npm run build && npm publish --access public --tag dev",
25
24
  "version:patch": "npm version patch",
@@ -49,21 +48,16 @@
49
48
  }
50
49
  },
51
50
  "dependencies": {
51
+ "@opentelemetry/sdk-node": "^0.52.0",
52
52
  "@opentelemetry/api": "^1.9.0",
53
53
  "@opentelemetry/exporter-trace-otlp-http": "^0.52.0",
54
54
  "@opentelemetry/resources": "^1.25.0",
55
- "@opentelemetry/sdk-node": "^0.52.0",
56
55
  "@opentelemetry/semantic-conventions": "^1.25.0",
57
56
  "commander": "^11.1.0"
58
57
  },
59
58
  "devDependencies": {
60
- "@modelcontextprotocol/sdk": "^0.5.0",
61
- "@rollup/plugin-terser": "^0.4.4",
62
- "@rollup/plugin-typescript": "^12.1.4",
63
59
  "@types/node": "^20.0.0",
64
- "rollup": "^4.52.5",
65
- "rollup-plugin-dts": "^6.2.3",
66
- "tslib": "^2.8.1",
60
+ "@modelcontextprotocol/sdk": "^0.5.0",
67
61
  "typescript": "^5.3.0"
68
62
  },
69
63
  "engines": {