@jrmc/adonis-mcp 1.0.0-alpha.9 → 1.0.0-beta.2

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 (187) hide show
  1. package/README.md +811 -26
  2. package/build/commands/commands.json +1 -1
  3. package/build/commands/inspector.d.ts +16 -0
  4. package/build/commands/inspector.d.ts.map +1 -0
  5. package/build/commands/inspector.js +54 -0
  6. package/build/commands/make/prompt.d.ts +16 -0
  7. package/build/commands/make/prompt.d.ts.map +1 -0
  8. package/build/commands/make/prompt.js +33 -0
  9. package/build/commands/make/resource.d.ts +16 -0
  10. package/build/commands/make/resource.d.ts.map +1 -0
  11. package/build/commands/make/resource.js +33 -0
  12. package/build/commands/make/tool.d.ts.map +1 -1
  13. package/build/commands/make/tool.js +0 -2
  14. package/build/configure.d.ts.map +1 -1
  15. package/build/configure.js +7 -0
  16. package/build/index.d.ts +2 -0
  17. package/build/index.d.ts.map +1 -1
  18. package/build/index.js +2 -0
  19. package/build/providers/mcp_provider.d.ts +3 -0
  20. package/build/providers/mcp_provider.d.ts.map +1 -1
  21. package/build/providers/mcp_provider.js +35 -12
  22. package/build/src/define_config.d.ts.map +1 -1
  23. package/build/src/define_config.js +0 -3
  24. package/build/src/enums/error.d.ts.map +1 -1
  25. package/build/src/enums/error.js +0 -1
  26. package/build/src/request.d.ts +1 -1
  27. package/build/src/response.d.ts +24 -23
  28. package/build/src/response.d.ts.map +1 -1
  29. package/build/src/response.js +49 -13
  30. package/build/src/server/annotations/annotations.d.ts +10 -0
  31. package/build/src/server/annotations/annotations.d.ts.map +1 -0
  32. package/build/src/server/annotations/annotations.js +9 -0
  33. package/build/src/server/annotations/audience.d.ts +22 -0
  34. package/build/src/server/annotations/audience.d.ts.map +1 -0
  35. package/build/src/server/annotations/audience.js +28 -0
  36. package/build/src/server/annotations/is_destructive.d.ts +17 -0
  37. package/build/src/server/annotations/is_destructive.d.ts.map +1 -0
  38. package/build/src/server/annotations/is_destructive.js +24 -0
  39. package/build/src/server/annotations/is_idempotent.d.ts +17 -0
  40. package/build/src/server/annotations/is_idempotent.d.ts.map +1 -0
  41. package/build/src/server/annotations/is_idempotent.js +24 -0
  42. package/build/src/server/annotations/is_open_world.d.ts +17 -0
  43. package/build/src/server/annotations/is_open_world.d.ts.map +1 -0
  44. package/build/src/server/annotations/is_open_world.js +24 -0
  45. package/build/src/server/annotations/is_read_only.d.ts +17 -0
  46. package/build/src/server/annotations/is_read_only.d.ts.map +1 -0
  47. package/build/src/server/annotations/is_read_only.js +24 -0
  48. package/build/src/server/annotations/last_modified.d.ts +21 -0
  49. package/build/src/server/annotations/last_modified.d.ts.map +1 -0
  50. package/build/src/server/annotations/last_modified.js +28 -0
  51. package/build/src/server/annotations/priority.d.ts +21 -0
  52. package/build/src/server/annotations/priority.d.ts.map +1 -0
  53. package/build/src/server/annotations/priority.js +31 -0
  54. package/build/src/server/annotations/tool_annotations.d.ts +11 -0
  55. package/build/src/server/annotations/tool_annotations.d.ts.map +1 -0
  56. package/build/src/server/annotations/tool_annotations.js +10 -0
  57. package/build/src/server/contents/audio.d.ts +24 -0
  58. package/build/src/server/contents/audio.d.ts.map +1 -0
  59. package/build/src/server/contents/audio.js +57 -0
  60. package/build/src/server/contents/blob.d.ts +20 -0
  61. package/build/src/server/contents/blob.d.ts.map +1 -0
  62. package/build/src/server/contents/blob.js +42 -0
  63. package/build/src/server/contents/embedded_resource.d.ts +25 -0
  64. package/build/src/server/contents/embedded_resource.d.ts.map +1 -0
  65. package/build/src/server/contents/embedded_resource.js +72 -0
  66. package/build/src/server/contents/error.d.ts +15 -0
  67. package/build/src/server/contents/error.d.ts.map +1 -0
  68. package/build/src/server/contents/error.js +16 -0
  69. package/build/src/server/contents/image.d.ts +24 -0
  70. package/build/src/server/contents/image.d.ts.map +1 -0
  71. package/build/src/server/contents/image.js +57 -0
  72. package/build/src/server/contents/resource_link.d.ts +22 -0
  73. package/build/src/server/contents/resource_link.d.ts.map +1 -0
  74. package/build/src/server/contents/resource_link.js +55 -0
  75. package/build/src/server/contents/structured.d.ts +20 -0
  76. package/build/src/server/contents/structured.d.ts.map +1 -0
  77. package/build/src/server/contents/structured.js +26 -0
  78. package/build/src/server/contents/text.d.ts +24 -0
  79. package/build/src/server/contents/text.d.ts.map +1 -0
  80. package/build/src/server/contents/text.js +61 -0
  81. package/build/src/server/context.d.ts +11 -6
  82. package/build/src/server/context.d.ts.map +1 -1
  83. package/build/src/server/context.js +30 -2
  84. package/build/src/server/contracts/content.d.ts +16 -0
  85. package/build/src/server/contracts/content.d.ts.map +1 -0
  86. package/build/src/server/contracts/content.js +8 -0
  87. package/build/src/server/contracts/context.d.ts +29 -0
  88. package/build/src/server/contracts/context.d.ts.map +1 -0
  89. package/build/src/server/contracts/response.d.ts +26 -0
  90. package/build/src/server/contracts/response.d.ts.map +1 -0
  91. package/build/src/{types → server/contracts}/transport.d.ts +2 -2
  92. package/build/src/server/contracts/transport.d.ts.map +1 -0
  93. package/build/src/server/contracts/transport.js +7 -0
  94. package/build/src/server/controllers/mcp_controller.d.ts.map +1 -1
  95. package/build/src/server/controllers/mcp_controller.js +0 -3
  96. package/build/src/server/exceptions/jsonrpc_exception.d.ts +6 -5
  97. package/build/src/server/exceptions/jsonrpc_exception.d.ts.map +1 -1
  98. package/build/src/server/exceptions/jsonrpc_exception.js +18 -9
  99. package/build/src/server/methods/call_tool.d.ts +2 -2
  100. package/build/src/server/methods/call_tool.d.ts.map +1 -1
  101. package/build/src/server/methods/call_tool.js +42 -17
  102. package/build/src/server/methods/completion.d.ts +12 -0
  103. package/build/src/server/methods/completion.d.ts.map +1 -0
  104. package/build/src/server/methods/completion.js +45 -0
  105. package/build/src/server/methods/get_prompt.d.ts +2 -2
  106. package/build/src/server/methods/get_prompt.d.ts.map +1 -1
  107. package/build/src/server/methods/get_prompt.js +55 -2
  108. package/build/src/server/methods/initialize.d.ts +2 -2
  109. package/build/src/server/methods/initialize.d.ts.map +1 -1
  110. package/build/src/server/methods/initialize.js +4 -1
  111. package/build/src/server/methods/list_prompts.d.ts +2 -2
  112. package/build/src/server/methods/list_prompts.d.ts.map +1 -1
  113. package/build/src/server/methods/list_prompts.js +24 -3
  114. package/build/src/server/methods/list_resource_templates.d.ts +12 -0
  115. package/build/src/server/methods/list_resource_templates.d.ts.map +1 -0
  116. package/build/src/server/methods/list_resource_templates.js +34 -0
  117. package/build/src/server/methods/list_resources.d.ts +2 -2
  118. package/build/src/server/methods/list_resources.d.ts.map +1 -1
  119. package/build/src/server/methods/list_resources.js +24 -3
  120. package/build/src/server/methods/list_tools.d.ts +2 -2
  121. package/build/src/server/methods/list_tools.d.ts.map +1 -1
  122. package/build/src/server/methods/list_tools.js +5 -17
  123. package/build/src/server/methods/ping.d.ts +2 -2
  124. package/build/src/server/methods/ping.d.ts.map +1 -1
  125. package/build/src/server/methods/ping.js +1 -1
  126. package/build/src/server/methods/read_resource.d.ts +2 -2
  127. package/build/src/server/methods/read_resource.d.ts.map +1 -1
  128. package/build/src/server/methods/read_resource.js +20 -2
  129. package/build/src/server/pagination/cursor_paginator.d.ts +2 -4
  130. package/build/src/server/pagination/cursor_paginator.d.ts.map +1 -1
  131. package/build/src/server/pagination/cursor_paginator.js +11 -11
  132. package/build/src/server/prompt.d.ts +27 -0
  133. package/build/src/server/prompt.d.ts.map +1 -0
  134. package/build/src/server/prompt.js +32 -0
  135. package/build/src/server/resource.d.ts +23 -0
  136. package/build/src/server/resource.d.ts.map +1 -0
  137. package/build/src/server/resource.js +40 -0
  138. package/build/src/server/tool.d.ts +19 -9
  139. package/build/src/server/tool.d.ts.map +1 -1
  140. package/build/src/server/tool.js +21 -0
  141. package/build/src/server/transports/fake_transport.d.ts +19 -1
  142. package/build/src/server/transports/fake_transport.d.ts.map +1 -1
  143. package/build/src/server/transports/fake_transport.js +28 -1
  144. package/build/src/server/transports/http_transport.d.ts +4 -3
  145. package/build/src/server/transports/http_transport.d.ts.map +1 -1
  146. package/build/src/server/transports/http_transport.js +14 -9
  147. package/build/src/server/transports/stdio_transport.d.ts +2 -2
  148. package/build/src/server/transports/stdio_transport.d.ts.map +1 -1
  149. package/build/src/server/transports/stdio_transport.js +0 -3
  150. package/build/src/server.d.ts +4 -3
  151. package/build/src/server.d.ts.map +1 -1
  152. package/build/src/server.js +15 -9
  153. package/build/src/types/config.d.ts +1 -0
  154. package/build/src/types/config.d.ts.map +1 -1
  155. package/build/src/types/content.d.ts +35 -0
  156. package/build/src/types/content.d.ts.map +1 -0
  157. package/build/src/types/content.js +7 -0
  158. package/build/src/types/context.d.ts +30 -18
  159. package/build/src/types/context.d.ts.map +1 -1
  160. package/build/src/types/jsonrpc.d.ts +406 -0
  161. package/build/src/types/jsonrpc.d.ts.map +1 -0
  162. package/build/src/types/jsonrpc.js +7 -0
  163. package/build/src/types/request.d.ts +3 -37
  164. package/build/src/types/request.d.ts.map +1 -1
  165. package/build/src/types/response.d.ts +10 -39
  166. package/build/src/types/response.d.ts.map +1 -1
  167. package/build/src/utils/find_resource_pattern.d.ts +19 -0
  168. package/build/src/utils/find_resource_pattern.d.ts.map +1 -0
  169. package/build/src/utils/find_resource_pattern.js +35 -0
  170. package/build/src/utils/stdio.d.ts +2 -3
  171. package/build/src/utils/stdio.d.ts.map +1 -1
  172. package/build/src/utils/stdio.js +7 -7
  173. package/build/src/utils/uri_template.d.ts +25 -0
  174. package/build/src/utils/uri_template.d.ts.map +1 -0
  175. package/build/src/utils/uri_template.js +241 -0
  176. package/build/stubs/config.ts.stub +0 -1
  177. package/build/stubs/make/mcp/prompts/main.ts.stub +32 -16
  178. package/build/stubs/make/mcp/resources/main.ts.stub +13 -19
  179. package/build/stubs/make/mcp/tools/main.ts.stub +11 -13
  180. package/build/stubs/make/middleware/mcp_middleware.ts.stub +48 -0
  181. package/build/tsconfig.tsbuildinfo +1 -1
  182. package/package.json +21 -4
  183. package/build/src/types/notification.d.ts +0 -14
  184. package/build/src/types/notification.d.ts.map +0 -1
  185. package/build/src/types/transport.d.ts.map +0 -1
  186. /package/build/src/{types/notification.js → server/contracts/context.js} +0 -0
  187. /package/build/src/{types/transport.js → server/contracts/response.js} +0 -0
@@ -1 +1 @@
1
- {"commands":[{"commandName":"make:mcp-tool","description":"Create a new MCP tool","help":"","namespace":"make","aliases":[],"flags":[],"args":[{"name":"name","argumentName":"name","required":true,"description":"Name of the tool","type":"string"}],"options":{"startApp":true},"filePath":"make/tool.js"},{"commandName":"mcp:start","description":"Start the MCP server stdio transport","help":"","namespace":"mcp","aliases":[],"flags":[],"args":[],"options":{"startApp":true},"filePath":"start.js"}],"version":1}
1
+ {"commands":[{"commandName":"mcp:inspector","description":"Open the MCP Inspector tool to debug and test MCP Servers.","help":"","namespace":"mcp","aliases":[],"flags":[],"args":[{"name":"transport","argumentName":"transport","required":true,"description":"Transport type","default":"http","type":"string"}],"options":{"startApp":true},"filePath":"inspector.js"},{"commandName":"make:mcp-prompt","description":"Create a new MCP prompt","help":"","namespace":"make","aliases":[],"flags":[],"args":[{"name":"name","argumentName":"name","required":true,"description":"Name of the prompt","type":"string"}],"options":{"startApp":true},"filePath":"make/prompt.js"},{"commandName":"make:mcp-resource","description":"Create a new MCP resource","help":"","namespace":"make","aliases":[],"flags":[],"args":[{"name":"name","argumentName":"name","required":true,"description":"Name of the resource","type":"string"}],"options":{"startApp":true},"filePath":"make/resource.js"},{"commandName":"make:mcp-tool","description":"Create a new MCP tool","help":"","namespace":"make","aliases":[],"flags":[],"args":[{"name":"name","argumentName":"name","required":true,"description":"Name of the tool","type":"string"}],"options":{"startApp":true},"filePath":"make/tool.js"},{"commandName":"mcp:start","description":"Start the MCP server stdio transport","help":"","namespace":"mcp","aliases":[],"flags":[],"args":[],"options":{"startApp":true},"filePath":"start.js"}],"version":1}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * @jrmc/adonis-mcp
3
+ *
4
+ * @license MIT
5
+ * @copyright Jeremy Chaufourier <jeremy@chaufourier.fr>
6
+ */
7
+ import type { CommandOptions } from '@adonisjs/core/types/ace';
8
+ import { BaseCommand } from '@adonisjs/core/ace';
9
+ export default class Inspector extends BaseCommand {
10
+ static commandName: string;
11
+ static description: string;
12
+ static options: CommandOptions;
13
+ transport: string;
14
+ run(): Promise<void>;
15
+ }
16
+ //# sourceMappingURL=inspector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inspector.d.ts","sourceRoot":"","sources":["../../commands/inspector.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AAG9D,OAAO,EAAQ,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAEtD,MAAM,CAAC,OAAO,OAAO,SAAU,SAAQ,WAAW;IAChD,MAAM,CAAC,WAAW,SAAkB;IACpC,MAAM,CAAC,WAAW,SAA+D;IAEjF,MAAM,CAAC,OAAO,EAAE,cAAc,CAE7B;IAGO,SAAS,EAAE,MAAM,CAAA;IAEnB,GAAG;CAoCV"}
@@ -0,0 +1,54 @@
1
+ /**
2
+ * @jrmc/adonis-mcp
3
+ *
4
+ * @license MIT
5
+ * @copyright Jeremy Chaufourier <jeremy@chaufourier.fr>
6
+ */
7
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
8
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
9
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
10
+ 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;
11
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
12
+ };
13
+ import { $ } from 'execa';
14
+ import { args, BaseCommand } from '@adonisjs/core/ace';
15
+ export default class Inspector extends BaseCommand {
16
+ static commandName = 'mcp:inspector';
17
+ static description = 'Open the MCP Inspector tool to debug and test MCP Servers.';
18
+ static options = {
19
+ startApp: true,
20
+ };
21
+ async run() {
22
+ if (this.app.inProduction) {
23
+ this.logger.error('Cannot open MCP inspector in production environment');
24
+ return;
25
+ }
26
+ if (this.transport !== 'http' && this.transport !== 'stdio') {
27
+ this.logger.error('Invalid transport type');
28
+ return;
29
+ }
30
+ if (this.transport === 'http') {
31
+ const router = await this.app.container.make('router');
32
+ const serverUrl = router
33
+ .builder()
34
+ .prefixUrl(`http://${process.env.HOST}:${process.env.PORT}`)
35
+ .disableRouteLookup()
36
+ .make('/mcp');
37
+ const inspectorProcess = $({
38
+ stdio: 'inherit',
39
+ }) `npx @modelcontextprotocol/inspector --transport http --server-url ${serverUrl}`;
40
+ await inspectorProcess;
41
+ }
42
+ else {
43
+ const nodeBinary = process.execPath;
44
+ const acePath = this.app.makePath('ace.js');
45
+ const inspectorProcess = $({
46
+ stdio: 'inherit',
47
+ }) `npx @modelcontextprotocol/inspector --transport stdio ${nodeBinary} ${acePath} mcp:start`;
48
+ await inspectorProcess;
49
+ }
50
+ }
51
+ }
52
+ __decorate([
53
+ args.string({ description: 'Transport type', default: 'http' })
54
+ ], Inspector.prototype, "transport", void 0);
@@ -0,0 +1,16 @@
1
+ /**
2
+ * @jrmc/adonis-mcp
3
+ *
4
+ * @license MIT
5
+ * @copyright Jeremy Chaufourier <jeremy@chaufourier.fr>
6
+ */
7
+ import type { CommandOptions } from '@adonisjs/core/types/ace';
8
+ import { BaseCommand } from '@adonisjs/core/ace';
9
+ export default class MakePrompt extends BaseCommand {
10
+ static commandName: string;
11
+ static description: string;
12
+ static options: CommandOptions;
13
+ name: string;
14
+ run(): Promise<void>;
15
+ }
16
+ //# sourceMappingURL=prompt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt.d.ts","sourceRoot":"","sources":["../../../commands/make/prompt.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AAE9D,OAAO,EAAQ,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAItD,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,WAAW;IACjD,MAAM,CAAC,WAAW,SAAoB;IACtC,MAAM,CAAC,WAAW,SAA4B;IAE9C,MAAM,CAAC,OAAO,EAAE,cAAc,CAE7B;IAGO,IAAI,EAAE,MAAM,CAAA;IAEd,GAAG;CAUV"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * @jrmc/adonis-mcp
3
+ *
4
+ * @license MIT
5
+ * @copyright Jeremy Chaufourier <jeremy@chaufourier.fr>
6
+ */
7
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
8
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
9
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
10
+ 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;
11
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
12
+ };
13
+ import { args, BaseCommand } from '@adonisjs/core/ace';
14
+ import string from '@adonisjs/core/helpers/string';
15
+ import { stubsRoot } from '../../stubs/main.js';
16
+ export default class MakePrompt extends BaseCommand {
17
+ static commandName = 'make:mcp-prompt';
18
+ static description = 'Create a new MCP prompt';
19
+ static options = {
20
+ startApp: true,
21
+ };
22
+ async run() {
23
+ const codemods = await this.createCodemods();
24
+ const stubPath = `make/mcp/prompts/main.ts.stub`;
25
+ await codemods.makeUsingStub(stubsRoot, stubPath, {
26
+ name: string.pascalCase(this.name),
27
+ });
28
+ this.logger.success(`Prompt created successfully for: ${this.name}`);
29
+ }
30
+ }
31
+ __decorate([
32
+ args.string({ description: 'Name of the prompt' })
33
+ ], MakePrompt.prototype, "name", void 0);
@@ -0,0 +1,16 @@
1
+ /**
2
+ * @jrmc/adonis-mcp
3
+ *
4
+ * @license MIT
5
+ * @copyright Jeremy Chaufourier <jeremy@chaufourier.fr>
6
+ */
7
+ import type { CommandOptions } from '@adonisjs/core/types/ace';
8
+ import { BaseCommand } from '@adonisjs/core/ace';
9
+ export default class MakeResource extends BaseCommand {
10
+ static commandName: string;
11
+ static description: string;
12
+ static options: CommandOptions;
13
+ name: string;
14
+ run(): Promise<void>;
15
+ }
16
+ //# sourceMappingURL=resource.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resource.d.ts","sourceRoot":"","sources":["../../../commands/make/resource.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AAE9D,OAAO,EAAQ,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAItD,MAAM,CAAC,OAAO,OAAO,YAAa,SAAQ,WAAW;IACnD,MAAM,CAAC,WAAW,SAAsB;IACxC,MAAM,CAAC,WAAW,SAA8B;IAEhD,MAAM,CAAC,OAAO,EAAE,cAAc,CAE7B;IAGO,IAAI,EAAE,MAAM,CAAA;IAEd,GAAG;CAUV"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * @jrmc/adonis-mcp
3
+ *
4
+ * @license MIT
5
+ * @copyright Jeremy Chaufourier <jeremy@chaufourier.fr>
6
+ */
7
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
8
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
9
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
10
+ 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;
11
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
12
+ };
13
+ import { args, BaseCommand } from '@adonisjs/core/ace';
14
+ import string from '@adonisjs/core/helpers/string';
15
+ import { stubsRoot } from '../../stubs/main.js';
16
+ export default class MakeResource extends BaseCommand {
17
+ static commandName = 'make:mcp-resource';
18
+ static description = 'Create a new MCP resource';
19
+ static options = {
20
+ startApp: true,
21
+ };
22
+ async run() {
23
+ const codemods = await this.createCodemods();
24
+ const stubPath = `make/mcp/resources/main.ts.stub`;
25
+ await codemods.makeUsingStub(stubsRoot, stubPath, {
26
+ name: string.pascalCase(this.name),
27
+ });
28
+ this.logger.success(`Resource created successfully for: ${this.name}`);
29
+ }
30
+ }
31
+ __decorate([
32
+ args.string({ description: 'Name of the resource' })
33
+ ], MakeResource.prototype, "name", void 0);
@@ -1 +1 @@
1
- {"version":3,"file":"tool.d.ts","sourceRoot":"","sources":["../../../commands/make/tool.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AAG9D,OAAO,EAAQ,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAItD,MAAM,CAAC,OAAO,OAAO,QAAS,SAAQ,WAAW;IAC/C,MAAM,CAAC,WAAW,SAAkB;IACpC,MAAM,CAAC,WAAW,SAA0B;IAE5C,MAAM,CAAC,OAAO,EAAE,cAAc,CAE7B;IAGO,IAAI,EAAE,MAAM,CAAA;IAEd,GAAG;CAYV"}
1
+ {"version":3,"file":"tool.d.ts","sourceRoot":"","sources":["../../../commands/make/tool.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AAE9D,OAAO,EAAQ,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAItD,MAAM,CAAC,OAAO,OAAO,QAAS,SAAQ,WAAW;IAC/C,MAAM,CAAC,WAAW,SAAkB;IACpC,MAAM,CAAC,WAAW,SAA0B;IAE5C,MAAM,CAAC,OAAO,EAAE,cAAc,CAE7B;IAGO,IAAI,EAAE,MAAM,CAAA;IAEd,GAAG;CAUV"}
@@ -20,12 +20,10 @@ export default class MakeTool extends BaseCommand {
20
20
  startApp: true,
21
21
  };
22
22
  async run() {
23
- const config = this.app.config.get('mcp', { path: 'app/mcp' });
24
23
  const codemods = await this.createCodemods();
25
24
  const stubPath = `make/mcp/tools/main.ts.stub`;
26
25
  await codemods.makeUsingStub(stubsRoot, stubPath, {
27
26
  name: string.pascalCase(this.name),
28
- basePath: config.path,
29
27
  });
30
28
  this.logger.success(`Tool created successfully for: ${this.name}`);
31
29
  }
@@ -1 +1 @@
1
- {"version":3,"file":"configure.d.ts","sourceRoot":"","sources":["../configure.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,SAAS,MAAM,mCAAmC,CAAA;AAG9D,wBAAsB,SAAS,CAAC,OAAO,EAAE,SAAS,iBAejD"}
1
+ {"version":3,"file":"configure.d.ts","sourceRoot":"","sources":["../configure.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,SAAS,MAAM,mCAAmC,CAAA;AAG9D,wBAAsB,SAAS,CAAC,OAAO,EAAE,SAAS,iBAuBjD"}
@@ -11,6 +11,13 @@ export async function configure(command) {
11
11
  * Create default config file
12
12
  */
13
13
  await codemods.makeUsingStub(stubsRoot, 'config.ts.stub', {});
14
+ /**
15
+ * Create and configuredefault middleware file
16
+ */
17
+ await codemods.makeUsingStub(stubsRoot, 'make/middleware/mcp_middleware.ts.stub', {});
18
+ await codemods.registerMiddleware('router', [
19
+ { path: '#middleware/mcp_middleware', position: 'after' },
20
+ ]);
14
21
  /**
15
22
  * Register provider
16
23
  */
package/build/index.d.ts CHANGED
@@ -1,5 +1,7 @@
1
1
  export { configure } from './configure.js';
2
2
  export { Tool } from './src/server/tool.js';
3
+ export { Resource } from './src/server/resource.js';
4
+ export { Prompt } from './src/server/prompt.js';
3
5
  export * as McpResponse from './src/response.js';
4
6
  export { defineConfig } from './src/define_config.js';
5
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAA;AAC3C,OAAO,KAAK,WAAW,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAA;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAA;AAC/C,OAAO,KAAK,WAAW,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA"}
package/build/index.js CHANGED
@@ -1,4 +1,6 @@
1
1
  export { configure } from './configure.js';
2
2
  export { Tool } from './src/server/tool.js';
3
+ export { Resource } from './src/server/resource.js';
4
+ export { Prompt } from './src/server/prompt.js';
3
5
  export * as McpResponse from './src/response.js';
4
6
  export { defineConfig } from './src/define_config.js';
@@ -13,6 +13,9 @@ export default class McpProvider {
13
13
  register(): void;
14
14
  start(): Promise<void>;
15
15
  registerTools(): Promise<void>;
16
+ registerResources(): Promise<void>;
17
+ registerPrompts(): Promise<void>;
18
+ registerMethods(type: 'tool' | 'resource' | 'prompt'): Promise<void>;
16
19
  }
17
20
  declare module '@adonisjs/core/http' {
18
21
  interface Router {
@@ -1 +1 @@
1
- {"version":3,"file":"mcp_provider.d.ts","sourceRoot":"","sources":["../../providers/mcp_provider.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AAC9D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAKrD,OAAO,SAAS,MAAM,kBAAkB,CAAA;AAExC,MAAM,CAAC,OAAO,OAAO,WAAW;IAClB,SAAS,CAAC,GAAG,EAAE,kBAAkB;gBAAvB,GAAG,EAAE,kBAAkB;IAE7C,QAAQ;IAQF,KAAK;IAeL,aAAa;CA4CpB;AAED,OAAO,QAAQ,qBAAqB,CAAC;IACnC,UAAU,MAAM;QACd,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,KAAK,UAAU,CAAA;KACtC;CACF;AAED,OAAO,QAAQ,sBAAsB,CAAC;IACpC,UAAU,iBAAiB;QACzB,UAAU,EAAE,SAAS,CAAA;KACtB;CACF"}
1
+ {"version":3,"file":"mcp_provider.d.ts","sourceRoot":"","sources":["../../providers/mcp_provider.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AAC9D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAKrD,OAAO,SAAS,MAAM,kBAAkB,CAAA;AAExC,MAAM,CAAC,OAAO,OAAO,WAAW;IAClB,SAAS,CAAC,GAAG,EAAE,kBAAkB;gBAAvB,GAAG,EAAE,kBAAkB;IAE7C,QAAQ;IAQF,KAAK;IAeL,aAAa;IAIb,iBAAiB;IAIjB,eAAe;IAIf,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,QAAQ;CAoC3D;AAED,OAAO,QAAQ,qBAAqB,CAAC;IACnC,UAAU,MAAM;QACd,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,KAAK,UAAU,CAAA;KACtC;CACF;AAED,OAAO,QAAQ,sBAAsB,CAAC;IACpC,UAAU,iBAAiB;QACzB,UAAU,EAAE,SAAS,CAAA;KACtB;CACF"}
@@ -4,8 +4,8 @@
4
4
  * @license MIT
5
5
  * @copyright Jeremy Chaufourier <jeremy@chaufourier.fr>
6
6
  */
7
- // import type { Tool } from '../src/types.js'
8
7
  import { fsReadAll } from '@adonisjs/core/helpers';
8
+ import string from '@adonisjs/core/helpers/string';
9
9
  import McpServer from '../src/server.js';
10
10
  export default class McpProvider {
11
11
  app;
@@ -27,22 +27,45 @@ export default class McpProvider {
27
27
  });
28
28
  };
29
29
  await this.registerTools();
30
- // await this.registerResources()
31
- // await this.registerPrompts()
30
+ await this.registerResources();
31
+ await this.registerPrompts();
32
32
  }
33
33
  async registerTools() {
34
+ this.registerMethods('tool');
35
+ }
36
+ async registerResources() {
37
+ this.registerMethods('resource');
38
+ }
39
+ async registerPrompts() {
40
+ this.registerMethods('prompt');
41
+ }
42
+ async registerMethods(type) {
34
43
  const server = await this.app.container.make('jrmc.mcp');
35
- const path = this.app.makePath(server.config.path);
36
- const files = await fsReadAll(path, {
37
- filter: (filePath) => filePath.includes('_tool.ts'),
44
+ const mcpPath = this.app.makePath(this.app.rcFile.directories['mcp'] || 'app/mcp/', `${string.plural(type)}/`);
45
+ const files = await fsReadAll(mcpPath, {
46
+ filter: (filePath) => !filePath.endsWith('.map') && (filePath.includes(`_${type}.ts`) || filePath.includes(`_${type}.js`)),
38
47
  });
39
48
  await Promise.all(files.map(async (file) => {
40
- const path = this.app.makePath(server.config.path, file);
41
- const { default: tool } = await import(path);
42
- const toolInstance = new tool();
43
- server.addTool({
44
- [toolInstance.name]: path,
45
- });
49
+ const path = this.app.makePath(mcpPath, file);
50
+ const { default: Method } = await import(path);
51
+ const instance = new Method();
52
+ switch (type) {
53
+ case 'tool':
54
+ server.addTool({
55
+ [instance.name]: path,
56
+ });
57
+ break;
58
+ case 'resource':
59
+ server.addResource({
60
+ [instance.uri]: path,
61
+ });
62
+ break;
63
+ case 'prompt':
64
+ server.addPrompt({
65
+ [instance.name]: path,
66
+ });
67
+ break;
68
+ }
46
69
  }));
47
70
  }
48
71
  }
@@ -1 +1 @@
1
- {"version":3,"file":"define_config.d.ts","sourceRoot":"","sources":["../../src/define_config.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAElD,wBAAgB,YAAY,CAAC,CAAC,SAAS,SAAS,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,CAK9D"}
1
+ {"version":3,"file":"define_config.d.ts","sourceRoot":"","sources":["../../src/define_config.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAElD,wBAAgB,YAAY,CAAC,CAAC,SAAS,SAAS,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,CAE9D"}
@@ -5,8 +5,5 @@
5
5
  * @copyright Jeremy Chaufourier <jeremy@chaufourier.fr>
6
6
  */
7
7
  export function defineConfig(config) {
8
- if (!config.path) {
9
- config.path = 'app/mcp';
10
- }
11
8
  return config;
12
9
  }
@@ -1 +1 @@
1
- {"version":3,"file":"error.d.ts","sourceRoot":"","sources":["../../../src/enums/error.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,oBAAY,SAAS;IAEnB,gBAAgB,SAAS;IACzB,cAAc,SAAS;IAGvB,UAAU,SAAS;IACnB,cAAc,SAAS;IACvB,cAAc,SAAS;IACvB,aAAa,SAAS;IACtB,aAAa,SAAS;CACvB"}
1
+ {"version":3,"file":"error.d.ts","sourceRoot":"","sources":["../../../src/enums/error.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,oBAAY,SAAS;IACnB,gBAAgB,SAAS;IACzB,cAAc,SAAS;IAGvB,UAAU,SAAS;IACnB,cAAc,SAAS;IACvB,cAAc,SAAS;IACvB,aAAa,SAAS;IACtB,aAAa,SAAS;CACvB"}
@@ -6,7 +6,6 @@
6
6
  */
7
7
  export var ErrorCode;
8
8
  (function (ErrorCode) {
9
- // SDK error codes
10
9
  ErrorCode[ErrorCode["ConnectionClosed"] = -32000] = "ConnectionClosed";
11
10
  ErrorCode[ErrorCode["RequestTimeout"] = -32001] = "RequestTimeout";
12
11
  // Standard JSON-RPC error codes
@@ -4,7 +4,7 @@
4
4
  * @license MIT
5
5
  * @copyright Jeremy Chaufourier <jeremy@chaufourier.fr>
6
6
  */
7
- import type { JsonRpcRequest } from './types/request.js';
7
+ import type { JsonRpcRequest } from './types/jsonrpc.js';
8
8
  export default class Request implements JsonRpcRequest {
9
9
  jsonrpc: '2.0';
10
10
  id: string | number;
@@ -4,29 +4,30 @@
4
4
  * @license MIT
5
5
  * @copyright Jeremy Chaufourier <jeremy@chaufourier.fr>
6
6
  */
7
- import type { JsonRpcResponse, McpResponse } from './types/response.js';
8
- export default class Response implements McpResponse {
9
- text(text: string): {
10
- type: "text";
11
- text: string;
12
- };
13
- image(data: string, mimeType: string, _meta?: Record<string, unknown>): {
14
- type: "image";
15
- data: string;
16
- mimeType: string;
17
- _meta: Record<string, unknown> | undefined;
18
- };
19
- audio(data: string, mimeType: string, _meta?: Record<string, unknown>): {
20
- type: "audio";
21
- data: string;
22
- mimeType: string;
23
- _meta: Record<string, unknown> | undefined;
24
- };
25
- error(message: string, code?: number, data?: Record<string, unknown>): {
26
- message: string;
27
- code: number;
28
- data: Record<string, unknown> | undefined;
29
- };
7
+ import type { JsonRpcResponse, Completion } from './types/jsonrpc.js';
8
+ import type { Response } from './server/contracts/response.js';
9
+ import type { McpRequestType } from './types/request.js';
10
+ import type { JsonRpcRequest } from './types/jsonrpc.js';
11
+ import Text from './server/contents/text.js';
12
+ import Blob from './server/contents/blob.js';
13
+ import Image from './server/contents/image.js';
14
+ import Audio from './server/contents/audio.js';
15
+ import Structured from './server/contents/structured.js';
16
+ import ResourceLink from './server/contents/resource_link.js';
17
+ import EmbeddedResource from './server/contents/embedded_resource.js';
18
+ import Error from './server/contents/error.js';
19
+ export default class<T extends McpRequestType = McpRequestType> implements Response {
20
+ readonly type: T;
21
+ constructor(jsonRpcRequest: JsonRpcRequest);
22
+ text(text: string): Text;
23
+ blob(text: string): Blob;
24
+ image(data: string, mimeType: string): Image;
25
+ audio(data: string, mimeType: string): Audio;
26
+ structured(object: Record<string, unknown>): Structured;
27
+ resourceLink(uri: string): ResourceLink;
28
+ embeddedResource(uri: string): EmbeddedResource;
29
+ error(message: string): Error;
30
+ complete(completion: Completion): Completion;
30
31
  static toJsonRpc({ id, result, error }: Omit<JsonRpcResponse, 'jsonrpc'>): JsonRpcResponse;
31
32
  }
32
33
  //# sourceMappingURL=response.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"response.d.ts","sourceRoot":"","sources":["../../src/response.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAEvE,MAAM,CAAC,OAAO,OAAO,QAAS,YAAW,WAAW;IAClD,IAAI,CAAC,IAAI,EAAE,MAAM;;;;IAIjB,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;;;;;IAIrE,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;;;;;IAIrE,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;;;;;IAQpE,MAAM,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,IAAI,CAAC,eAAe,EAAE,SAAS,CAAC,GAAG,eAAe;CAQ3F"}
1
+ {"version":3,"file":"response.d.ts","sourceRoot":"","sources":["../../src/response.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AACrE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAA;AAC9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AACxD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAExD,OAAO,IAAI,MAAM,2BAA2B,CAAA;AAC5C,OAAO,IAAI,MAAM,2BAA2B,CAAA;AAC5C,OAAO,KAAK,MAAM,4BAA4B,CAAA;AAC9C,OAAO,KAAK,MAAM,4BAA4B,CAAA;AAC9C,OAAO,UAAU,MAAM,iCAAiC,CAAA;AACxD,OAAO,YAAY,MAAM,oCAAoC,CAAA;AAC7D,OAAO,gBAAgB,MAAM,wCAAwC,CAAA;AACrE,OAAO,KAAK,MAAM,4BAA4B,CAAA;AAE9C,MAAM,CAAC,OAAO,OAAO,CAAC,SAAS,cAAc,GAAG,cAAc,CAAE,YAAW,QAAQ;IACjF,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAA;gBAEJ,cAAc,EAAE,cAAc;IAc1C,IAAI,CAAC,IAAI,EAAE,MAAM;IAIjB,IAAI,CAAC,IAAI,EAAE,MAAM;IAIjB,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;IAIpC,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;IAIpC,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAI1C,YAAY,CAAC,GAAG,EAAE,MAAM;IAIxB,gBAAgB,CAAC,GAAG,EAAE,MAAM;IAI5B,KAAK,CAAC,OAAO,EAAE,MAAM;IAIrB,QAAQ,CAAC,UAAU,EAAE,UAAU;IAI/B,MAAM,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,IAAI,CAAC,eAAe,EAAE,SAAS,CAAC,GAAG,eAAe;CAQ3F"}
@@ -4,23 +4,59 @@
4
4
  * @license MIT
5
5
  * @copyright Jeremy Chaufourier <jeremy@chaufourier.fr>
6
6
  */
7
- import { ErrorCode } from './enums/error.js';
8
- export default class Response {
7
+ import Text from './server/contents/text.js';
8
+ import Blob from './server/contents/blob.js';
9
+ import Image from './server/contents/image.js';
10
+ import Audio from './server/contents/audio.js';
11
+ import Structured from './server/contents/structured.js';
12
+ import ResourceLink from './server/contents/resource_link.js';
13
+ import EmbeddedResource from './server/contents/embedded_resource.js';
14
+ import Error from './server/contents/error.js';
15
+ export default class {
16
+ type;
17
+ constructor(jsonRpcRequest) {
18
+ if (jsonRpcRequest.method === 'resources/read') {
19
+ this.type = 'resources/read';
20
+ }
21
+ else if (jsonRpcRequest.method === 'prompts/get') {
22
+ this.type = 'prompts/get';
23
+ }
24
+ else if (jsonRpcRequest.method === 'prompts/get') {
25
+ this.type = 'tools/call';
26
+ }
27
+ else if (jsonRpcRequest.method === 'completion/complete') {
28
+ this.type = 'completion/complete';
29
+ }
30
+ else {
31
+ this.type = 'ping';
32
+ }
33
+ }
9
34
  text(text) {
10
- return { type: 'text', text };
35
+ return new Text(text);
11
36
  }
12
- image(data, mimeType, _meta) {
13
- return { type: 'image', data, mimeType, _meta };
37
+ blob(text) {
38
+ return new Blob(text);
14
39
  }
15
- audio(data, mimeType, _meta) {
16
- return { type: 'audio', data, mimeType, _meta };
40
+ image(data, mimeType) {
41
+ return new Image(data, mimeType);
17
42
  }
18
- error(message, code, data) {
19
- return {
20
- message,
21
- code: code ?? ErrorCode.InternalError,
22
- data,
23
- };
43
+ audio(data, mimeType) {
44
+ return new Audio(data, mimeType);
45
+ }
46
+ structured(object) {
47
+ return new Structured(object);
48
+ }
49
+ resourceLink(uri) {
50
+ return new ResourceLink(uri);
51
+ }
52
+ embeddedResource(uri) {
53
+ return new EmbeddedResource(uri);
54
+ }
55
+ error(message) {
56
+ return new Error(message);
57
+ }
58
+ complete(completion) {
59
+ return completion;
24
60
  }
25
61
  static toJsonRpc({ id, result, error }) {
26
62
  return {
@@ -0,0 +1,10 @@
1
+ /**
2
+ * @jrmc/adonis-mcp
3
+ *
4
+ * @license MIT
5
+ * @copyright Jeremy Chaufourier <jeremy@chaufourier.fr>
6
+ */
7
+ export { lastModified } from './last_modified.js';
8
+ export { priority } from './priority.js';
9
+ export { audience } from './audience.js';
10
+ //# sourceMappingURL=annotations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"annotations.d.ts","sourceRoot":"","sources":["../../../../src/server/annotations/annotations.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * @jrmc/adonis-mcp
3
+ *
4
+ * @license MIT
5
+ * @copyright Jeremy Chaufourier <jeremy@chaufourier.fr>
6
+ */
7
+ export { lastModified } from './last_modified.js';
8
+ export { priority } from './priority.js';
9
+ export { audience } from './audience.js';
@@ -0,0 +1,22 @@
1
+ /**
2
+ * @jrmc/adonis-mcp
3
+ *
4
+ * @license MIT
5
+ * @copyright Jeremy Chaufourier <jeremy@chaufourier.fr>
6
+ */
7
+ import type Role from '../../enums/role.js';
8
+ import type { Annotations } from '../../types/jsonrpc.js';
9
+ /**
10
+ * Decorator to specify the intended audience for a resource or tool
11
+ * @param audience - A single Role or an array of Roles (Role.User, Role.Assistant, or both)
12
+ */
13
+ export declare function audience(audience: Role | Role[]): <T extends {
14
+ new (...args: any[]): {
15
+ annotations?: Annotations;
16
+ };
17
+ }>(constructor: T) => {
18
+ new (...args: any[]): {
19
+ annotations?: Annotations;
20
+ };
21
+ } & T;
22
+ //# sourceMappingURL=audience.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audience.d.ts","sourceRoot":"","sources":["../../../../src/server/annotations/audience.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,IAAI,MAAM,qBAAqB,CAAA;AAC3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AAKzD;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,IAAI,GAAG,IAAI,EAAE,IAC7B,CAAC,SAAS;IAAE,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG;QAAE,WAAW,CAAC,EAAE,WAAW,CAAA;KAAE,CAAA;CAAE,EAChF,aAAa,CAAC;kBAGS,GAAG,EAAE;sBAJqC,WAAW;;MAmB/E"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * @jrmc/adonis-mcp
3
+ *
4
+ * @license MIT
5
+ * @copyright Jeremy Chaufourier <jeremy@chaufourier.fr>
6
+ */
7
+ import { Resource } from '../resource.js';
8
+ import { createError } from '@adonisjs/core/exceptions';
9
+ /**
10
+ * Decorator to specify the intended audience for a resource or tool
11
+ * @param audience - A single Role or an array of Roles (Role.User, Role.Assistant, or both)
12
+ */
13
+ export function audience(audience) {
14
+ return function (constructor) {
15
+ return class extends constructor {
16
+ constructor(...args) {
17
+ super(...args);
18
+ if (!(this instanceof Resource)) {
19
+ throw createError('@audience decorator can only be applied to Resource classes', 'E_RESOURCE_DECORATOR');
20
+ }
21
+ if (!this.annotations) {
22
+ this.annotations = {};
23
+ }
24
+ this.annotations.audience = Array.isArray(audience) ? audience : [audience];
25
+ }
26
+ };
27
+ };
28
+ }
@@ -0,0 +1,17 @@
1
+ /**
2
+ * @jrmc/adonis-mcp
3
+ *
4
+ * @license MIT
5
+ * @copyright Jeremy Chaufourier <jeremy@chaufourier.fr>
6
+ */
7
+ import type { ToolAnnotations } from '../../types/jsonrpc.js';
8
+ export declare function isDestructive(destructive?: true | false): <T extends {
9
+ new (...args: any[]): {
10
+ annotations?: ToolAnnotations;
11
+ };
12
+ }>(constructor: T) => {
13
+ new (...args: any[]): {
14
+ annotations?: ToolAnnotations;
15
+ };
16
+ } & T;
17
+ //# sourceMappingURL=is_destructive.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"is_destructive.d.ts","sourceRoot":"","sources":["../../../../src/server/annotations/is_destructive.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAK7D,wBAAgB,aAAa,CAAC,WAAW,GAAE,IAAI,GAAG,KAAY,IAC3C,CAAC,SAAS;IAAE,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG;QAAE,WAAW,CAAC,EAAE,eAAe,CAAA;KAAE,CAAA;CAAE,EACpF,aAAa,CAAC;kBAGS,GAAG,EAAE;sBAJqC,eAAe;;MAmBnF"}