@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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt.d.ts","sourceRoot":"","sources":["../../../src/server/prompt.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AACpD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AACzE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAA;AAErD,8BAAsB,MAAM,CAAC,CAAC,SAAS,UAAU,GAAG,UAAU;IAC5D,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAE9B,MAAM,IAAI,CAAC;IAOX,MAAM;;;;;;;IAYN,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,OAAO,GAAG,OAAO,EAAE,CAAC;IAE/D,QAAQ,CAAC,GAAG,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC;CAK9D"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * @jrmc/adonis-mcp
3
+ *
4
+ * @license MIT
5
+ * @copyright Jeremy Chaufourier <jeremy@chaufourier.fr>
6
+ */
7
+ export class Prompt {
8
+ title;
9
+ description;
10
+ meta;
11
+ schema() {
12
+ return {
13
+ type: 'object',
14
+ properties: {},
15
+ };
16
+ }
17
+ toJson() {
18
+ const schema = this.schema();
19
+ return {
20
+ name: this.name,
21
+ title: this.title,
22
+ description: this.description,
23
+ inputSchema: schema,
24
+ _meta: this.meta,
25
+ };
26
+ }
27
+ async complete(ctx) {
28
+ return await ctx.response.complete({
29
+ values: [],
30
+ });
31
+ }
32
+ }
@@ -0,0 +1,23 @@
1
+ /**
2
+ * @jrmc/adonis-mcp
3
+ *
4
+ * @license MIT
5
+ * @copyright Jeremy Chaufourier <jeremy@chaufourier.fr>
6
+ */
7
+ import type { ResourceContext, CompleteContext } from '../types/context.js';
8
+ import type { Content } from './contracts/content.js';
9
+ import type { Annotations, Completion } from '../types/jsonrpc.js';
10
+ export declare abstract class Resource<T = {}> {
11
+ uri: string;
12
+ abstract name: string;
13
+ title?: string;
14
+ description?: string;
15
+ mimeType?: string;
16
+ size?: number;
17
+ annotations?: Annotations;
18
+ meta?: Record<string, unknown>;
19
+ toJson(): Record<string, unknown>;
20
+ abstract handle(ctx?: ResourceContext<T>): Promise<Content>;
21
+ complete(ctx?: CompleteContext<T>): Promise<Completion>;
22
+ }
23
+ //# sourceMappingURL=resource.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resource.d.ts","sourceRoot":"","sources":["../../../src/server/resource.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAC3E,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAA;AACrD,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAKlE,8BAAsB,QAAQ,CAAC,CAAC,GAAG,EAAE;IACnC,GAAG,EAAE,MAAM,CAAgE;IAC3E,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAE9B,MAAM;IAoBN,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IAErD,QAAQ,CAAC,GAAG,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC;CAK9D"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * @jrmc/adonis-mcp
3
+ *
4
+ * @license MIT
5
+ * @copyright Jeremy Chaufourier <jeremy@chaufourier.fr>
6
+ */
7
+ import string from '@adonisjs/core/helpers/string';
8
+ import { UriTemplate } from '../utils/uri_template.js';
9
+ export class Resource {
10
+ uri = `file:///resources/${string.dashCase(this.constructor.name)}`;
11
+ title;
12
+ description;
13
+ mimeType;
14
+ size;
15
+ annotations;
16
+ meta;
17
+ toJson() {
18
+ const data = {
19
+ name: this.name,
20
+ title: this.title,
21
+ description: this.description,
22
+ size: this.size,
23
+ mimeType: this.mimeType,
24
+ annotations: this.annotations,
25
+ _meta: this.meta,
26
+ };
27
+ if (UriTemplate.isTemplate(this.uri)) {
28
+ data.uriTemplate = this.uri;
29
+ }
30
+ else {
31
+ data.uri = this.uri;
32
+ }
33
+ return data;
34
+ }
35
+ async complete(ctx) {
36
+ return await ctx.response.complete({
37
+ values: [],
38
+ });
39
+ }
40
+ }
@@ -4,15 +4,25 @@
4
4
  * @license MIT
5
5
  * @copyright Jeremy Chaufourier <jeremy@chaufourier.fr>
6
6
  */
7
- import type { InferJSONSchema, JSONSchema } from '../types/method.js';
8
- import type { McpContext } from '../types/context.js';
9
- export declare abstract class Tool<S extends JSONSchema> {
7
+ import type { JSONSchema } from '../types/method.js';
8
+ import type { ToolContext } from '../types/context.js';
9
+ import type { Content } from './contracts/content.js';
10
+ import type { ToolAnnotations } from '../types/jsonrpc.js';
11
+ export declare abstract class Tool<T extends JSONSchema = JSONSchema> {
10
12
  abstract name: string;
11
- abstract title?: string;
12
- abstract description?: string;
13
- abstract schema?(): S;
14
- abstract handle(ctx?: McpContext & {
15
- args: InferJSONSchema<S>;
16
- }): Record<string, unknown> | Record<string, unknown>[] | Promise<Record<string, unknown> | Record<string, unknown>[]>;
13
+ title?: string;
14
+ description?: string;
15
+ annotations?: ToolAnnotations;
16
+ meta?: Record<string, unknown>;
17
+ schema(): T;
18
+ toJson(): {
19
+ name: string;
20
+ title: string | undefined;
21
+ description: string | undefined;
22
+ inputSchema: T;
23
+ annotations: ToolAnnotations | undefined;
24
+ _meta: Record<string, unknown> | undefined;
25
+ };
26
+ abstract handle(ctx?: ToolContext<T>): Promise<Content | Content[]>;
17
27
  }
18
28
  //# sourceMappingURL=tool.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tool.d.ts","sourceRoot":"","sources":["../../../src/server/tool.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AACrE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAErD,8BAAsB,IAAI,CAAC,CAAC,SAAS,UAAU;IAC7C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAE7B,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC;IAErB,QAAQ,CAAC,MAAM,CACb,GAAG,CAAC,EAAE,UAAU,GAAG;QAAE,IAAI,EAAE,eAAe,CAAC,CAAC,CAAC,CAAA;KAAE,GAE7C,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACvB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GACzB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;CACjE"}
1
+ {"version":3,"file":"tool.d.ts","sourceRoot":"","sources":["../../../src/server/tool.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AACpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AACtD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAA;AACrD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAE1D,8BAAsB,IAAI,CAAC,CAAC,SAAS,UAAU,GAAG,UAAU;IAC1D,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,WAAW,CAAC,EAAE,eAAe,CAAA;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAE9B,MAAM,IAAI,CAAC;IAOX,MAAM;;;;;;;;IAaN,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,OAAO,GAAG,OAAO,EAAE,CAAC;CACpE"}
@@ -5,4 +5,25 @@
5
5
  * @copyright Jeremy Chaufourier <jeremy@chaufourier.fr>
6
6
  */
7
7
  export class Tool {
8
+ title;
9
+ description;
10
+ annotations;
11
+ meta;
12
+ schema() {
13
+ return {
14
+ type: 'object',
15
+ properties: {},
16
+ };
17
+ }
18
+ toJson() {
19
+ const schema = this.schema();
20
+ return {
21
+ name: this.name,
22
+ title: this.title,
23
+ description: this.description,
24
+ inputSchema: schema,
25
+ annotations: this.annotations,
26
+ _meta: this.meta,
27
+ };
28
+ }
8
29
  }
@@ -1,2 +1,20 @@
1
- export {};
1
+ /**
2
+ * @jrmc/adonis-mcp
3
+ *
4
+ * @license MIT
5
+ * @copyright Jeremy Chaufourier <jeremy@chaufourier.fr>
6
+ */
7
+ import type { Transport } from '../contracts/transport.js';
8
+ import type { McpContext } from '../../types/context.js';
9
+ import type { JsonRpcResponse } from '../../types/jsonrpc.js';
10
+ export default class FakeTransport implements Transport {
11
+ sentMessages: JsonRpcResponse[];
12
+ bindBouncerCallbacks: ((ctx: McpContext) => void)[];
13
+ bindAuthCallbacks: ((ctx: McpContext) => void)[];
14
+ send(message: JsonRpcResponse): void;
15
+ bindBouncer?(ctx: McpContext): void;
16
+ bindAuth?(ctx: McpContext): void;
17
+ clear(): void;
18
+ getLastMessage(): JsonRpcResponse | undefined;
19
+ }
2
20
  //# sourceMappingURL=fake_transport.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"fake_transport.d.ts","sourceRoot":"","sources":["../../../../src/server/transports/fake_transport.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"fake_transport.d.ts","sourceRoot":"","sources":["../../../../src/server/transports/fake_transport.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AAC1D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AACxD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAE7D,MAAM,CAAC,OAAO,OAAO,aAAc,YAAW,SAAS;IACrD,YAAY,EAAE,eAAe,EAAE,CAAK;IACpC,oBAAoB,EAAE,CAAC,CAAC,GAAG,EAAE,UAAU,KAAK,IAAI,CAAC,EAAE,CAAK;IACxD,iBAAiB,EAAE,CAAC,CAAC,GAAG,EAAE,UAAU,KAAK,IAAI,CAAC,EAAE,CAAK;IAErD,IAAI,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI;IAIpC,WAAW,CAAC,CAAC,GAAG,EAAE,UAAU,GAAG,IAAI;IAInC,QAAQ,CAAC,CAAC,GAAG,EAAE,UAAU,GAAG,IAAI;IAIhC,KAAK,IAAI,IAAI;IAMb,cAAc,IAAI,eAAe,GAAG,SAAS;CAG9C"}
@@ -1 +1,28 @@
1
- export {};
1
+ /**
2
+ * @jrmc/adonis-mcp
3
+ *
4
+ * @license MIT
5
+ * @copyright Jeremy Chaufourier <jeremy@chaufourier.fr>
6
+ */
7
+ export default class FakeTransport {
8
+ sentMessages = [];
9
+ bindBouncerCallbacks = [];
10
+ bindAuthCallbacks = [];
11
+ send(message) {
12
+ this.sentMessages.push(message);
13
+ }
14
+ bindBouncer(ctx) {
15
+ this.bindBouncerCallbacks.forEach((callback) => callback(ctx));
16
+ }
17
+ bindAuth(ctx) {
18
+ this.bindAuthCallbacks.forEach((callback) => callback(ctx));
19
+ }
20
+ clear() {
21
+ this.sentMessages = [];
22
+ this.bindBouncerCallbacks = [];
23
+ this.bindAuthCallbacks = [];
24
+ }
25
+ getLastMessage() {
26
+ return this.sentMessages[this.sentMessages.length - 1];
27
+ }
28
+ }
@@ -5,12 +5,13 @@
5
5
  * @copyright Jeremy Chaufourier <jeremy@chaufourier.fr>
6
6
  */
7
7
  import type { HttpContext } from '@adonisjs/core/http';
8
+ import type { Transport } from '../contracts/transport.js';
8
9
  import type { McpContext } from '../../types/context.js';
9
- import type { Transport } from '../../types/transport.js';
10
- import type { JsonRpcResponse } from '../../types/response.js';
10
+ import type { JsonRpcResponse } from '../../types/jsonrpc.js';
11
11
  export default class HttpTransport implements Transport {
12
- protected ctx: HttpContext;
12
+ #private;
13
13
  constructor(ctx: HttpContext);
14
+ get sessionId(): string | undefined;
14
15
  bindBouncer(mcpContext: McpContext): void;
15
16
  bindAuth(mcpContext: McpContext): void;
16
17
  send(message: JsonRpcResponse): void;
@@ -1 +1 @@
1
- {"version":3,"file":"http_transport.d.ts","sourceRoot":"","sources":["../../../../src/server/transports/http_transport.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AACtD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AACxD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AACzD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AAE9D,MAAM,CAAC,OAAO,OAAO,aAAc,YAAW,SAAS;IACzC,SAAS,CAAC,GAAG,EAAE,WAAW;gBAAhB,GAAG,EAAE,WAAW;IAEtC,WAAW,CAAC,UAAU,EAAE,UAAU;IAMlC,QAAQ,CAAC,UAAU,EAAE,UAAU;IAM/B,IAAI,CAAC,OAAO,EAAE,eAAe;CAG9B"}
1
+ {"version":3,"file":"http_transport.d.ts","sourceRoot":"","sources":["../../../../src/server/transports/http_transport.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AACtD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AAC1D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AACxD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAE7D,MAAM,CAAC,OAAO,OAAO,aAAc,YAAW,SAAS;;gBAIzC,GAAG,EAAE,WAAW;IAK5B,IAAI,SAAS,uBAEZ;IAED,WAAW,CAAC,UAAU,EAAE,UAAU;IAOlC,QAAQ,CAAC,UAAU,EAAE,UAAU;IAO/B,IAAI,CAAC,OAAO,EAAE,eAAe;CAG9B"}
@@ -5,23 +5,28 @@
5
5
  * @copyright Jeremy Chaufourier <jeremy@chaufourier.fr>
6
6
  */
7
7
  export default class HttpTransport {
8
- ctx;
8
+ #ctx;
9
+ #sessionId;
9
10
  constructor(ctx) {
10
- this.ctx = ctx;
11
+ this.#ctx = ctx;
12
+ this.#sessionId = ctx.request.header('MCP-Session-Id');
13
+ }
14
+ get sessionId() {
15
+ return this.#sessionId;
11
16
  }
12
17
  bindBouncer(mcpContext) {
13
- if ('bouncer' in this.ctx) {
14
- ;
15
- mcpContext.bouncer = this.ctx.bouncer;
18
+ if ('bouncer' in this.#ctx) {
19
+ // @ts-ignore
20
+ mcpContext.bouncer = this.#ctx.bouncer;
16
21
  }
17
22
  }
18
23
  bindAuth(mcpContext) {
19
- if ('auth' in this.ctx) {
20
- ;
21
- mcpContext.auth = this.ctx.auth;
24
+ if ('auth' in this.#ctx) {
25
+ // @ts-ignore
26
+ mcpContext.auth = this.#ctx.auth;
22
27
  }
23
28
  }
24
29
  send(message) {
25
- this.ctx.response.json(message);
30
+ this.#ctx.response.json(message);
26
31
  }
27
32
  }
@@ -4,8 +4,8 @@
4
4
  * @license MIT
5
5
  * @copyright Jeremy Chaufourier <jeremy@chaufourier.fr>
6
6
  */
7
- import type { Transport } from '../../types/transport.js';
8
- import type { JsonRpcResponse } from '../../types/response.js';
7
+ import type { Transport } from '../contracts/transport.js';
8
+ import type { JsonRpcResponse } from '../../types/jsonrpc.js';
9
9
  import { EventEmitter } from 'node:events';
10
10
  export default class StdioTransport extends EventEmitter implements Transport {
11
11
  #private;
@@ -1 +1 @@
1
- {"version":3,"file":"stdio_transport.d.ts","sourceRoot":"","sources":["../../../../src/server/transports/stdio_transport.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AACzD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AAI9D,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAE1C,MAAM,CAAC,OAAO,OAAO,cAAe,SAAQ,YAAa,YAAW,SAAS;;IAK3E,MAAM,GAAI,OAAO,MAAM,UAGtB;;IAWK,iBAAiB;IAavB,IAAI,CAAC,OAAO,EAAE,eAAe;CAG9B"}
1
+ {"version":3,"file":"stdio_transport.d.ts","sourceRoot":"","sources":["../../../../src/server/transports/stdio_transport.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AAC1D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAI7D,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAE1C,MAAM,CAAC,OAAO,OAAO,cAAe,SAAQ,YAAa,YAAW,SAAS;;IAK3E,MAAM,GAAI,OAAO,MAAM,UAGtB;;IAOK,iBAAiB;IAavB,IAAI,CAAC,OAAO,EAAE,eAAe;CAG9B"}
@@ -18,9 +18,6 @@ export default class StdioTransport extends EventEmitter {
18
18
  super();
19
19
  this.#stdin.on('data', this.ondata);
20
20
  }
21
- // onerror = (error: Error) => {
22
- // this.onerror?.(error)
23
- // }
24
21
  async processReadBuffer() {
25
22
  while (true) {
26
23
  try {
@@ -5,9 +5,9 @@
5
5
  * @copyright Jeremy Chaufourier <jeremy@chaufourier.fr>
6
6
  */
7
7
  import type { McpConfig } from './types/config.js';
8
- import type { JsonRpcRequest } from './types/request.js';
8
+ import type { JsonRpcRequest } from './types/jsonrpc.js';
9
9
  import type { ToolList, ResourceList, PromptList } from './types/method.js';
10
- import type { Transport } from './types/transport.js';
10
+ import type { Transport } from './server/contracts/transport.js';
11
11
  import ServerContext from './server/context.js';
12
12
  export default class Server {
13
13
  #private;
@@ -28,8 +28,10 @@ export default class Server {
28
28
  'tools/call': () => Promise<typeof import("./server/methods/call_tool.js")>;
29
29
  'resources/list': () => Promise<typeof import("./server/methods/list_resources.js")>;
30
30
  'resources/read': () => Promise<typeof import("./server/methods/read_resource.js")>;
31
+ 'resources/templates/list': () => Promise<typeof import("./server/methods/list_resource_templates.js")>;
31
32
  'prompts/list': () => Promise<typeof import("./server/methods/list_prompts.js")>;
32
33
  'prompts/get': () => Promise<typeof import("./server/methods/get_prompt.js")>;
34
+ 'completion/complete': () => Promise<typeof import("./server/methods/completion.js")>;
33
35
  ping: () => Promise<typeof import("./server/methods/ping.js")>;
34
36
  };
35
37
  constructor(config: McpConfig);
@@ -40,6 +42,5 @@ export default class Server {
40
42
  connect(transport: Transport): Promise<void>;
41
43
  handle(jsonRequest: JsonRpcRequest): Promise<void | null>;
42
44
  createContext(jsonRpcRequest: JsonRpcRequest): ServerContext;
43
- generateSessionId(): `${string}-${string}-${string}-${string}-${string}`;
44
45
  }
45
46
  //# sourceMappingURL=server.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/server.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAClD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AACxD,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAC3E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AAIrD,OAAO,aAAa,MAAM,qBAAqB,CAAA;AAG/C,MAAM,CAAC,OAAO,OAAO,MAAM;;IAEzB,MAAM,EAAE,SAAS,CAAA;IACjB,IAAI,EAAE,MAAM,CAAwB;IACpC,OAAO,EAAE,MAAM,CAAU;IACzB,YAAY,EAAE,MAAM,CAA2E;IAE/F,wBAAwB,EAAE,MAAM,EAAE,CAAiB;IAEnD,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAUhC;IAED,KAAK,EAAE,QAAQ,CAAK;IACpB,SAAS,EAAE,YAAY,CAAK;IAC5B,OAAO,EAAE,UAAU,CAAK;IAExB,mBAAmB,EAAE,MAAM,CAAK;IAChC,uBAAuB,EAAE,MAAM,CAAK;IAEpC,OAAO;;;;;;;;;MASN;gBAEW,MAAM,EAAE,SAAS;IAwB7B,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,GAAE,OAAc;IAUhD,OAAO,CAAC,IAAI,EAAE,QAAQ;IAGtB,WAAW,CAAC,IAAI,EAAE,YAAY;IAG9B,SAAS,CAAC,IAAI,EAAE,UAAU;IAIpB,OAAO,CAAC,SAAS,EAAE,SAAS;IAI5B,MAAM,CAAC,WAAW,EAAE,cAAc;IA8CxC,aAAa,CAAC,cAAc,EAAE,cAAc;IAgB5C,iBAAiB;CAGlB"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/server.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAClD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AACxD,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAC3E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAA;AAIhE,OAAO,aAAa,MAAM,qBAAqB,CAAA;AAG/C,MAAM,CAAC,OAAO,OAAO,MAAM;;IAGzB,MAAM,EAAE,SAAS,CAAA;IACjB,IAAI,EAAE,MAAM,CAAwB;IACpC,OAAO,EAAE,MAAM,CAAU;IACzB,YAAY,EAAE,MAAM,CAA2E;IAE/F,wBAAwB,EAAE,MAAM,EAAE,CAA+B;IAEjE,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAUhC;IAED,KAAK,EAAE,QAAQ,CAAK;IACpB,SAAS,EAAE,YAAY,CAAK;IAC5B,OAAO,EAAE,UAAU,CAAK;IAExB,mBAAmB,EAAE,MAAM,CAAK;IAChC,uBAAuB,EAAE,MAAM,CAAK;IAEpC,OAAO;;;;;;;;;;;MAWN;gBAEW,MAAM,EAAE,SAAS;IA4B7B,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,GAAE,OAAc;IAchD,OAAO,CAAC,IAAI,EAAE,QAAQ;IAGtB,WAAW,CAAC,IAAI,EAAE,YAAY;IAG9B,SAAS,CAAC,IAAI,EAAE,UAAU;IAIpB,OAAO,CAAC,SAAS,EAAE,SAAS;IAI5B,MAAM,CAAC,WAAW,EAAE,cAAc;IA2CxC,aAAa,CAAC,cAAc,EAAE,cAAc;CAe7C"}
@@ -14,7 +14,7 @@ export default class Server {
14
14
  name = 'AdonisJS MCP Server';
15
15
  version = '1.0.0';
16
16
  instructions = 'This MCP server lets AI agents interact with our AdonisJS application.';
17
- supportedProtocolVersion = ['2025-06-18'];
17
+ supportedProtocolVersion = ['2025-11-25', '2025-06-18'];
18
18
  capabilities = {
19
19
  tools: {
20
20
  listChanged: false,
@@ -37,8 +37,10 @@ export default class Server {
37
37
  'tools/call': () => import('./server/methods/call_tool.js'),
38
38
  'resources/list': () => import('./server/methods/list_resources.js'),
39
39
  'resources/read': () => import('./server/methods/read_resource.js'),
40
+ 'resources/templates/list': () => import('./server/methods/list_resource_templates.js'),
40
41
  'prompts/list': () => import('./server/methods/list_prompts.js'),
41
42
  'prompts/get': () => import('./server/methods/get_prompt.js'),
43
+ 'completion/complete': () => import('./server/methods/completion.js'),
42
44
  'ping': () => import('./server/methods/ping.js'),
43
45
  };
44
46
  constructor(config) {
@@ -58,6 +60,9 @@ export default class Server {
58
60
  if (config.defaultPaginationLength) {
59
61
  this.defaultPaginationLength = config.defaultPaginationLength;
60
62
  }
63
+ if (config.completions) {
64
+ this.addCapability('completions');
65
+ }
61
66
  }
62
67
  addCapability(key, value = true) {
63
68
  if (key.includes('.')) {
@@ -65,7 +70,9 @@ export default class Server {
65
70
  let existing = this.capabilities[root] ?? {};
66
71
  existing[child] = value;
67
72
  this.capabilities[root] = existing;
73
+ return;
68
74
  }
75
+ this.capabilities[key] = {};
69
76
  }
70
77
  addTool(item) {
71
78
  this.tools = { ...this.tools, ...item };
@@ -80,6 +87,10 @@ export default class Server {
80
87
  this.#transport = transport;
81
88
  }
82
89
  async handle(jsonRequest) {
90
+ // INGORE NOTIFICATIONS FOR NOW
91
+ if (jsonRequest.method.startsWith('notifications/')) {
92
+ return null;
93
+ }
83
94
  const mcpContext = this.createContext(jsonRequest);
84
95
  if (!this.#transport) {
85
96
  throw createError('No transport connected.', 'E_NO_TRANSPORT_CONNECTED', 500);
@@ -89,10 +100,6 @@ export default class Server {
89
100
  this.#transport.bindAuth?.(mcpContext);
90
101
  }
91
102
  try {
92
- // TODO
93
- if (jsonRequest.method.startsWith('notifications/')) {
94
- return null;
95
- }
96
103
  if (Object.keys(this.methods).includes(jsonRequest.method)) {
97
104
  const lazyMethod = this.methods[jsonRequest.method];
98
105
  const { default: method } = await lazyMethod();
@@ -108,7 +115,9 @@ export default class Server {
108
115
  if (error instanceof JsonRpcException) {
109
116
  return this.#transport.send(error.toJsonRpcResponse());
110
117
  }
111
- this.#transport.send(new JsonRpcException('Internal error', ErrorCode.InternalError, jsonRequest.id, { error }).toJsonRpcResponse());
118
+ return this.#transport.send(new JsonRpcException('Internal error', ErrorCode.InternalError, jsonRequest.id, {
119
+ error,
120
+ }).toJsonRpcResponse());
112
121
  }
113
122
  }
114
123
  createContext(jsonRpcRequest) {
@@ -126,7 +135,4 @@ export default class Server {
126
135
  jsonRpcRequest,
127
136
  });
128
137
  }
129
- generateSessionId() {
130
- return crypto.randomUUID();
131
- }
132
138
  }
@@ -11,5 +11,6 @@ export type McpConfig = {
11
11
  path?: string;
12
12
  maxPaginationLength?: number;
13
13
  defaultPaginationLength?: number;
14
+ completions?: boolean;
14
15
  };
15
16
  //# sourceMappingURL=config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/types/config.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,MAAM,SAAS,GAAG;IACtB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,uBAAuB,CAAC,EAAE,MAAM,CAAA;CACjC,CAAA"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/types/config.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,MAAM,SAAS,GAAG;IACtB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,uBAAuB,CAAC,EAAE,MAAM,CAAA;IAChC,WAAW,CAAC,EAAE,OAAO,CAAA;CACtB,CAAA"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * @jrmc/adonis-mcp
3
+ *
4
+ * @license MIT
5
+ * @copyright Jeremy Chaufourier <jeremy@chaufourier.fr>
6
+ */
7
+ import type { Content } from '../server/contracts/content.js';
8
+ type HasMeta = {
9
+ withMeta: (meta: Record<string, unknown>) => Content;
10
+ };
11
+ export type TextPrompt = Content & HasMeta & {
12
+ asAssistant: () => Content;
13
+ asUser: () => Content;
14
+ };
15
+ export type ImagePrompt = Content & HasMeta & {
16
+ asAssistant: () => Content;
17
+ asUser: () => Content;
18
+ };
19
+ export type AudioPrompt = Content & HasMeta & {
20
+ asAssistant: () => Content;
21
+ asUser: () => Content;
22
+ };
23
+ export type EmbeddedResource = Content & HasMeta & {
24
+ asAssistant: () => Content;
25
+ asUser: () => Content;
26
+ };
27
+ export type Text = Content & HasMeta;
28
+ export type Blob = Content & HasMeta;
29
+ export type Image = Content & HasMeta;
30
+ export type Audio = Content & HasMeta;
31
+ export type ResourceLink = Content & HasMeta;
32
+ export type Structured = Content;
33
+ export type Error = Content;
34
+ export {};
35
+ //# sourceMappingURL=content.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"content.d.ts","sourceRoot":"","sources":["../../../src/types/content.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAA;AAE7D,KAAK,OAAO,GAAG;IACb,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAA;CACrD,CAAA;AAED,MAAM,MAAM,UAAU,GAAG,OAAO,GAC9B,OAAO,GAAG;IACR,WAAW,EAAE,MAAM,OAAO,CAAA;IAC1B,MAAM,EAAE,MAAM,OAAO,CAAA;CACtB,CAAA;AAEH,MAAM,MAAM,WAAW,GAAG,OAAO,GAC/B,OAAO,GAAG;IACR,WAAW,EAAE,MAAM,OAAO,CAAA;IAC1B,MAAM,EAAE,MAAM,OAAO,CAAA;CACtB,CAAA;AAEH,MAAM,MAAM,WAAW,GAAG,OAAO,GAC/B,OAAO,GAAG;IACR,WAAW,EAAE,MAAM,OAAO,CAAA;IAC1B,MAAM,EAAE,MAAM,OAAO,CAAA;CACtB,CAAA;AAEH,MAAM,MAAM,gBAAgB,GAAG,OAAO,GACpC,OAAO,GAAG;IACR,WAAW,EAAE,MAAM,OAAO,CAAA;IAC1B,MAAM,EAAE,MAAM,OAAO,CAAA;CACtB,CAAA;AAEH,MAAM,MAAM,IAAI,GAAG,OAAO,GAAG,OAAO,CAAA;AACpC,MAAM,MAAM,IAAI,GAAG,OAAO,GAAG,OAAO,CAAA;AACpC,MAAM,MAAM,KAAK,GAAG,OAAO,GAAG,OAAO,CAAA;AACrC,MAAM,MAAM,KAAK,GAAG,OAAO,GAAG,OAAO,CAAA;AACrC,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,OAAO,CAAA;AAC5C,MAAM,MAAM,UAAU,GAAG,OAAO,CAAA;AAChC,MAAM,MAAM,KAAK,GAAG,OAAO,CAAA"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * @jrmc/adonis-mcp
3
+ *
4
+ * @license MIT
5
+ * @copyright Jeremy Chaufourier <jeremy@chaufourier.fr>
6
+ */
7
+ export {};
@@ -4,25 +4,37 @@
4
4
  * @license MIT
5
5
  * @copyright Jeremy Chaufourier <jeremy@chaufourier.fr>
6
6
  */
7
- import type { ToolList, ResourceList, PromptList } from './method.js';
8
- import type { McpRequest, JsonRpcRequest } from './request.js';
9
- import type { McpResponse } from './response.js';
10
- export interface McpContext {
11
- supportedProtocolVersions: string[];
12
- serverCapabilities: Record<string, any>;
13
- serverName: string;
14
- serverVersion: string;
15
- instructions: string;
16
- maxPaginationLength: number;
17
- defaultPaginationLength: number;
18
- tools: ToolList;
19
- resources: ResourceList;
20
- prompts: PromptList;
21
- request: McpRequest;
22
- response: McpResponse;
23
- getPerPage(requestedPerPage?: number): number;
7
+ import type { JsonRpcRequest, CallToolRequest, ReadResourceRequest, GetPromptRequest, CompleteRequest } from './jsonrpc.js';
8
+ import type { McpResourceResponse, McpToolResponse, McpPromptResponse, McpCompleteResponse } from './response.js';
9
+ import type { Context } from '../server/contracts/context.js';
10
+ import type { InferJSONSchema, JSONSchema } from './method.js';
11
+ export interface McpContext extends Context {
24
12
  }
25
- export type ServerContextOptions = Omit<McpContext, 'response' | 'request' | 'getPerPage'> & {
13
+ export type ToolContext<T extends JSONSchema = JSONSchema> = Omit<McpContext, 'response' | 'requestMethod'> & {
14
+ requestMethod: 'tools/call';
15
+ request: CallToolRequest;
16
+ response: McpToolResponse;
17
+ args?: InferJSONSchema<T>;
18
+ };
19
+ export type ResourceContext<T = {}> = Omit<McpContext, 'response' | 'requestMethod'> & {
20
+ requestMethod: 'resources/read';
21
+ request: ReadResourceRequest;
22
+ response: McpResourceResponse;
23
+ args?: T;
24
+ };
25
+ export type PromptContext<T extends JSONSchema = JSONSchema> = Omit<McpContext, 'response' | 'requestMethod'> & {
26
+ requestMethod: 'prompts/get';
27
+ request: GetPromptRequest;
28
+ response: McpPromptResponse;
29
+ args?: InferJSONSchema<T>;
30
+ };
31
+ export type CompleteContext<T = {}> = Omit<McpContext, 'response' | 'requestMethod'> & {
32
+ requestMethod: 'completion/complete';
33
+ request: CompleteRequest;
34
+ response: McpCompleteResponse;
35
+ args?: T;
36
+ };
37
+ export type ServerContextOptions = Omit<McpContext, 'requestMethod' | 'response' | 'request' | 'getPerPage' | 'getResources' | 'getResourceTemplates'> & {
26
38
  jsonRpcRequest: JsonRpcRequest;
27
39
  };
28
40
  //# sourceMappingURL=context.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/types/context.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACrE,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAEhD,MAAM,WAAW,UAAU;IACzB,yBAAyB,EAAE,MAAM,EAAE,CAAA;IACnC,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACvC,UAAU,EAAE,MAAM,CAAA;IAClB,aAAa,EAAE,MAAM,CAAA;IACrB,YAAY,EAAE,MAAM,CAAA;IACpB,mBAAmB,EAAE,MAAM,CAAA;IAC3B,uBAAuB,EAAE,MAAM,CAAA;IAC/B,KAAK,EAAE,QAAQ,CAAA;IACf,SAAS,EAAE,YAAY,CAAA;IACvB,OAAO,EAAE,UAAU,CAAA;IACnB,OAAO,EAAE,UAAU,CAAA;IACnB,QAAQ,EAAE,WAAW,CAAA;IAErB,UAAU,CAAC,gBAAgB,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;CAC9C;AAED,MAAM,MAAM,oBAAoB,GAAG,IAAI,CAAC,UAAU,EAAE,UAAU,GAAG,SAAS,GAAG,YAAY,CAAC,GAAG;IAC3F,cAAc,EAAE,cAAc,CAAA;CAC/B,CAAA"}
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/types/context.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,cAAc,EACd,eAAe,EACf,mBAAmB,EACnB,gBAAgB,EAChB,eAAe,EAChB,MAAM,cAAc,CAAA;AACrB,OAAO,KAAK,EACV,mBAAmB,EACnB,eAAe,EACf,iBAAiB,EACjB,mBAAmB,EACpB,MAAM,eAAe,CAAA;AACtB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAA;AAC7D,OAAO,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAE9D,MAAM,WAAW,UAAW,SAAQ,OAAO;CAAG;AAE9C,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,UAAU,GAAG,UAAU,IAAI,IAAI,CAC/D,UAAU,EACV,UAAU,GAAG,eAAe,CAC7B,GAAG;IACF,aAAa,EAAE,YAAY,CAAA;IAC3B,OAAO,EAAE,eAAe,CAAA;IACxB,QAAQ,EAAE,eAAe,CAAA;IACzB,IAAI,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,CAAA;CAC1B,CAAA;AAED,MAAM,MAAM,eAAe,CAAC,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE,UAAU,GAAG,eAAe,CAAC,GAAG;IACrF,aAAa,EAAE,gBAAgB,CAAA;IAC/B,OAAO,EAAE,mBAAmB,CAAA;IAC5B,QAAQ,EAAE,mBAAmB,CAAA;IAC7B,IAAI,CAAC,EAAE,CAAC,CAAA;CACT,CAAA;AAED,MAAM,MAAM,aAAa,CAAC,CAAC,SAAS,UAAU,GAAG,UAAU,IAAI,IAAI,CACjE,UAAU,EACV,UAAU,GAAG,eAAe,CAC7B,GAAG;IACF,aAAa,EAAE,aAAa,CAAA;IAC5B,OAAO,EAAE,gBAAgB,CAAA;IACzB,QAAQ,EAAE,iBAAiB,CAAA;IAC3B,IAAI,CAAC,EAAE,eAAe,CAAC,CAAC,CAAC,CAAA;CAC1B,CAAA;AAED,MAAM,MAAM,eAAe,CAAC,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE,UAAU,GAAG,eAAe,CAAC,GAAG;IACrF,aAAa,EAAE,qBAAqB,CAAA;IACpC,OAAO,EAAE,eAAe,CAAA;IACxB,QAAQ,EAAE,mBAAmB,CAAA;IAC7B,IAAI,CAAC,EAAE,CAAC,CAAA;CACT,CAAA;AAED,MAAM,MAAM,oBAAoB,GAAG,IAAI,CACrC,UAAU,EACV,eAAe,GAAG,UAAU,GAAG,SAAS,GAAG,YAAY,GAAG,cAAc,GAAG,sBAAsB,CAClG,GAAG;IACF,cAAc,EAAE,cAAc,CAAA;CAC/B,CAAA"}