@nestjs-mcp/server 0.1.0-alpha.10

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 (100) hide show
  1. package/.copilotignore +38 -0
  2. package/.devcontainer/Dockerfile.dev +28 -0
  3. package/.devcontainer/devcontainer.json +56 -0
  4. package/.devcontainer/docker-compose.yml +15 -0
  5. package/.dockerignore +37 -0
  6. package/.prettierrc +4 -0
  7. package/LICENSE +21 -0
  8. package/README.md +540 -0
  9. package/dist/controllers/sse/index.d.ts +2 -0
  10. package/dist/controllers/sse/index.js +19 -0
  11. package/dist/controllers/sse/index.js.map +1 -0
  12. package/dist/controllers/sse/sse.controller.d.ts +10 -0
  13. package/dist/controllers/sse/sse.controller.js +57 -0
  14. package/dist/controllers/sse/sse.controller.js.map +1 -0
  15. package/dist/controllers/sse/sse.service.d.ts +16 -0
  16. package/dist/controllers/sse/sse.service.js +78 -0
  17. package/dist/controllers/sse/sse.service.js.map +1 -0
  18. package/dist/controllers/streamable/index.d.ts +2 -0
  19. package/dist/controllers/streamable/index.js +19 -0
  20. package/dist/controllers/streamable/index.js.map +1 -0
  21. package/dist/controllers/streamable/streamable.controller.d.ts +9 -0
  22. package/dist/controllers/streamable/streamable.controller.js +62 -0
  23. package/dist/controllers/streamable/streamable.controller.js.map +1 -0
  24. package/dist/controllers/streamable/streamable.service.d.ts +24 -0
  25. package/dist/controllers/streamable/streamable.service.js +118 -0
  26. package/dist/controllers/streamable/streamable.service.js.map +1 -0
  27. package/dist/decorators/capabilities.constants.d.ts +4 -0
  28. package/dist/decorators/capabilities.constants.js +8 -0
  29. package/dist/decorators/capabilities.constants.js.map +1 -0
  30. package/dist/decorators/capabilities.decorators.d.ts +8 -0
  31. package/dist/decorators/capabilities.decorators.js +49 -0
  32. package/dist/decorators/capabilities.decorators.js.map +1 -0
  33. package/dist/decorators/index.d.ts +2 -0
  34. package/dist/decorators/index.js +19 -0
  35. package/dist/decorators/index.js.map +1 -0
  36. package/dist/index.d.ts +4 -0
  37. package/dist/index.js +21 -0
  38. package/dist/index.js.map +1 -0
  39. package/dist/interceptors/message.interceptor.d.ts +10 -0
  40. package/dist/interceptors/message.interceptor.js +61 -0
  41. package/dist/interceptors/message.interceptor.js.map +1 -0
  42. package/dist/interfaces/capabilities.interface.d.ts +52 -0
  43. package/dist/interfaces/capabilities.interface.js +3 -0
  44. package/dist/interfaces/capabilities.interface.js.map +1 -0
  45. package/dist/interfaces/context.interface.d.ts +6 -0
  46. package/dist/interfaces/context.interface.js +3 -0
  47. package/dist/interfaces/context.interface.js.map +1 -0
  48. package/dist/interfaces/index.d.ts +2 -0
  49. package/dist/interfaces/index.js +19 -0
  50. package/dist/interfaces/index.js.map +1 -0
  51. package/dist/interfaces/mcp-server-options.interface.d.ts +42 -0
  52. package/dist/interfaces/mcp-server-options.interface.js +3 -0
  53. package/dist/interfaces/mcp-server-options.interface.js.map +1 -0
  54. package/dist/interfaces/message.types.d.ts +8 -0
  55. package/dist/interfaces/message.types.js +3 -0
  56. package/dist/interfaces/message.types.js.map +1 -0
  57. package/dist/mcp.module.d.ts +13 -0
  58. package/dist/mcp.module.js +193 -0
  59. package/dist/mcp.module.js.map +1 -0
  60. package/dist/registry/discovery.service.d.ts +16 -0
  61. package/dist/registry/discovery.service.js +85 -0
  62. package/dist/registry/discovery.service.js.map +1 -0
  63. package/dist/registry/index.d.ts +2 -0
  64. package/dist/registry/index.js +19 -0
  65. package/dist/registry/index.js.map +1 -0
  66. package/dist/registry/logger.service.d.ts +16 -0
  67. package/dist/registry/logger.service.js +97 -0
  68. package/dist/registry/logger.service.js.map +1 -0
  69. package/dist/registry/registry.service.d.ts +16 -0
  70. package/dist/registry/registry.service.js +170 -0
  71. package/dist/registry/registry.service.js.map +1 -0
  72. package/dist/services/message.service.d.ts +7 -0
  73. package/dist/services/message.service.js +25 -0
  74. package/dist/services/message.service.js.map +1 -0
  75. package/dist/tsconfig.build.tsbuildinfo +1 -0
  76. package/eslint.config.mjs +40 -0
  77. package/package.json +109 -0
  78. package/src/controllers/sse/index.ts +2 -0
  79. package/src/controllers/sse/sse.controller.ts +25 -0
  80. package/src/controllers/sse/sse.service.ts +90 -0
  81. package/src/controllers/streamable/index.ts +2 -0
  82. package/src/controllers/streamable/streamable.controller.ts +24 -0
  83. package/src/controllers/streamable/streamable.service.ts +169 -0
  84. package/src/decorators/capabilities.constants.ts +7 -0
  85. package/src/decorators/capabilities.decorators.ts +150 -0
  86. package/src/decorators/index.ts +2 -0
  87. package/src/index.ts +11 -0
  88. package/src/interceptors/message.interceptor.ts +70 -0
  89. package/src/interfaces/capabilities.interface.ts +95 -0
  90. package/src/interfaces/context.interface.ts +18 -0
  91. package/src/interfaces/index.ts +2 -0
  92. package/src/interfaces/mcp-server-options.interface.ts +105 -0
  93. package/src/interfaces/message.types.ts +13 -0
  94. package/src/mcp.module.ts +250 -0
  95. package/src/mcp.service.spec.ts +28 -0
  96. package/src/registry/discovery.service.ts +116 -0
  97. package/src/registry/index.ts +2 -0
  98. package/src/registry/logger.service.ts +143 -0
  99. package/src/registry/registry.service.ts +282 -0
  100. package/src/services/message.service.ts +18 -0
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=context.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.interface.js","sourceRoot":"","sources":["../../src/interfaces/context.interface.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export * from './context.interface';
2
+ export * from './mcp-server-options.interface';
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./context.interface"), exports);
18
+ __exportStar(require("./mcp-server-options.interface"), exports);
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/interfaces/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,sDAAoC;AACpC,iEAA+C"}
@@ -0,0 +1,42 @@
1
+ import { StreamableHTTPServerTransportOptions } from '@modelcontextprotocol/sdk/server/streamableHttp.js';
2
+ import { ProtocolOptions } from '@modelcontextprotocol/sdk/shared/protocol.js';
3
+ import { Implementation, ServerCapabilities } from '@modelcontextprotocol/sdk/types.js';
4
+ import { Provider, Type } from '@nestjs/common';
5
+ export type ServerOptions = {
6
+ instructions?: string;
7
+ capabilities?: ServerCapabilities;
8
+ protocolOptions?: ProtocolOptions;
9
+ };
10
+ export type McpServerOptions = {
11
+ serverInfo: Implementation;
12
+ options?: ServerOptions;
13
+ logging?: McpLoggingOptions;
14
+ };
15
+ export interface McpLoggingOptions {
16
+ enabled?: boolean;
17
+ level?: 'debug' | 'verbose' | 'log' | 'warn' | 'error';
18
+ }
19
+ export interface McpModuleOptions {
20
+ imports?: Type<any>[];
21
+ providers?: Provider[];
22
+ name: string;
23
+ version: string;
24
+ instructions?: string;
25
+ capabilities?: ServerCapabilities;
26
+ protocolOptions?: ProtocolOptions;
27
+ logging?: McpLoggingOptions;
28
+ transports?: McpModuleTransportOptions;
29
+ }
30
+ export type McpModuleTransportOptions = {
31
+ streamable?: {
32
+ enabled: boolean;
33
+ options?: Omit<StreamableHTTPServerTransportOptions, 'onsessioninitialized' | 'sessionIdGenerator'> & {
34
+ sessionIdGenerator?: () => string | undefined;
35
+ };
36
+ };
37
+ sse?: {
38
+ enabled: boolean;
39
+ };
40
+ };
41
+ export interface McpFeatureOptions {
42
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=mcp-server-options.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-server-options.interface.js","sourceRoot":"","sources":["../../src/interfaces/mcp-server-options.interface.ts"],"names":[],"mappings":""}
@@ -0,0 +1,8 @@
1
+ import { Request as ExpressRequest, Response as ExpressResponse } from 'express';
2
+ export type Request = ExpressRequest & {
3
+ auth?: any;
4
+ };
5
+ export type McpMessage = {
6
+ req: Request;
7
+ res: ExpressResponse;
8
+ };
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=message.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message.types.js","sourceRoot":"","sources":["../../src/interfaces/message.types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,13 @@
1
+ import { DynamicModule } from '@nestjs/common';
2
+ import { McpFeatureOptions, McpModuleOptions } from './interfaces/mcp-server-options.interface';
3
+ export declare class McpModule {
4
+ private static getActiveTransportControllersAndProviders;
5
+ private static buildServerConfig;
6
+ static forRoot(options: McpModuleOptions): DynamicModule;
7
+ static forRootAsync(options: {
8
+ imports?: any[];
9
+ useFactory: (...args: unknown[]) => Promise<McpModuleOptions> | McpModuleOptions;
10
+ inject?: any[];
11
+ }): DynamicModule;
12
+ static forFeature(_options?: McpFeatureOptions): DynamicModule;
13
+ }
@@ -0,0 +1,193 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var McpModule_1;
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.McpModule = void 0;
11
+ const common_1 = require("@nestjs/common");
12
+ const core_1 = require("@nestjs/core");
13
+ const async_hooks_1 = require("async_hooks");
14
+ const sse_1 = require("./controllers/sse");
15
+ const streamable_1 = require("./controllers/streamable");
16
+ const message_interceptor_1 = require("./interceptors/message.interceptor");
17
+ const discovery_service_1 = require("./registry/discovery.service");
18
+ const logger_service_1 = require("./registry/logger.service");
19
+ const registry_service_1 = require("./registry/registry.service");
20
+ const message_service_1 = require("./services/message.service");
21
+ let McpModule = McpModule_1 = class McpModule {
22
+ static getActiveTransportControllersAndProviders(transports) {
23
+ const controllers = new Set();
24
+ const providers = new Set();
25
+ const STREAMABLE_TRANSPORT = {
26
+ controller: streamable_1.StreamableController,
27
+ service: streamable_1.StreamableService,
28
+ };
29
+ const SSE_TRANSPORT = {
30
+ controller: sse_1.SseController,
31
+ service: sse_1.SseService,
32
+ };
33
+ const defaultTransports = {
34
+ streamable: { enabled: true },
35
+ sse: { enabled: true },
36
+ };
37
+ const config = {
38
+ streamable: {
39
+ ...defaultTransports.streamable,
40
+ ...(transports?.streamable ?? {}),
41
+ },
42
+ sse: {
43
+ ...defaultTransports.sse,
44
+ ...(transports?.sse ?? {}),
45
+ },
46
+ };
47
+ if (config.streamable.enabled) {
48
+ controllers.add(STREAMABLE_TRANSPORT.controller);
49
+ providers.add(STREAMABLE_TRANSPORT.service);
50
+ }
51
+ if (config.sse.enabled) {
52
+ controllers.add(SSE_TRANSPORT.controller);
53
+ providers.add(SSE_TRANSPORT.service);
54
+ }
55
+ return {
56
+ controllers: Array.from(controllers),
57
+ providers: Array.from(providers),
58
+ };
59
+ }
60
+ static buildServerConfig(options) {
61
+ const serverInfo = {
62
+ name: options.name,
63
+ version: options.version,
64
+ };
65
+ const serverOptions = {
66
+ instructions: options?.instructions,
67
+ capabilities: options?.capabilities,
68
+ ...(options?.protocolOptions || {}),
69
+ };
70
+ const loggingOptions = {
71
+ enabled: options.logging?.enabled !== false,
72
+ level: options.logging?.level || 'verbose',
73
+ };
74
+ return { serverInfo, serverOptions, loggingOptions };
75
+ }
76
+ static forRoot(options) {
77
+ const imports = options.imports || [];
78
+ const { controllers, providers } = this.getActiveTransportControllersAndProviders(options.transports);
79
+ const allProviders = [...(options.providers || []), ...providers];
80
+ const { serverInfo, serverOptions, loggingOptions } = this.buildServerConfig(options);
81
+ return {
82
+ module: McpModule_1,
83
+ imports,
84
+ controllers,
85
+ providers: [
86
+ ...allProviders,
87
+ {
88
+ provide: 'MCP_SERVER_OPTIONS',
89
+ useValue: {
90
+ serverInfo,
91
+ options: serverOptions,
92
+ logging: loggingOptions,
93
+ },
94
+ },
95
+ {
96
+ provide: 'MCP_LOGGING_OPTIONS',
97
+ useValue: loggingOptions,
98
+ },
99
+ {
100
+ provide: 'MCP_TRANSPORT_OPTIONS',
101
+ useValue: options.transports,
102
+ },
103
+ ],
104
+ global: true,
105
+ };
106
+ }
107
+ static forRootAsync(options) {
108
+ const { imports = [], useFactory, inject = [] } = options;
109
+ const safeInject = Array.isArray(inject) ? inject : [];
110
+ const safeImports = Array.isArray(imports) ? imports : [];
111
+ const providers = [
112
+ {
113
+ provide: 'MCP_SERVER_OPTIONS',
114
+ useFactory: async (...args) => {
115
+ const mcpOptions = await useFactory(...args);
116
+ const { serverInfo, serverOptions, loggingOptions } = this.buildServerConfig(mcpOptions);
117
+ return {
118
+ serverInfo,
119
+ options: serverOptions,
120
+ logging: loggingOptions,
121
+ };
122
+ },
123
+ inject: safeInject,
124
+ },
125
+ {
126
+ provide: 'MCP_LOGGING_OPTIONS',
127
+ useFactory: async (...args) => {
128
+ const mcpOptions = await useFactory(...args);
129
+ return {
130
+ enabled: mcpOptions.logging?.enabled !== false,
131
+ level: mcpOptions.logging?.level || 'verbose',
132
+ };
133
+ },
134
+ inject: safeInject,
135
+ },
136
+ ];
137
+ const asyncControllersFactory = async (...args) => {
138
+ const mcpOptions = await useFactory(...args);
139
+ return this.getActiveTransportControllersAndProviders(mcpOptions.transports).controllers;
140
+ };
141
+ const asyncProvidersFactory = async (...args) => {
142
+ const mcpOptions = await useFactory(...args);
143
+ const { providers } = this.getActiveTransportControllersAndProviders(mcpOptions.transports);
144
+ return [...(mcpOptions.providers || []), ...providers];
145
+ };
146
+ return {
147
+ module: McpModule_1,
148
+ imports: safeImports,
149
+ controllers: [],
150
+ providers: [
151
+ ...providers,
152
+ {
153
+ provide: '__MCP_ASYNC_CONTROLLERS__',
154
+ useFactory: asyncControllersFactory,
155
+ inject: safeInject,
156
+ },
157
+ {
158
+ provide: '__MCP_ASYNC_PROVIDERS__',
159
+ useFactory: asyncProvidersFactory,
160
+ inject: safeInject,
161
+ },
162
+ ],
163
+ global: true,
164
+ };
165
+ }
166
+ static forFeature(_options) {
167
+ return {
168
+ module: McpModule_1,
169
+ };
170
+ }
171
+ };
172
+ exports.McpModule = McpModule;
173
+ exports.McpModule = McpModule = McpModule_1 = __decorate([
174
+ (0, common_1.Module)({
175
+ imports: [core_1.DiscoveryModule],
176
+ providers: [
177
+ registry_service_1.RegistryService,
178
+ discovery_service_1.DiscoveryService,
179
+ {
180
+ provide: async_hooks_1.AsyncLocalStorage,
181
+ useValue: new async_hooks_1.AsyncLocalStorage(),
182
+ },
183
+ logger_service_1.McpLoggerService,
184
+ message_service_1.MessageService,
185
+ {
186
+ provide: core_1.APP_INTERCEPTOR,
187
+ useClass: message_interceptor_1.RequestContextInterceptor,
188
+ },
189
+ ],
190
+ exports: [message_service_1.MessageService],
191
+ })
192
+ ], McpModule);
193
+ //# sourceMappingURL=mcp.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp.module.js","sourceRoot":"","sources":["../src/mcp.module.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import { MetadataScanner, DiscoveryService as NestDiscoveryService, Reflector } from '@nestjs/core';
2
+ import { InstanceWrapper } from '@nestjs/core/injector/instance-wrapper';
3
+ export interface MethodWithMetadata<T = unknown> {
4
+ method: string;
5
+ metadata: T;
6
+ handler: (...args: any[]) => any;
7
+ instance: object;
8
+ }
9
+ export declare class DiscoveryService {
10
+ private readonly discoveryService;
11
+ private readonly metadataScanner;
12
+ private readonly reflector;
13
+ constructor(discoveryService: NestDiscoveryService, metadataScanner: MetadataScanner, reflector: Reflector);
14
+ getAllMethodsWithMetadata<T = unknown>(metadataKey: string): MethodWithMetadata<T>[];
15
+ getMethodsWithMetadataFromProvider<T = unknown>(provider: InstanceWrapper, metadataKey: string): MethodWithMetadata<T>[];
16
+ }
@@ -0,0 +1,85 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.DiscoveryService = void 0;
13
+ const common_1 = require("@nestjs/common");
14
+ const core_1 = require("@nestjs/core");
15
+ let DiscoveryService = class DiscoveryService {
16
+ discoveryService;
17
+ metadataScanner;
18
+ reflector;
19
+ constructor(discoveryService, metadataScanner, reflector) {
20
+ this.discoveryService = discoveryService;
21
+ this.metadataScanner = metadataScanner;
22
+ this.reflector = reflector;
23
+ }
24
+ getAllMethodsWithMetadata(metadataKey) {
25
+ const providers = this.discoveryService.getProviders();
26
+ const result = [];
27
+ for (const provider of providers) {
28
+ if (!provider.instance) {
29
+ continue;
30
+ }
31
+ const methods = this.getMethodsWithMetadataFromProvider(provider, metadataKey);
32
+ if (methods.length > 0) {
33
+ result.push(...methods);
34
+ }
35
+ }
36
+ return result;
37
+ }
38
+ getMethodsWithMetadataFromProvider(provider, metadataKey) {
39
+ if (!provider.instance) {
40
+ return [];
41
+ }
42
+ const instance = provider.instance;
43
+ const instancePrototype = Object.getPrototypeOf(instance);
44
+ if (!instancePrototype) {
45
+ return [];
46
+ }
47
+ const methodNames = this.metadataScanner.getAllMethodNames(instancePrototype);
48
+ const result = [];
49
+ for (const methodName of methodNames) {
50
+ const methodFunction = instancePrototype[methodName];
51
+ if (typeof methodFunction !== 'function') {
52
+ continue;
53
+ }
54
+ const metadata = this.reflector.get(metadataKey, methodFunction);
55
+ if (metadata) {
56
+ const handlerProperty = instance[methodName];
57
+ if (typeof handlerProperty !== 'function') {
58
+ continue;
59
+ }
60
+ const handler = ((...args) => {
61
+ return handlerProperty.apply(instance, args);
62
+ });
63
+ Object.defineProperty(handler, 'name', {
64
+ value: methodName,
65
+ writable: false,
66
+ });
67
+ result.push({
68
+ method: methodName,
69
+ metadata: metadata,
70
+ handler,
71
+ instance,
72
+ });
73
+ }
74
+ }
75
+ return result;
76
+ }
77
+ };
78
+ exports.DiscoveryService = DiscoveryService;
79
+ exports.DiscoveryService = DiscoveryService = __decorate([
80
+ (0, common_1.Injectable)(),
81
+ __metadata("design:paramtypes", [core_1.DiscoveryService,
82
+ core_1.MetadataScanner,
83
+ core_1.Reflector])
84
+ ], DiscoveryService);
85
+ //# sourceMappingURL=discovery.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"discovery.service.js","sourceRoot":"","sources":["../../src/registry/discovery.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA4C;AAC5C,uCAIsB;AAaf,IAAM,gBAAgB,GAAtB,MAAM,gBAAgB;IAER;IACA;IACA;IAHnB,YACmB,gBAAsC,EACtC,eAAgC,EAChC,SAAoB;QAFpB,qBAAgB,GAAhB,gBAAgB,CAAsB;QACtC,oBAAe,GAAf,eAAe,CAAiB;QAChC,cAAS,GAAT,SAAS,CAAW;IACpC,CAAC;IAKG,yBAAyB,CAC9B,WAAmB;QAEnB,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,CAAC;QACvD,MAAM,MAAM,GAA4B,EAAE,CAAC;QAG3C,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YACjC,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;gBACvB,SAAS;YACX,CAAC;YAED,MAAM,OAAO,GAAG,IAAI,CAAC,kCAAkC,CACrD,QAAQ,EACR,WAAW,CACZ,CAAC;YAEF,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACvB,MAAM,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAKM,kCAAkC,CACvC,QAAyB,EACzB,WAAmB;QAEnB,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;YACvB,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAA4B,CAAC;QACvD,MAAM,iBAAiB,GAAG,MAAM,CAAC,cAAc,CAAC,QAAQ,CAGvD,CAAC;QAEF,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACvB,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,WAAW,GACf,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;QAC5D,MAAM,MAAM,GAA4B,EAAE,CAAC;QAE3C,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;YAErC,MAAM,cAAc,GAAG,iBAAiB,CAAC,UAAU,CAAC,CAAC;YACrD,IAAI,OAAO,cAAc,KAAK,UAAU,EAAE,CAAC;gBACzC,SAAS;YACX,CAAC;YAED,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAI,WAAW,EAAE,cAAc,CAAC,CAAC;YAEpE,IAAI,QAAQ,EAAE,CAAC;gBACb,MAAM,eAAe,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC;gBAE7C,IAAI,OAAO,eAAe,KAAK,UAAU,EAAE,CAAC;oBAC1C,SAAS;gBACX,CAAC;gBAED,MAAM,OAAO,GAAG,CAAC,CAAC,GAAG,IAAe,EAAW,EAAE;oBAC/C,OAAO,eAAe,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;gBAC/C,CAAC,CAA4B,CAAC;gBAG9B,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE;oBACrC,KAAK,EAAE,UAAU;oBACjB,QAAQ,EAAE,KAAK;iBAChB,CAAC,CAAC;gBAEH,MAAM,CAAC,IAAI,CAAC;oBACV,MAAM,EAAE,UAAU;oBAClB,QAAQ,EAAE,QAAa;oBACvB,OAAO;oBACP,QAAQ;iBACT,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;CACF,CAAA;AAjGY,4CAAgB;2BAAhB,gBAAgB;IAD5B,IAAA,mBAAU,GAAE;qCAG0B,uBAAoB;QACrB,sBAAe;QACrB,gBAAS;GAJ5B,gBAAgB,CAiG5B"}
@@ -0,0 +1,2 @@
1
+ export * from './discovery.service';
2
+ export * from './registry.service';
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./discovery.service"), exports);
18
+ __exportStar(require("./registry.service"), exports);
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/registry/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,sDAAoC;AACpC,qDAAmC"}
@@ -0,0 +1,16 @@
1
+ import { LoggerService } from '@nestjs/common';
2
+ import { McpLoggingOptions } from '../interfaces/mcp-server-options.interface';
3
+ export declare class McpLoggerService implements LoggerService {
4
+ private readonly logger;
5
+ private readonly options;
6
+ constructor(options?: McpLoggingOptions);
7
+ debug(message: string, context?: string): void;
8
+ verbose(message: string, context?: string): void;
9
+ log(message: string, context?: string): void;
10
+ warn(message: string, context?: string): void;
11
+ error(message: string, trace?: string, context?: string): void;
12
+ isEnabled(): boolean;
13
+ getLevel(): string;
14
+ private formatContext;
15
+ private getLevelValue;
16
+ }
@@ -0,0 +1,97 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.McpLoggerService = void 0;
16
+ const common_1 = require("@nestjs/common");
17
+ let McpLoggerService = class McpLoggerService {
18
+ logger;
19
+ options;
20
+ constructor(options) {
21
+ this.options = {
22
+ enabled: options?.enabled !== false,
23
+ level: options?.level || 'verbose',
24
+ };
25
+ this.logger = new common_1.Logger('MCP');
26
+ }
27
+ debug(message, context) {
28
+ if (!this.options.enabled ||
29
+ this.getLevelValue(this.options.level) > this.getLevelValue('debug')) {
30
+ return;
31
+ }
32
+ const formattedContext = this.formatContext(context);
33
+ this.logger.debug(message, formattedContext);
34
+ }
35
+ verbose(message, context) {
36
+ if (!this.options.enabled ||
37
+ this.getLevelValue(this.options.level) > this.getLevelValue('verbose')) {
38
+ return;
39
+ }
40
+ const formattedContext = this.formatContext(context);
41
+ this.logger.verbose(message, formattedContext);
42
+ }
43
+ log(message, context) {
44
+ if (!this.options.enabled ||
45
+ this.getLevelValue(this.options.level) > this.getLevelValue('log')) {
46
+ return;
47
+ }
48
+ const formattedContext = this.formatContext(context);
49
+ this.logger.log(message, formattedContext);
50
+ }
51
+ warn(message, context) {
52
+ if (!this.options.enabled ||
53
+ this.getLevelValue(this.options.level) > this.getLevelValue('warn')) {
54
+ return;
55
+ }
56
+ const formattedContext = this.formatContext(context);
57
+ this.logger.warn(message, formattedContext);
58
+ }
59
+ error(message, trace, context) {
60
+ if (!this.options.enabled ||
61
+ this.getLevelValue(this.options.level) > this.getLevelValue('error')) {
62
+ return;
63
+ }
64
+ const formattedContext = this.formatContext(context);
65
+ this.logger.error(message, trace, formattedContext);
66
+ }
67
+ isEnabled() {
68
+ return this.options.enabled;
69
+ }
70
+ getLevel() {
71
+ return this.options.level;
72
+ }
73
+ formatContext(context) {
74
+ if (!context) {
75
+ return '@mcp';
76
+ }
77
+ return `@mcp:${context}`;
78
+ }
79
+ getLevelValue(level) {
80
+ const levels = {
81
+ debug: 0,
82
+ verbose: 1,
83
+ log: 2,
84
+ warn: 3,
85
+ error: 4,
86
+ };
87
+ return levels[level] ?? 2;
88
+ }
89
+ };
90
+ exports.McpLoggerService = McpLoggerService;
91
+ exports.McpLoggerService = McpLoggerService = __decorate([
92
+ (0, common_1.Injectable)(),
93
+ __param(0, (0, common_1.Optional)()),
94
+ __param(0, (0, common_1.Inject)('MCP_LOGGING_OPTIONS')),
95
+ __metadata("design:paramtypes", [Object])
96
+ ], McpLoggerService);
97
+ //# sourceMappingURL=logger.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.service.js","sourceRoot":"","sources":["../../src/registry/logger.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAMwB;AAQjB,IAAM,gBAAgB,GAAtB,MAAM,gBAAgB;IACV,MAAM,CAAS;IACf,OAAO,CAA8B;IAEtD,YAC6C,OAA2B;QAEtE,IAAI,CAAC,OAAO,GAAG;YACb,OAAO,EAAE,OAAO,EAAE,OAAO,KAAK,KAAK;YACnC,KAAK,EAAE,OAAO,EAAE,KAAK,IAAI,SAAS;SACnC,CAAC;QAEF,IAAI,CAAC,MAAM,GAAG,IAAI,eAAM,CAAC,KAAK,CAAC,CAAC;IAClC,CAAC;IAKD,KAAK,CAAC,OAAe,EAAE,OAAgB;QACrC,IACE,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO;YACrB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,EACpE,CAAC;YACD,OAAO;QACT,CAAC;QAED,MAAM,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QACrD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;IAC/C,CAAC;IAKD,OAAO,CAAC,OAAe,EAAE,OAAgB;QACvC,IACE,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO;YACrB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,EACtE,CAAC;YACD,OAAO;QACT,CAAC;QAED,MAAM,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QACrD,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;IACjD,CAAC;IAKD,GAAG,CAAC,OAAe,EAAE,OAAgB;QACnC,IACE,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO;YACrB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,EAClE,CAAC;YACD,OAAO;QACT,CAAC;QAED,MAAM,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QACrD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;IAC7C,CAAC;IAKD,IAAI,CAAC,OAAe,EAAE,OAAgB;QACpC,IACE,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO;YACrB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EACnE,CAAC;YACD,OAAO;QACT,CAAC;QAED,MAAM,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QACrD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;IAC9C,CAAC;IAKD,KAAK,CAAC,OAAe,EAAE,KAAc,EAAE,OAAgB;QACrD,IACE,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO;YACrB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,EACpE,CAAC;YACD,OAAO;QACT,CAAC;QAED,MAAM,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QACrD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,gBAAgB,CAAC,CAAC;IACtD,CAAC;IAKD,SAAS;QACP,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;IAC9B,CAAC;IAKD,QAAQ;QACN,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;IAC5B,CAAC;IAKO,aAAa,CAAC,OAAgB;QACpC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,OAAO,QAAQ,OAAO,EAAE,CAAC;IAC3B,CAAC;IAKO,aAAa,CAAC,KAAa;QACjC,MAAM,MAAM,GAA2B;YACrC,KAAK,EAAE,CAAC;YACR,OAAO,EAAE,CAAC;YACV,GAAG,EAAE,CAAC;YACN,IAAI,EAAE,CAAC;YACP,KAAK,EAAE,CAAC;SACT,CAAC;QAEF,OAAO,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;CACF,CAAA;AAhIY,4CAAgB;2BAAhB,gBAAgB;IAD5B,IAAA,mBAAU,GAAE;IAMR,WAAA,IAAA,iBAAQ,GAAE,CAAA;IAAE,WAAA,IAAA,eAAM,EAAC,qBAAqB,CAAC,CAAA;;GALjC,gBAAgB,CAgI5B"}
@@ -0,0 +1,16 @@
1
+ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ import { MessageService } from '../services/message.service';
3
+ import { DiscoveryService } from './discovery.service';
4
+ import { McpLoggerService } from './logger.service';
5
+ export declare class RegistryService {
6
+ private readonly discoveryService;
7
+ private readonly logger;
8
+ private readonly messageService;
9
+ constructor(discoveryService: DiscoveryService, logger: McpLoggerService, messageService: MessageService);
10
+ registerAll(server: McpServer): Promise<void>;
11
+ private runGuards;
12
+ private wrappedHandler;
13
+ private registerResources;
14
+ private registerPrompts;
15
+ private registerTools;
16
+ }