easy-mcp-nest 0.1.3 → 0.2.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.
Files changed (52) hide show
  1. package/README.md +57 -27
  2. package/dist/EasyMCP.js +53 -1
  3. package/dist/EasyMCP.js.map +1 -1
  4. package/dist/app.module.js +3 -1
  5. package/dist/app.module.js.map +1 -1
  6. package/dist/config/config-validator.js +92 -20
  7. package/dist/config/config-validator.js.map +1 -1
  8. package/dist/config/constants.d.ts +3 -0
  9. package/dist/config/constants.js +4 -1
  10. package/dist/config/constants.js.map +1 -1
  11. package/dist/config/mcp-config.interface.d.ts +51 -5
  12. package/dist/core/core.module.js +3 -1
  13. package/dist/core/core.module.js.map +1 -1
  14. package/dist/core/mcp-server/mcp-server.service.d.ts +15 -1
  15. package/dist/core/mcp-server/mcp-server.service.js +300 -23
  16. package/dist/core/mcp-server/mcp-server.service.js.map +1 -1
  17. package/dist/core/utils/sanitize.util.d.ts +3 -0
  18. package/dist/core/utils/sanitize.util.js +51 -0
  19. package/dist/core/utils/sanitize.util.js.map +1 -1
  20. package/dist/core/utils/schema-validator.d.ts +6 -1
  21. package/dist/core/utils/schema-validator.js +15 -6
  22. package/dist/core/utils/schema-validator.js.map +1 -1
  23. package/dist/core/utils/tool-naming-validator.d.ts +4 -0
  24. package/dist/core/utils/tool-naming-validator.js +52 -0
  25. package/dist/core/utils/tool-naming-validator.js.map +1 -0
  26. package/dist/interface/mcp-protocol.interface.d.ts +136 -2
  27. package/dist/interface/mcp-protocol.interface.js +6 -0
  28. package/dist/interface/mcp-protocol.interface.js.map +1 -1
  29. package/dist/prompts/prompt-registry.service.d.ts +28 -0
  30. package/dist/prompts/prompt-registry.service.js +55 -0
  31. package/dist/prompts/prompt-registry.service.js.map +1 -0
  32. package/dist/prompts/prompt.interface.d.ts +30 -0
  33. package/dist/prompts/prompt.interface.js +3 -0
  34. package/dist/prompts/prompt.interface.js.map +1 -0
  35. package/dist/prompts/prompt.module.d.ts +2 -0
  36. package/dist/prompts/prompt.module.js +21 -0
  37. package/dist/prompts/prompt.module.js.map +1 -0
  38. package/dist/resources/resource-registry.service.d.ts +18 -0
  39. package/dist/resources/resource-registry.service.js +56 -0
  40. package/dist/resources/resource-registry.service.js.map +1 -0
  41. package/dist/resources/resource.interface.d.ts +19 -0
  42. package/dist/resources/resource.interface.js +3 -0
  43. package/dist/resources/resource.interface.js.map +1 -0
  44. package/dist/resources/resource.module.d.ts +2 -0
  45. package/dist/resources/resource.module.js +21 -0
  46. package/dist/resources/resource.module.js.map +1 -0
  47. package/dist/tooling/tool-registry/tool-registry.service.d.ts +5 -3
  48. package/dist/tooling/tool-registry/tool-registry.service.js +82 -49
  49. package/dist/tooling/tool-registry/tool-registry.service.js.map +1 -1
  50. package/dist/tooling/tool.interface.d.ts +27 -7
  51. package/dist/tsconfig.build.tsbuildinfo +1 -1
  52. package/package.json +1 -1
package/README.md CHANGED
@@ -86,6 +86,8 @@ The main configuration object passed to `EasyMCP.initialize()`:
86
86
  ```typescript
87
87
  interface McpConfig {
88
88
  tools: ToolRegistrationInput[];
89
+ resources?: ResourceRegistrationInput[]; // Optional resources
90
+ prompts?: PromptRegistrationInput[]; // Optional prompts
89
91
  serverInfo?: ServerInfo;
90
92
  }
91
93
  ```
@@ -100,14 +102,19 @@ interface ToolRegistrationInput {
100
102
  description: string;
101
103
  function: (args: Record<string, any>) => Promise<any>;
102
104
  inputSchema: {
103
- type: 'OBJECT';
104
- properties: Record<string, {
105
- type: 'STRING' | 'NUMBER' | 'INTEGER' | 'BOOLEAN' | 'ARRAY' | 'OBJECT';
106
- description: string;
107
- enum?: string[];
105
+ type: 'object'; // JSON Schema 2020-12 format
106
+ properties?: Record<string, {
107
+ type: 'string' | 'number' | 'integer' | 'boolean' | 'array' | 'object';
108
+ description?: string;
109
+ enum?: (string | number | boolean)[];
110
+ default?: any;
111
+ // Additional JSON Schema 2020-12 properties supported
112
+ [key: string]: any;
108
113
  }>;
109
114
  required?: string[];
115
+ [key: string]: any; // Additional JSON Schema 2020-12 properties
110
116
  };
117
+ icon?: string; // Optional icon URI
111
118
  }
112
119
  ```
113
120
 
@@ -134,20 +141,20 @@ const searchTool: ToolRegistrationInput = {
134
141
  name: 'searchDatabase',
135
142
  description: 'Searches the database for matching records',
136
143
  function: searchDatabase,
137
- inputSchema: {
138
- type: 'OBJECT',
139
- properties: {
140
- query: {
141
- type: 'STRING',
142
- description: 'The search query',
143
- },
144
- limit: {
145
- type: 'INTEGER',
146
- description: 'Maximum number of results to return',
144
+ inputSchema: {
145
+ type: 'object', // JSON Schema 2020-12 format
146
+ properties: {
147
+ query: {
148
+ type: 'string',
149
+ description: 'The search query',
150
+ },
151
+ limit: {
152
+ type: 'integer',
153
+ description: 'Maximum number of results to return',
154
+ },
155
+ },
156
+ required: ['query'],
147
157
  },
148
- },
149
- required: ['query'],
150
- },
151
158
  };
152
159
  ```
153
160
 
@@ -222,11 +229,11 @@ graph TB
222
229
 
223
230
  ## MCP Protocol Compliance
224
231
 
225
- EasyMCP implements the standard Model Context Protocol (MCP) specification version **2024-11-05**.
232
+ EasyMCP implements the standard Model Context Protocol (MCP) specification version **2025-11-25**.
226
233
 
227
234
  ### Protocol Version
228
235
 
229
- - **Supported Version**: `2024-11-05`
236
+ - **Supported Version**: `2025-11-25`
230
237
  - **Validation**: The framework validates that clients use the supported protocol version during initialization
231
238
  - **Error Handling**: Unsupported protocol versions are rejected with a clear error message
232
239
 
@@ -239,15 +246,28 @@ EasyMCP implements the following MCP protocol methods:
239
246
  - Returns server capabilities (currently supports tools)
240
247
  - Returns server information (name and version)
241
248
 
242
- - **`tools/list`** - Returns all registered tools with their JSON Schema definitions
249
+ - **`tools/list`** - Returns all registered tools with their JSON Schema 2020-12 definitions
243
250
  - Returns array of tool definitions in MCP format
244
- - Each tool includes name, description, and inputSchema
251
+ - Each tool includes name, description, inputSchema, and optional icon
245
252
 
246
253
  - **`tools/call`** - Executes a tool with provided arguments and returns the result
247
- - Validates tool arguments against schema
254
+ - Validates tool arguments against JSON Schema 2020-12
248
255
  - Executes tool function
249
256
  - Returns result in MCP content format
250
257
  - Handles errors according to MCP error code specification
258
+ - Supports cancellation tokens for long-running operations
259
+
260
+ - **`resources/list`** - Returns all registered resources
261
+ - Returns array of resource definitions with URI, name, description, mimeType, and optional icon
262
+
263
+ - **`resources/read`** - Reads the content of a resource by URI
264
+ - Returns resource content in MCP format
265
+
266
+ - **`prompts/list`** - Returns all registered prompts
267
+ - Returns array of prompt definitions with name, description, arguments, and optional icon
268
+
269
+ - **`prompts/get`** - Generates prompt content from arguments
270
+ - Returns prompt messages in MCP format
251
271
 
252
272
  ### Error Codes
253
273
 
@@ -278,11 +298,21 @@ MCP_USE_CONTENT_LENGTH=1
278
298
 
279
299
  This enables the MCP-specified Content-Length header format, which some clients may not parse correctly.
280
300
 
301
+ ### Features
302
+
303
+ - **Tools**: Full support for tool registration and execution with JSON Schema 2020-12
304
+ - **Resources**: Support for resource registration and reading
305
+ - **Prompts**: Support for prompt templates and generation
306
+ - **Client Features**: Basic support for Sampling, Roots, and Elicitation (client-initiated)
307
+ - **Metadata/Icons**: Optional icon support for tools, resources, and prompts
308
+ - **Progress & Cancellation**: Basic support for cancellation tokens in tool execution
309
+ - **Tool Naming**: Validation according to MCP 2025-11-25 naming guidelines
310
+
281
311
  ### Limitations
282
312
 
283
313
  - **Transport**: Currently only stdio transport is supported. WebSocket and HTTP transports are not available.
284
- - **Capabilities**: Only tools capability is implemented. Resources and prompts capabilities are not yet supported.
285
- - **Protocol Version**: Only protocol version 2024-11-05 is supported. Older or newer versions will be rejected.
314
+ - **Protocol Version**: Only protocol version 2025-11-25 is supported. Older or newer versions will be rejected.
315
+ - **Resources Subscribe/Unsubscribe**: Basic resource subscription is not yet implemented (resources/list and resources/read are supported)
286
316
 
287
317
  For more information on testing EasyMCP with real MCP clients, see [Integration Testing Guide](docs/INTEGRATION_TESTING.md).
288
318
 
@@ -348,7 +378,7 @@ All error messages are designed to be helpful for debugging:
348
378
 
349
379
  Example error messages:
350
380
  - `"Tool 'getUser': property 'userId' must have a description"`
351
- - `"Unsupported protocol version: 2024-10-01. Supported version: 2024-11-05"`
381
+ - `"Unsupported protocol version: 2024-10-01. Supported version: 2025-11-25"`
352
382
  - `"Missing required parameter: userId"`
353
383
 
354
384
  ## Troubleshooting
@@ -376,7 +406,7 @@ If you encounter TypeScript or import errors:
376
406
 
377
407
  If you see "Unsupported protocol version" errors:
378
408
 
379
- 1. **Check Client Version**: Ensure your MCP client uses protocol version `2024-11-05`
409
+ 1. **Check Client Version**: Ensure your MCP client uses protocol version `2025-11-25`
380
410
  2. **Update Client**: Update your MCP client to the latest version
381
411
  3. **Debug Mode**: Set `DEBUG=1` to see detailed protocol version information
382
412
 
package/dist/EasyMCP.js CHANGED
@@ -7,6 +7,8 @@ const constants_1 = require("./config/constants");
7
7
  const mcp_server_service_1 = require("./core/mcp-server/mcp-server.service");
8
8
  const config_validator_1 = require("./config/config-validator");
9
9
  const tool_registry_service_1 = require("./tooling/tool-registry/tool-registry.service");
10
+ const resource_registry_service_1 = require("./resources/resource-registry.service");
11
+ const prompt_registry_service_1 = require("./prompts/prompt-registry.service");
10
12
  const logger_util_1 = require("./core/utils/logger.util");
11
13
  const sanitize_util_1 = require("./core/utils/sanitize.util");
12
14
  const nestjs_stderr_logger_1 = require("./core/utils/nestjs-stderr-logger");
@@ -34,7 +36,13 @@ class EasyMCP {
34
36
  }
35
37
  catch (error) {
36
38
  const errorMessage = error instanceof Error ? error.message : String(error);
37
- throw new Error(`Failed to register tool '${tool.name}': ${errorMessage}`);
39
+ const sanitizedToolName = (0, sanitize_util_1.sanitizeName)(tool.name);
40
+ logger_util_1.logger.error("EasyMCP", "Failed to register tool", {
41
+ component: "EasyMCP",
42
+ toolName: sanitizedToolName,
43
+ error: (0, sanitize_util_1.sanitizeErrorMessage)(error),
44
+ });
45
+ throw new Error(`Failed to register tool '${sanitizedToolName}'`);
38
46
  }
39
47
  }
40
48
  logger_util_1.logger.info("EasyMCP", `Registered ${config.tools.length} tool(s) from configuration`, {
@@ -42,6 +50,50 @@ class EasyMCP {
42
50
  toolCount: config.tools.length,
43
51
  });
44
52
  }
53
+ if (config.resources && config.resources.length > 0) {
54
+ const resourceRegistry = moduleRef.get(resource_registry_service_1.ResourceRegistryService);
55
+ for (const resource of config.resources) {
56
+ try {
57
+ resourceRegistry.registerResourceFromConfig(resource);
58
+ }
59
+ catch (error) {
60
+ const errorMessage = error instanceof Error ? error.message : String(error);
61
+ const sanitizedUri = (0, sanitize_util_1.sanitizeUri)(resource.uri);
62
+ logger_util_1.logger.error("EasyMCP", "Failed to register resource", {
63
+ component: "EasyMCP",
64
+ uri: sanitizedUri,
65
+ error: (0, sanitize_util_1.sanitizeErrorMessage)(error),
66
+ });
67
+ throw new Error(`Failed to register resource '${sanitizedUri}'`);
68
+ }
69
+ }
70
+ logger_util_1.logger.info("EasyMCP", `Registered ${config.resources.length} resource(s) from configuration`, {
71
+ component: "EasyMCP",
72
+ resourceCount: config.resources.length,
73
+ });
74
+ }
75
+ if (config.prompts && config.prompts.length > 0) {
76
+ const promptRegistry = moduleRef.get(prompt_registry_service_1.PromptRegistryService);
77
+ for (const prompt of config.prompts) {
78
+ try {
79
+ promptRegistry.registerPromptFromConfig(prompt);
80
+ }
81
+ catch (error) {
82
+ const errorMessage = error instanceof Error ? error.message : String(error);
83
+ const sanitizedPromptName = (0, sanitize_util_1.sanitizeName)(prompt.name);
84
+ logger_util_1.logger.error("EasyMCP", "Failed to register prompt", {
85
+ component: "EasyMCP",
86
+ promptName: sanitizedPromptName,
87
+ error: (0, sanitize_util_1.sanitizeErrorMessage)(error),
88
+ });
89
+ throw new Error(`Failed to register prompt '${sanitizedPromptName}'`);
90
+ }
91
+ }
92
+ logger_util_1.logger.info("EasyMCP", `Registered ${config.prompts.length} prompt(s) from configuration`, {
93
+ component: "EasyMCP",
94
+ promptCount: config.prompts.length,
95
+ });
96
+ }
45
97
  logger_util_1.logger.info("EasyMCP", "EasyMCP Framework initialized successfully", {
46
98
  component: "EasyMCP",
47
99
  });
@@ -1 +1 @@
1
- {"version":3,"file":"EasyMCP.js","sourceRoot":"","sources":["../src/EasyMCP.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"EasyMCP.js","sourceRoot":"","sources":["../src/EasyMCP.ts"],"names":[],"mappings":";;;AAAA,uCAA2C;AAE3C,6CAAyC;AAEzC,kDAAkD;AAClD,6EAAwE;AAExE,gEAA4D;AAC5D,yFAAoF;AACpF,qFAAgF;AAChF,+EAA0E;AAC1E,0DAAkD;AAClD,8DAA6F;AAC7F,4EAAuE;AAIvE,MAAa,OAAO;IACV,MAAM,CAAC,GAAG,CAA0B;IAOrC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,MAAiB;QAC9C,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;YACb,oBAAM,CAAC,IAAI,CAAC,SAAS,EAAE,gCAAgC,EAAE;gBACvD,SAAS,EAAE,SAAS;aACrB,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QAGD,kCAAe,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAKjC,MAAM,SAAS,GAAG,MAAM,kBAAW,CAAC,wBAAwB,CAAC,sBAAS,EAAE;YACtE,MAAM,EAAE,IAAI,yCAAkB,EAAE;SACjC,CAAC,CAAC;QACH,IAAI,CAAC,GAAG,GAAG,SAAS,CAAC;QAIrB,MAAM,YAAY,GAAG,SAAS,CAAC,GAAG,CAAsB,wBAAY,CAAC,CAAC;QACtE,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAG/B,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5C,MAAM,YAAY,GAAG,SAAS,CAAC,GAAG,CAAsB,2CAAmB,CAAC,CAAC;YAC7E,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;gBAChC,IAAI,CAAC;oBACH,YAAY,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;gBAC5C,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBAC5E,MAAM,iBAAiB,GAAG,IAAA,4BAAY,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBAElD,oBAAM,CAAC,KAAK,CAAC,SAAS,EAAE,yBAAyB,EAAE;wBACjD,SAAS,EAAE,SAAS;wBACpB,QAAQ,EAAE,iBAAiB;wBAC3B,KAAK,EAAE,IAAA,oCAAoB,EAAC,KAAK,CAAC;qBACnC,CAAC,CAAC;oBAEH,MAAM,IAAI,KAAK,CAAC,4BAA4B,iBAAiB,GAAG,CAAC,CAAC;gBACpE,CAAC;YACH,CAAC;YACD,oBAAM,CAAC,IAAI,CAAC,SAAS,EAAE,cAAc,MAAM,CAAC,KAAK,CAAC,MAAM,6BAA6B,EAAE;gBACrF,SAAS,EAAE,SAAS;gBACpB,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM;aAC/B,CAAC,CAAC;QACL,CAAC;QAGD,IAAI,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpD,MAAM,gBAAgB,GAAG,SAAS,CAAC,GAAG,CAA0B,mDAAuB,CAAC,CAAC;YACzF,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;gBACxC,IAAI,CAAC;oBACH,gBAAgB,CAAC,0BAA0B,CAAC,QAAQ,CAAC,CAAC;gBACxD,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBAC5E,MAAM,YAAY,GAAG,IAAA,2BAAW,EAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;oBAE/C,oBAAM,CAAC,KAAK,CAAC,SAAS,EAAE,6BAA6B,EAAE;wBACrD,SAAS,EAAE,SAAS;wBACpB,GAAG,EAAE,YAAY;wBACjB,KAAK,EAAE,IAAA,oCAAoB,EAAC,KAAK,CAAC;qBACnC,CAAC,CAAC;oBAEH,MAAM,IAAI,KAAK,CAAC,gCAAgC,YAAY,GAAG,CAAC,CAAC;gBACnE,CAAC;YACH,CAAC;YACD,oBAAM,CAAC,IAAI,CAAC,SAAS,EAAE,cAAc,MAAM,CAAC,SAAS,CAAC,MAAM,iCAAiC,EAAE;gBAC7F,SAAS,EAAE,SAAS;gBACpB,aAAa,EAAE,MAAM,CAAC,SAAS,CAAC,MAAM;aACvC,CAAC,CAAC;QACL,CAAC;QAGD,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChD,MAAM,cAAc,GAAG,SAAS,CAAC,GAAG,CAAwB,+CAAqB,CAAC,CAAC;YACnF,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACpC,IAAI,CAAC;oBACH,cAAc,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC;gBAClD,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBAC5E,MAAM,mBAAmB,GAAG,IAAA,4BAAY,EAAC,MAAM,CAAC,IAAI,CAAC,CAAC;oBAEtD,oBAAM,CAAC,KAAK,CAAC,SAAS,EAAE,2BAA2B,EAAE;wBACnD,SAAS,EAAE,SAAS;wBACpB,UAAU,EAAE,mBAAmB;wBAC/B,KAAK,EAAE,IAAA,oCAAoB,EAAC,KAAK,CAAC;qBACnC,CAAC,CAAC;oBAEH,MAAM,IAAI,KAAK,CAAC,8BAA8B,mBAAmB,GAAG,CAAC,CAAC;gBACxE,CAAC;YACH,CAAC;YACD,oBAAM,CAAC,IAAI,CAAC,SAAS,EAAE,cAAc,MAAM,CAAC,OAAO,CAAC,MAAM,+BAA+B,EAAE;gBACzF,SAAS,EAAE,SAAS;gBACpB,WAAW,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM;aACnC,CAAC,CAAC;QACL,CAAC;QAED,oBAAM,CAAC,IAAI,CAAC,SAAS,EAAE,4CAA4C,EAAE;YACnE,SAAS,EAAE,SAAS;SACrB,CAAC,CAAC;IACL,CAAC;IAMM,MAAM,CAAC,KAAK,CAAC,GAAG;QACrB,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CACb,8DAA8D,CAC/D,CAAC;QACJ,CAAC;QAED,oBAAM,CAAC,IAAI,CAAC,SAAS,EAAE,gCAAgC,EAAE;YACvD,SAAS,EAAE,SAAS;SACrB,CAAC,CAAC;QAEH,IAAI,CAAC;YAEH,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,qCAAgB,CAAC,CAAC;YAGjD,MAAM,SAAS,CAAC,cAAc,EAAE,CAAC;YAEjC,oBAAM,CAAC,IAAI,CAAC,SAAS,EAAE,qFAAqF,EAAE;gBAC5G,SAAS,EAAE,SAAS;aACrB,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,oBAAM,CAAC,KAAK,CAAC,SAAS,EAAE,uCAAuC,EAAE;gBAC/D,SAAS,EAAE,SAAS;gBACpB,KAAK,EAAE,IAAA,oCAAoB,EAAC,KAAK,CAAC;aACnC,CAAC,CAAC;YAEH,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;YACvB,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAMM,MAAM,CAAC,UAAU,CAAI,KAAsB;QAChD,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;YACd,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;QACjD,CAAC;QAED,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAI,KAAK,CAAC,CAAC;IAChC,CAAC;IAOM,MAAM,CAAC,KAAK,CAAC,QAAQ;QAC1B,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;YACd,oBAAM,CAAC,IAAI,CAAC,SAAS,EAAE,iDAAiD,EAAE;gBACxE,SAAS,EAAE,SAAS;aACrB,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QAED,oBAAM,CAAC,IAAI,CAAC,SAAS,EAAE,iCAAiC,EAAE;YACxD,SAAS,EAAE,SAAS;SACrB,CAAC,CAAC;QAEH,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;YACvB,IAAI,CAAC,GAAG,GAAG,IAAW,CAAC;YACvB,oBAAM,CAAC,IAAI,CAAC,SAAS,EAAE,0CAA0C,EAAE;gBACjE,SAAS,EAAE,SAAS;aACrB,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,oBAAM,CAAC,KAAK,CAAC,SAAS,EAAE,+BAA+B,EAAE;gBACvD,SAAS,EAAE,SAAS;gBACpB,KAAK,EAAE,IAAA,oCAAoB,EAAC,KAAK,CAAC;aACnC,CAAC,CAAC;YACH,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;CACF;AA/LD,0BA+LC"}
@@ -13,12 +13,14 @@ const tool_registry_service_1 = require("./tooling/tool-registry/tool-registry.s
13
13
  const config_holder_service_1 = require("./config/config-holder.service");
14
14
  const constants_1 = require("./config/constants");
15
15
  const interface_module_1 = require("./interface/interface.module");
16
+ const resource_module_1 = require("./resources/resource.module");
17
+ const prompt_module_1 = require("./prompts/prompt.module");
16
18
  let AppModule = class AppModule {
17
19
  };
18
20
  exports.AppModule = AppModule;
19
21
  exports.AppModule = AppModule = __decorate([
20
22
  (0, common_1.Module)({
21
- imports: [interface_module_1.InterfaceModule],
23
+ imports: [interface_module_1.InterfaceModule, resource_module_1.ResourceModule, prompt_module_1.PromptModule],
22
24
  providers: [
23
25
  mcp_server_service_1.McpServerService,
24
26
  tool_registry_service_1.ToolRegistryService,
@@ -1 +1 @@
1
- {"version":3,"file":"app.module.js","sourceRoot":"","sources":["../src/app.module.ts"],"names":[],"mappings":";;;;;;;;;AAEA,2CAAwC;AACxC,6EAAwE;AACxE,yFAAoF;AACpF,0EAAqE;AACrE,kDAAkD;AAClD,mEAA+D;AAsBxD,IAAM,SAAS,GAAf,MAAM,SAAS;CAAG,CAAA;AAAZ,8BAAS;oBAAT,SAAS;IAhBrB,IAAA,eAAM,EAAC;QACN,OAAO,EAAE,CAAC,kCAAe,CAAC;QAC1B,SAAS,EAAE;YAET,qCAAgB;YAEhB,2CAAmB;YACnB,2CAAmB;YAEnB;gBACE,OAAO,EAAE,wBAAY;gBACrB,WAAW,EAAE,2CAAmB;aACjC;SACF;QACD,OAAO,EAAE,CAAC,qCAAgB,CAAC;KAC5B,CAAC;GACW,SAAS,CAAG"}
1
+ {"version":3,"file":"app.module.js","sourceRoot":"","sources":["../src/app.module.ts"],"names":[],"mappings":";;;;;;;;;AAEA,2CAAwC;AACxC,6EAAwE;AACxE,yFAAoF;AACpF,0EAAqE;AACrE,kDAAkD;AAClD,mEAA+D;AAC/D,iEAA6D;AAC7D,2DAAuD;AAsBhD,IAAM,SAAS,GAAf,MAAM,SAAS;CAAG,CAAA;AAAZ,8BAAS;oBAAT,SAAS;IAhBrB,IAAA,eAAM,EAAC;QACN,OAAO,EAAE,CAAC,kCAAe,EAAE,gCAAc,EAAE,4BAAY,CAAC;QACxD,SAAS,EAAE;YAET,qCAAgB;YAEhB,2CAAmB;YACnB,2CAAmB;YAEnB;gBACE,OAAO,EAAE,wBAAY;gBACrB,WAAW,EAAE,2CAAmB;aACjC;SACF;QACD,OAAO,EAAE,CAAC,qCAAgB,CAAC;KAC5B,CAAC;GACW,SAAS,CAAG"}
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ConfigValidator = void 0;
4
4
  const easy_mcp_error_1 = require("../core/errors/easy-mcp-error");
5
+ const tool_naming_validator_1 = require("../core/utils/tool-naming-validator");
5
6
  class ConfigValidator {
6
7
  static validate(config) {
7
8
  if (!config) {
@@ -16,6 +17,66 @@ class ConfigValidator {
16
17
  config.tools.forEach((tool, index) => {
17
18
  this.validateTool(tool, index);
18
19
  });
20
+ if (config.resources !== undefined) {
21
+ if (!Array.isArray(config.resources)) {
22
+ throw new easy_mcp_error_1.ConfigurationError('resources must be an array if provided');
23
+ }
24
+ config.resources.forEach((res, idx) => {
25
+ if (!res.uri || typeof res.uri !== 'string' || res.uri.trim().length === 0) {
26
+ throw new easy_mcp_error_1.ConfigurationError(`Resource at index ${idx}: 'uri' must be a non-empty string`);
27
+ }
28
+ if (!res.name || typeof res.name !== 'string' || res.name.trim().length === 0) {
29
+ throw new easy_mcp_error_1.ConfigurationError(`Resource '${res.uri}': 'name' must be a non-empty string`);
30
+ }
31
+ if (typeof res.getContent !== 'function') {
32
+ throw new easy_mcp_error_1.ConfigurationError(`Resource '${res.uri}': 'getContent' must be a function`);
33
+ }
34
+ if (res.description !== undefined && typeof res.description !== 'string') {
35
+ throw new easy_mcp_error_1.ConfigurationError(`Resource '${res.uri}': 'description' must be a string if provided`);
36
+ }
37
+ if (res.mimeType !== undefined && typeof res.mimeType !== 'string') {
38
+ throw new easy_mcp_error_1.ConfigurationError(`Resource '${res.uri}': 'mimeType' must be a string if provided`);
39
+ }
40
+ if (res.icon !== undefined && typeof res.icon !== 'string') {
41
+ throw new easy_mcp_error_1.ConfigurationError(`Resource '${res.uri}': 'icon' must be a string if provided`);
42
+ }
43
+ });
44
+ }
45
+ if (config.prompts !== undefined) {
46
+ if (!Array.isArray(config.prompts)) {
47
+ throw new easy_mcp_error_1.ConfigurationError('prompts must be an array if provided');
48
+ }
49
+ config.prompts.forEach((p, idx) => {
50
+ if (!p.name || typeof p.name !== 'string' || p.name.trim().length === 0) {
51
+ throw new easy_mcp_error_1.ConfigurationError(`Prompt at index ${idx}: 'name' must be a non-empty string`);
52
+ }
53
+ if (typeof p.getPrompt !== 'function') {
54
+ throw new easy_mcp_error_1.ConfigurationError(`Prompt '${p.name}': 'getPrompt' must be a function`);
55
+ }
56
+ if (p.description !== undefined && typeof p.description !== 'string') {
57
+ throw new easy_mcp_error_1.ConfigurationError(`Prompt '${p.name}': 'description' must be a string if provided`);
58
+ }
59
+ if (p.arguments !== undefined) {
60
+ if (!Array.isArray(p.arguments)) {
61
+ throw new easy_mcp_error_1.ConfigurationError(`Prompt '${p.name}': 'arguments' must be an array if provided`);
62
+ }
63
+ p.arguments.forEach((arg, argIdx) => {
64
+ if (!arg.name || typeof arg.name !== 'string' || arg.name.trim().length === 0) {
65
+ throw new easy_mcp_error_1.ConfigurationError(`Prompt '${p.name}': argument at index ${argIdx} must have a non-empty 'name'`);
66
+ }
67
+ if (arg.description !== undefined && typeof arg.description !== 'string') {
68
+ throw new easy_mcp_error_1.ConfigurationError(`Prompt '${p.name}': argument '${arg.name}' description must be a string if provided`);
69
+ }
70
+ if (arg.required !== undefined && typeof arg.required !== 'boolean') {
71
+ throw new easy_mcp_error_1.ConfigurationError(`Prompt '${p.name}': argument '${arg.name}' required must be a boolean if provided`);
72
+ }
73
+ });
74
+ }
75
+ if (p.icon !== undefined && typeof p.icon !== 'string') {
76
+ throw new easy_mcp_error_1.ConfigurationError(`Prompt '${p.name}': 'icon' must be a string if provided`);
77
+ }
78
+ });
79
+ }
19
80
  if (config.serverInfo) {
20
81
  if (!config.serverInfo.name || typeof config.serverInfo.name !== 'string' || config.serverInfo.name.trim().length === 0) {
21
82
  throw new easy_mcp_error_1.ConfigurationError('serverInfo.name must be a non-empty string');
@@ -32,6 +93,11 @@ class ConfigValidator {
32
93
  if (!tool.name || typeof tool.name !== 'string' || tool.name.trim().length === 0) {
33
94
  throw new easy_mcp_error_1.ConfigurationError(`Tool at index ${index}: name must be a non-empty string`);
34
95
  }
96
+ const namingError = tool_naming_validator_1.ToolNamingValidator.validate(tool.name);
97
+ if (namingError) {
98
+ const suggestion = tool_naming_validator_1.ToolNamingValidator.suggest(tool.name);
99
+ throw new easy_mcp_error_1.ConfigurationError(`Tool '${tool.name}': ${namingError}. Suggested name: '${suggestion}'`);
100
+ }
35
101
  if (!tool.description || typeof tool.description !== 'string' || tool.description.trim().length === 0) {
36
102
  throw new easy_mcp_error_1.ConfigurationError(`Tool '${tool.name}': description must be a non-empty string`);
37
103
  }
@@ -41,37 +107,43 @@ class ConfigValidator {
41
107
  if (!tool.inputSchema) {
42
108
  throw new easy_mcp_error_1.ConfigurationError(`Tool '${tool.name}': inputSchema is required`);
43
109
  }
44
- if (tool.inputSchema.type !== 'OBJECT') {
45
- throw new easy_mcp_error_1.ConfigurationError(`Tool '${tool.name}': inputSchema.type must be 'OBJECT'`);
46
- }
47
- if (!tool.inputSchema.properties || typeof tool.inputSchema.properties !== 'object' || Array.isArray(tool.inputSchema.properties)) {
48
- throw new easy_mcp_error_1.ConfigurationError(`Tool '${tool.name}': inputSchema.properties must be an object`);
110
+ if (tool.inputSchema.type !== 'object') {
111
+ throw new easy_mcp_error_1.ConfigurationError(`Tool '${tool.name}': inputSchema.type must be 'object' (JSON Schema 2020-12 format)`);
49
112
  }
50
- for (const [propName, propDef] of Object.entries(tool.inputSchema.properties)) {
51
- if (!propDef || typeof propDef !== 'object' || Array.isArray(propDef)) {
52
- throw new easy_mcp_error_1.ConfigurationError(`Tool '${tool.name}': property '${propName}' must be an object`);
53
- }
54
- if (!propDef.type || typeof propDef.type !== 'string') {
55
- throw new easy_mcp_error_1.ConfigurationError(`Tool '${tool.name}': property '${propName}' must have a type`);
113
+ if (tool.inputSchema.properties !== undefined) {
114
+ if (typeof tool.inputSchema.properties !== 'object' || Array.isArray(tool.inputSchema.properties)) {
115
+ throw new easy_mcp_error_1.ConfigurationError(`Tool '${tool.name}': inputSchema.properties must be an object`);
56
116
  }
57
- const validTypes = ['STRING', 'NUMBER', 'INTEGER', 'BOOLEAN', 'ARRAY', 'OBJECT'];
58
- if (!validTypes.includes(propDef.type)) {
59
- throw new easy_mcp_error_1.ConfigurationError(`Tool '${tool.name}': property '${propName}' has invalid type '${propDef.type}'. Must be one of: ${validTypes.join(', ')}`);
60
- }
61
- if (!propDef.description || typeof propDef.description !== 'string') {
62
- throw new easy_mcp_error_1.ConfigurationError(`Tool '${tool.name}': property '${propName}' must have a description`);
117
+ for (const [propName, propDef] of Object.entries(tool.inputSchema.properties)) {
118
+ if (!propDef || typeof propDef !== 'object' || Array.isArray(propDef)) {
119
+ throw new easy_mcp_error_1.ConfigurationError(`Tool '${tool.name}': property '${propName}' must be an object`);
120
+ }
121
+ if (propDef.type !== undefined) {
122
+ const validTypes = ['string', 'number', 'integer', 'boolean', 'array', 'object'];
123
+ if (typeof propDef.type !== 'string' || !validTypes.includes(propDef.type)) {
124
+ throw new easy_mcp_error_1.ConfigurationError(`Tool '${tool.name}': property '${propName}' has invalid type '${propDef.type}'. Must be one of: ${validTypes.join(', ')} (JSON Schema 2020-12 format)`);
125
+ }
126
+ }
127
+ if (propDef.description !== undefined && typeof propDef.description !== 'string') {
128
+ throw new easy_mcp_error_1.ConfigurationError(`Tool '${tool.name}': property '${propName}' description must be a string if provided`);
129
+ }
63
130
  }
64
131
  }
65
132
  if (tool.inputSchema.required !== undefined) {
66
133
  if (!Array.isArray(tool.inputSchema.required)) {
67
134
  throw new easy_mcp_error_1.ConfigurationError(`Tool '${tool.name}': inputSchema.required must be an array`);
68
135
  }
69
- for (const requiredProp of tool.inputSchema.required) {
70
- if (!(requiredProp in tool.inputSchema.properties)) {
71
- throw new easy_mcp_error_1.ConfigurationError(`Tool '${tool.name}': required property '${requiredProp}' does not exist in properties`);
136
+ if (tool.inputSchema.properties) {
137
+ for (const requiredProp of tool.inputSchema.required) {
138
+ if (!(requiredProp in tool.inputSchema.properties)) {
139
+ throw new easy_mcp_error_1.ConfigurationError(`Tool '${tool.name}': required property '${requiredProp}' does not exist in properties`);
140
+ }
72
141
  }
73
142
  }
74
143
  }
144
+ if (tool.icon !== undefined && typeof tool.icon !== 'string') {
145
+ throw new easy_mcp_error_1.ConfigurationError(`Tool '${tool.name}': icon must be a string (URI) if provided`);
146
+ }
75
147
  }
76
148
  }
77
149
  exports.ConfigValidator = ConfigValidator;
@@ -1 +1 @@
1
- {"version":3,"file":"config-validator.js","sourceRoot":"","sources":["../../src/config/config-validator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config-validator.js","sourceRoot":"","sources":["../../src/config/config-validator.ts"],"names":[],"mappings":"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"}
@@ -2,3 +2,6 @@ export declare const CONFIG_TOKEN = "MCP_CONFIG_HOLDER";
2
2
  export declare const INTERFACE_LAYER_TOKEN = "IInterfaceLayer";
3
3
  export declare const MAX_MESSAGE_SIZE_BYTES: number;
4
4
  export declare const MAX_CONTENT_LENGTH: number;
5
+ export declare const MAX_RESOURCE_CONTENT_SIZE_BYTES: number;
6
+ export declare const MAX_CANCELLATION_TOKENS = 1000;
7
+ export declare const MAX_LOG_STRING_LENGTH = 200;
@@ -1,8 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.MAX_CONTENT_LENGTH = exports.MAX_MESSAGE_SIZE_BYTES = exports.INTERFACE_LAYER_TOKEN = exports.CONFIG_TOKEN = void 0;
3
+ exports.MAX_LOG_STRING_LENGTH = exports.MAX_CANCELLATION_TOKENS = exports.MAX_RESOURCE_CONTENT_SIZE_BYTES = exports.MAX_CONTENT_LENGTH = exports.MAX_MESSAGE_SIZE_BYTES = exports.INTERFACE_LAYER_TOKEN = exports.CONFIG_TOKEN = void 0;
4
4
  exports.CONFIG_TOKEN = "MCP_CONFIG_HOLDER";
5
5
  exports.INTERFACE_LAYER_TOKEN = "IInterfaceLayer";
6
6
  exports.MAX_MESSAGE_SIZE_BYTES = 10 * 1024 * 1024;
7
7
  exports.MAX_CONTENT_LENGTH = exports.MAX_MESSAGE_SIZE_BYTES;
8
+ exports.MAX_RESOURCE_CONTENT_SIZE_BYTES = 10 * 1024 * 1024;
9
+ exports.MAX_CANCELLATION_TOKENS = 1000;
10
+ exports.MAX_LOG_STRING_LENGTH = 200;
8
11
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/config/constants.ts"],"names":[],"mappings":";;;AACa,QAAA,YAAY,GAAG,mBAAmB,CAAC;AAGnC,QAAA,qBAAqB,GAAG,iBAAiB,CAAC;AAO1C,QAAA,sBAAsB,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;AAM1C,QAAA,kBAAkB,GAAG,8BAAsB,CAAC"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/config/constants.ts"],"names":[],"mappings":";;;AACa,QAAA,YAAY,GAAG,mBAAmB,CAAC;AAGnC,QAAA,qBAAqB,GAAG,iBAAiB,CAAC;AAO1C,QAAA,sBAAsB,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;AAM1C,QAAA,kBAAkB,GAAG,8BAAsB,CAAC;AAM5C,QAAA,+BAA+B,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;AAMnD,QAAA,uBAAuB,GAAG,IAAI,CAAC;AAM/B,QAAA,qBAAqB,GAAG,GAAG,CAAC"}
@@ -1,18 +1,64 @@
1
+ export interface JsonSchema2020_12 {
2
+ type: "object" | "string" | "number" | "integer" | "boolean" | "array";
3
+ properties?: Record<string, JsonSchema2020_12>;
4
+ items?: JsonSchema2020_12 | JsonSchema2020_12[];
5
+ required?: string[];
6
+ description?: string;
7
+ enum?: (string | number | boolean)[];
8
+ default?: any;
9
+ const?: any;
10
+ oneOf?: JsonSchema2020_12[];
11
+ anyOf?: JsonSchema2020_12[];
12
+ allOf?: JsonSchema2020_12[];
13
+ $ref?: string;
14
+ [key: string]: any;
15
+ }
1
16
  export interface ToolRegistrationInput {
2
17
  name: string;
3
18
  description: string;
4
19
  function: (args: Record<string, any>) => Promise<any>;
5
- inputSchema: {
6
- type: "OBJECT";
7
- properties: Record<string, any>;
8
- required?: string[];
9
- };
20
+ inputSchema: JsonSchema2020_12;
21
+ icon?: string;
10
22
  }
11
23
  export interface ServerInfo {
12
24
  name: string;
13
25
  version: string;
14
26
  }
27
+ export interface ResourceRegistrationInput {
28
+ uri: string;
29
+ name: string;
30
+ description?: string;
31
+ mimeType?: string;
32
+ icon?: string;
33
+ getContent: () => Promise<string | {
34
+ type: string;
35
+ data: string;
36
+ mimeType?: string;
37
+ }>;
38
+ }
39
+ export interface PromptRegistrationInput {
40
+ name: string;
41
+ description?: string;
42
+ arguments?: Array<{
43
+ name: string;
44
+ description?: string;
45
+ required?: boolean;
46
+ }>;
47
+ icon?: string;
48
+ getPrompt: (args: Record<string, any>) => Promise<Array<{
49
+ role: "user" | "assistant";
50
+ content: Array<{
51
+ type: "text" | "image" | "resource";
52
+ text?: string;
53
+ data?: string;
54
+ mimeType?: string;
55
+ uri?: string;
56
+ }>;
57
+ }>>;
58
+ }
15
59
  export interface McpConfig {
16
60
  tools: ToolRegistrationInput[];
61
+ resources?: ResourceRegistrationInput[];
62
+ prompts?: PromptRegistrationInput[];
17
63
  serverInfo?: ServerInfo;
18
64
  }
@@ -10,13 +10,15 @@ exports.CoreModule = void 0;
10
10
  const common_1 = require("@nestjs/common");
11
11
  const mcp_server_service_1 = require("./mcp-server/mcp-server.service");
12
12
  const interface_module_1 = require("../interface/interface.module");
13
+ const resource_module_1 = require("../resources/resource.module");
14
+ const prompt_module_1 = require("../prompts/prompt.module");
13
15
  let CoreModule = class CoreModule {
14
16
  };
15
17
  exports.CoreModule = CoreModule;
16
18
  exports.CoreModule = CoreModule = __decorate([
17
19
  (0, common_1.Global)(),
18
20
  (0, common_1.Module)({
19
- imports: [interface_module_1.InterfaceModule],
21
+ imports: [interface_module_1.InterfaceModule, resource_module_1.ResourceModule, prompt_module_1.PromptModule],
20
22
  providers: [mcp_server_service_1.McpServerService],
21
23
  exports: [mcp_server_service_1.McpServerService],
22
24
  })
@@ -1 +1 @@
1
- {"version":3,"file":"core.module.js","sourceRoot":"","sources":["../../src/core/core.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAgD;AAChD,wEAAmE;AACnE,oEAAgE;AAQzD,IAAM,UAAU,GAAhB,MAAM,UAAU;CAAG,CAAA;AAAb,gCAAU;qBAAV,UAAU;IANtB,IAAA,eAAM,GAAE;IACR,IAAA,eAAM,EAAC;QACN,OAAO,EAAE,CAAC,kCAAe,CAAC;QAC1B,SAAS,EAAE,CAAC,qCAAgB,CAAC;QAC7B,OAAO,EAAE,CAAC,qCAAgB,CAAC;KAC5B,CAAC;GACW,UAAU,CAAG"}
1
+ {"version":3,"file":"core.module.js","sourceRoot":"","sources":["../../src/core/core.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAgD;AAChD,wEAAmE;AACnE,oEAAgE;AAChE,kEAA8D;AAC9D,4DAAwD;AAQjD,IAAM,UAAU,GAAhB,MAAM,UAAU;CAAG,CAAA;AAAb,gCAAU;qBAAV,UAAU;IANtB,IAAA,eAAM,GAAE;IACR,IAAA,eAAM,EAAC;QACN,OAAO,EAAE,CAAC,kCAAe,EAAE,gCAAc,EAAE,4BAAY,CAAC;QACxD,SAAS,EAAE,CAAC,qCAAgB,CAAC;QAC7B,OAAO,EAAE,CAAC,qCAAgB,CAAC;KAC5B,CAAC;GACW,UAAU,CAAG"}
@@ -3,14 +3,19 @@ import { ToolRegistryService } from "../../tooling/tool-registry/tool-registry.s
3
3
  import { type IInterfaceLayer } from "../../interface/interface.interface";
4
4
  import { StdioGatewayService } from "../../interface/stdio-gateway.service";
5
5
  import { JsonRpcRequest, JsonRpcResponse } from "../../interface/jsonrpc.interface";
6
+ import { ResourceRegistryService } from "../../resources/resource-registry.service";
7
+ import { PromptRegistryService } from "../../prompts/prompt-registry.service";
6
8
  import { ConfigHolderService } from "../../config/config-holder.service";
7
9
  export declare class McpServerService implements OnModuleInit {
8
10
  private readonly toolRegistry;
11
+ private readonly resourceRegistry;
12
+ private readonly promptRegistry;
9
13
  private readonly interfaceLayer;
10
14
  private readonly stdioGatewayService;
11
15
  private readonly configHolder;
12
16
  private clientIdentifier;
13
- constructor(toolRegistry: ToolRegistryService, interfaceLayer: IInterfaceLayer, stdioGatewayService: StdioGatewayService, configHolder: ConfigHolderService);
17
+ private readonly cancellationTokens;
18
+ constructor(toolRegistry: ToolRegistryService, resourceRegistry: ResourceRegistryService, promptRegistry: PromptRegistryService, interfaceLayer: IInterfaceLayer, stdioGatewayService: StdioGatewayService, configHolder: ConfigHolderService);
14
19
  private getServerInfo;
15
20
  private getActorIdentifier;
16
21
  onModuleInit(): void;
@@ -19,4 +24,13 @@ export declare class McpServerService implements OnModuleInit {
19
24
  private handleInitialize;
20
25
  private handleListTools;
21
26
  private handleCallTool;
27
+ private handleCancelRequest;
28
+ private handleListResources;
29
+ private handleReadResource;
30
+ private handleListPrompts;
31
+ private handleGetPrompt;
32
+ private handleSampling;
33
+ private handleListRoots;
34
+ private handleReadRoot;
35
+ private handleElicitation;
22
36
  }