@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.
- package/.copilotignore +38 -0
- package/.devcontainer/Dockerfile.dev +28 -0
- package/.devcontainer/devcontainer.json +56 -0
- package/.devcontainer/docker-compose.yml +15 -0
- package/.dockerignore +37 -0
- package/.prettierrc +4 -0
- package/LICENSE +21 -0
- package/README.md +540 -0
- package/dist/controllers/sse/index.d.ts +2 -0
- package/dist/controllers/sse/index.js +19 -0
- package/dist/controllers/sse/index.js.map +1 -0
- package/dist/controllers/sse/sse.controller.d.ts +10 -0
- package/dist/controllers/sse/sse.controller.js +57 -0
- package/dist/controllers/sse/sse.controller.js.map +1 -0
- package/dist/controllers/sse/sse.service.d.ts +16 -0
- package/dist/controllers/sse/sse.service.js +78 -0
- package/dist/controllers/sse/sse.service.js.map +1 -0
- package/dist/controllers/streamable/index.d.ts +2 -0
- package/dist/controllers/streamable/index.js +19 -0
- package/dist/controllers/streamable/index.js.map +1 -0
- package/dist/controllers/streamable/streamable.controller.d.ts +9 -0
- package/dist/controllers/streamable/streamable.controller.js +62 -0
- package/dist/controllers/streamable/streamable.controller.js.map +1 -0
- package/dist/controllers/streamable/streamable.service.d.ts +24 -0
- package/dist/controllers/streamable/streamable.service.js +118 -0
- package/dist/controllers/streamable/streamable.service.js.map +1 -0
- package/dist/decorators/capabilities.constants.d.ts +4 -0
- package/dist/decorators/capabilities.constants.js +8 -0
- package/dist/decorators/capabilities.constants.js.map +1 -0
- package/dist/decorators/capabilities.decorators.d.ts +8 -0
- package/dist/decorators/capabilities.decorators.js +49 -0
- package/dist/decorators/capabilities.decorators.js.map +1 -0
- package/dist/decorators/index.d.ts +2 -0
- package/dist/decorators/index.js +19 -0
- package/dist/decorators/index.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.js +21 -0
- package/dist/index.js.map +1 -0
- package/dist/interceptors/message.interceptor.d.ts +10 -0
- package/dist/interceptors/message.interceptor.js +61 -0
- package/dist/interceptors/message.interceptor.js.map +1 -0
- package/dist/interfaces/capabilities.interface.d.ts +52 -0
- package/dist/interfaces/capabilities.interface.js +3 -0
- package/dist/interfaces/capabilities.interface.js.map +1 -0
- package/dist/interfaces/context.interface.d.ts +6 -0
- package/dist/interfaces/context.interface.js +3 -0
- package/dist/interfaces/context.interface.js.map +1 -0
- package/dist/interfaces/index.d.ts +2 -0
- package/dist/interfaces/index.js +19 -0
- package/dist/interfaces/index.js.map +1 -0
- package/dist/interfaces/mcp-server-options.interface.d.ts +42 -0
- package/dist/interfaces/mcp-server-options.interface.js +3 -0
- package/dist/interfaces/mcp-server-options.interface.js.map +1 -0
- package/dist/interfaces/message.types.d.ts +8 -0
- package/dist/interfaces/message.types.js +3 -0
- package/dist/interfaces/message.types.js.map +1 -0
- package/dist/mcp.module.d.ts +13 -0
- package/dist/mcp.module.js +193 -0
- package/dist/mcp.module.js.map +1 -0
- package/dist/registry/discovery.service.d.ts +16 -0
- package/dist/registry/discovery.service.js +85 -0
- package/dist/registry/discovery.service.js.map +1 -0
- package/dist/registry/index.d.ts +2 -0
- package/dist/registry/index.js +19 -0
- package/dist/registry/index.js.map +1 -0
- package/dist/registry/logger.service.d.ts +16 -0
- package/dist/registry/logger.service.js +97 -0
- package/dist/registry/logger.service.js.map +1 -0
- package/dist/registry/registry.service.d.ts +16 -0
- package/dist/registry/registry.service.js +170 -0
- package/dist/registry/registry.service.js.map +1 -0
- package/dist/services/message.service.d.ts +7 -0
- package/dist/services/message.service.js +25 -0
- package/dist/services/message.service.js.map +1 -0
- package/dist/tsconfig.build.tsbuildinfo +1 -0
- package/eslint.config.mjs +40 -0
- package/package.json +109 -0
- package/src/controllers/sse/index.ts +2 -0
- package/src/controllers/sse/sse.controller.ts +25 -0
- package/src/controllers/sse/sse.service.ts +90 -0
- package/src/controllers/streamable/index.ts +2 -0
- package/src/controllers/streamable/streamable.controller.ts +24 -0
- package/src/controllers/streamable/streamable.service.ts +169 -0
- package/src/decorators/capabilities.constants.ts +7 -0
- package/src/decorators/capabilities.decorators.ts +150 -0
- package/src/decorators/index.ts +2 -0
- package/src/index.ts +11 -0
- package/src/interceptors/message.interceptor.ts +70 -0
- package/src/interfaces/capabilities.interface.ts +95 -0
- package/src/interfaces/context.interface.ts +18 -0
- package/src/interfaces/index.ts +2 -0
- package/src/interfaces/mcp-server-options.interface.ts +105 -0
- package/src/interfaces/message.types.ts +13 -0
- package/src/mcp.module.ts +250 -0
- package/src/mcp.service.spec.ts +28 -0
- package/src/registry/discovery.service.ts +116 -0
- package/src/registry/index.ts +2 -0
- package/src/registry/logger.service.ts +143 -0
- package/src/registry/registry.service.ts +282 -0
- package/src/services/message.service.ts +18 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.interface.js","sourceRoot":"","sources":["../../src/interfaces/context.interface.ts"],"names":[],"mappings":""}
|
|
@@ -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 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-server-options.interface.js","sourceRoot":"","sources":["../../src/interfaces/mcp-server-options.interface.ts"],"names":[],"mappings":""}
|
|
@@ -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,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":"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"}
|
|
@@ -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
|
+
}
|