@rudderjs/mcp 0.0.1 → 1.0.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 (75) hide show
  1. package/README.md +68 -0
  2. package/dist/Mcp.d.ts +21 -5
  3. package/dist/Mcp.d.ts.map +1 -1
  4. package/dist/Mcp.js +13 -1
  5. package/dist/Mcp.js.map +1 -1
  6. package/dist/McpPrompt.d.ts +8 -5
  7. package/dist/McpPrompt.d.ts.map +1 -1
  8. package/dist/McpPrompt.js.map +1 -1
  9. package/dist/McpResource.d.ts +9 -3
  10. package/dist/McpResource.d.ts.map +1 -1
  11. package/dist/McpResource.js +4 -0
  12. package/dist/McpResource.js.map +1 -1
  13. package/dist/McpTool.d.ts +17 -5
  14. package/dist/McpTool.d.ts.map +1 -1
  15. package/dist/McpTool.js.map +1 -1
  16. package/dist/auth/oauth2.d.ts +25 -0
  17. package/dist/auth/oauth2.d.ts.map +1 -0
  18. package/dist/auth/oauth2.js +128 -0
  19. package/dist/auth/oauth2.js.map +1 -0
  20. package/dist/commands/inspector-ui.d.ts +2 -0
  21. package/dist/commands/inspector-ui.d.ts.map +1 -0
  22. package/dist/commands/inspector-ui.js +300 -0
  23. package/dist/commands/inspector-ui.js.map +1 -0
  24. package/dist/commands/inspector.d.ts +5 -0
  25. package/dist/commands/inspector.d.ts.map +1 -0
  26. package/dist/commands/inspector.js +226 -0
  27. package/dist/commands/inspector.js.map +1 -0
  28. package/dist/commands/make-mcp-prompt.d.ts +3 -0
  29. package/dist/commands/make-mcp-prompt.d.ts.map +1 -0
  30. package/dist/commands/make-mcp-prompt.js +27 -0
  31. package/dist/commands/make-mcp-prompt.js.map +1 -0
  32. package/dist/commands/make-mcp-resource.d.ts +3 -0
  33. package/dist/commands/make-mcp-resource.d.ts.map +1 -0
  34. package/dist/commands/make-mcp-resource.js +26 -0
  35. package/dist/commands/make-mcp-resource.js.map +1 -0
  36. package/dist/commands/make-mcp-server.d.ts +3 -0
  37. package/dist/commands/make-mcp-server.d.ts.map +1 -0
  38. package/dist/commands/make-mcp-server.js +28 -0
  39. package/dist/commands/make-mcp-server.js.map +1 -0
  40. package/dist/commands/make-mcp-tool.d.ts +3 -0
  41. package/dist/commands/make-mcp-tool.d.ts.map +1 -0
  42. package/dist/commands/make-mcp-tool.js +25 -0
  43. package/dist/commands/make-mcp-tool.js.map +1 -0
  44. package/dist/decorators.d.ts +17 -0
  45. package/dist/decorators.d.ts.map +1 -1
  46. package/dist/decorators.js +22 -0
  47. package/dist/decorators.js.map +1 -1
  48. package/dist/index.d.ts +9 -3
  49. package/dist/index.d.ts.map +1 -1
  50. package/dist/index.js +4 -3
  51. package/dist/index.js.map +1 -1
  52. package/dist/observers.d.ts +32 -0
  53. package/dist/observers.d.ts.map +1 -0
  54. package/dist/observers.js +31 -0
  55. package/dist/observers.js.map +1 -0
  56. package/dist/provider.d.ts +4 -2
  57. package/dist/provider.d.ts.map +1 -1
  58. package/dist/provider.js +78 -40
  59. package/dist/provider.js.map +1 -1
  60. package/dist/runtime.d.ts +30 -0
  61. package/dist/runtime.d.ts.map +1 -1
  62. package/dist/runtime.js +267 -24
  63. package/dist/runtime.js.map +1 -1
  64. package/dist/testing.d.ts.map +1 -1
  65. package/dist/testing.js +3 -1
  66. package/dist/testing.js.map +1 -1
  67. package/dist/types.d.ts +11 -0
  68. package/dist/types.d.ts.map +1 -0
  69. package/dist/types.js +2 -0
  70. package/dist/types.js.map +1 -0
  71. package/dist/zod-to-json-schema.d.ts +4 -3
  72. package/dist/zod-to-json-schema.d.ts.map +1 -1
  73. package/dist/zod-to-json-schema.js +54 -24
  74. package/dist/zod-to-json-schema.js.map +1 -1
  75. package/package.json +41 -3
@@ -0,0 +1,28 @@
1
+ export const makeMcpServerSpec = {
2
+ command: 'make:mcp-server',
3
+ description: 'Create a new MCP server class',
4
+ label: 'MCP server created',
5
+ suffix: 'Server',
6
+ directory: 'app/Mcp/Servers',
7
+ stub: (className) => `import { McpServer } from '@rudderjs/mcp'
8
+ import { Name, Version, Instructions } from '@rudderjs/mcp'
9
+
10
+ @Name('${className.replace(/Server$/, '')} Server')
11
+ @Version('1.0.0')
12
+ @Instructions('Provide a description of this MCP server.')
13
+ export class ${className} extends McpServer {
14
+ protected tools = [
15
+ // Add your tool classes here
16
+ ]
17
+
18
+ protected resources = [
19
+ // Add your resource classes here
20
+ ]
21
+
22
+ protected prompts = [
23
+ // Add your prompt classes here
24
+ ]
25
+ }
26
+ `,
27
+ };
28
+ //# sourceMappingURL=make-mcp-server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"make-mcp-server.js","sourceRoot":"","sources":["../../src/commands/make-mcp-server.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,iBAAiB,GAAa;IACzC,OAAO,EAAM,iBAAiB;IAC9B,WAAW,EAAE,+BAA+B;IAC5C,KAAK,EAAQ,oBAAoB;IACjC,MAAM,EAAO,QAAQ;IACrB,SAAS,EAAI,iBAAiB;IAC9B,IAAI,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC;;;SAGd,SAAS,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC;;;eAG1B,SAAS;;;;;;;;;;;;;CAavB;CACA,CAAA"}
@@ -0,0 +1,3 @@
1
+ import type { MakeSpec } from '@rudderjs/rudder';
2
+ export declare const makeMcpToolSpec: MakeSpec;
3
+ //# sourceMappingURL=make-mcp-tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"make-mcp-tool.d.ts","sourceRoot":"","sources":["../../src/commands/make-mcp-tool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAEhD,eAAO,MAAM,eAAe,EAAE,QAuB7B,CAAA"}
@@ -0,0 +1,25 @@
1
+ export const makeMcpToolSpec = {
2
+ command: 'make:mcp-tool',
3
+ description: 'Create a new MCP tool class',
4
+ label: 'MCP tool created',
5
+ suffix: 'Tool',
6
+ directory: 'app/Mcp/Tools',
7
+ stub: (className) => `import { McpTool, McpResponse, Description } from '@rudderjs/mcp'
8
+ import { z } from 'zod'
9
+
10
+ @Description('Describe what this tool does.')
11
+ export class ${className} extends McpTool {
12
+ schema() {
13
+ return z.object({
14
+ // Define your input parameters here
15
+ })
16
+ }
17
+
18
+ async handle(input: Record<string, unknown>) {
19
+ // Implement your tool logic here
20
+ return McpResponse.text('Hello from ${className.replace(/Tool$/, '')}')
21
+ }
22
+ }
23
+ `,
24
+ };
25
+ //# sourceMappingURL=make-mcp-tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"make-mcp-tool.js","sourceRoot":"","sources":["../../src/commands/make-mcp-tool.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,eAAe,GAAa;IACvC,OAAO,EAAM,eAAe;IAC5B,WAAW,EAAE,6BAA6B;IAC1C,KAAK,EAAQ,kBAAkB;IAC/B,MAAM,EAAO,MAAM;IACnB,SAAS,EAAI,eAAe;IAC5B,IAAI,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC;;;;eAIR,SAAS;;;;;;;;;0CASkB,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;;;CAGvE;CACA,CAAA"}
@@ -9,4 +9,21 @@ export declare function getServerMetadata(target: Function): {
9
9
  instructions: string | undefined;
10
10
  };
11
11
  export declare function getDescription(target: Function): string | undefined;
12
+ type InjectToken = (new (...args: any[]) => unknown) | string | symbol;
13
+ /**
14
+ * Marks a method (typically `handle`) as wanting DI-resolved parameters beyond
15
+ * the first one. Pass the tokens explicitly — one per extra parameter:
16
+ *
17
+ * ```ts
18
+ * @Handle(GreetingService, Logger)
19
+ * async handle(input, greeter: GreetingService, logger: Logger) { ... }
20
+ * ```
21
+ *
22
+ * If called with no arguments, the runtime falls back to `design:paramtypes`
23
+ * metadata (which requires `emitDecoratorMetadata: true` AND a build tool that
24
+ * honours it — plain `tsc` does, but esbuild/Vite typically do not).
25
+ */
26
+ export declare function Handle(...tokens: InjectToken[]): MethodDecorator;
27
+ export declare function getInjectTokens(target: object, propertyKey: string | symbol): InjectToken[] | undefined;
28
+ export type { InjectToken };
12
29
  //# sourceMappingURL=decorators.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"decorators.d.ts","sourceRoot":"","sources":["../src/decorators.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAA;AAOzB,wBAAgB,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,CAEjD;AAED,wBAAgB,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc,CAEvD;AAED,wBAAgB,YAAY,CAAC,YAAY,EAAE,MAAM,GAAG,cAAc,CAEjE;AAED,wBAAgB,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,cAAc,CAE/D;AAGD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,QAAQ,GAAG;IAAE,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAAC,YAAY,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,CAM/I;AAGD,wBAAgB,cAAc,CAAC,MAAM,EAAE,QAAQ,GAAG,MAAM,GAAG,SAAS,CAEnE"}
1
+ {"version":3,"file":"decorators.d.ts","sourceRoot":"","sources":["../src/decorators.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAA;AAQzB,wBAAgB,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,CAEjD;AAED,wBAAgB,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc,CAEvD;AAED,wBAAgB,YAAY,CAAC,YAAY,EAAE,MAAM,GAAG,cAAc,CAEjE;AAED,wBAAgB,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,cAAc,CAE/D;AAGD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,QAAQ,GAAG;IAAE,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAAC,YAAY,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,CAM/I;AAGD,wBAAgB,cAAc,CAAC,MAAM,EAAE,QAAQ,GAAG,MAAM,GAAG,SAAS,CAEnE;AAGD,KAAK,WAAW,GAAG,CAAC,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,GAAG,MAAM,GAAG,MAAM,CAAA;AAEtE;;;;;;;;;;;;GAYG;AACH,wBAAgB,MAAM,CAAC,GAAG,MAAM,EAAE,WAAW,EAAE,GAAG,eAAe,CAIhE;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,WAAW,EAAE,GAAG,SAAS,CAEvG;AAED,YAAY,EAAE,WAAW,EAAE,CAAA"}
@@ -3,6 +3,7 @@ const NAME_KEY = Symbol('mcp:name');
3
3
  const VERSION_KEY = Symbol('mcp:version');
4
4
  const INSTRUCTIONS_KEY = Symbol('mcp:instructions');
5
5
  const DESCRIPTION_KEY = Symbol('mcp:description');
6
+ const INJECT_KEY = Symbol('mcp:inject');
6
7
  export function Name(name) {
7
8
  return (target) => { Reflect.defineMetadata(NAME_KEY, name, target); };
8
9
  }
@@ -27,4 +28,25 @@ export function getServerMetadata(target) {
27
28
  export function getDescription(target) {
28
29
  return Reflect.getMetadata(DESCRIPTION_KEY, target);
29
30
  }
31
+ /**
32
+ * Marks a method (typically `handle`) as wanting DI-resolved parameters beyond
33
+ * the first one. Pass the tokens explicitly — one per extra parameter:
34
+ *
35
+ * ```ts
36
+ * @Handle(GreetingService, Logger)
37
+ * async handle(input, greeter: GreetingService, logger: Logger) { ... }
38
+ * ```
39
+ *
40
+ * If called with no arguments, the runtime falls back to `design:paramtypes`
41
+ * metadata (which requires `emitDecoratorMetadata: true` AND a build tool that
42
+ * honours it — plain `tsc` does, but esbuild/Vite typically do not).
43
+ */
44
+ export function Handle(...tokens) {
45
+ return (target, propertyKey) => {
46
+ Reflect.defineMetadata(INJECT_KEY, tokens, target, propertyKey);
47
+ };
48
+ }
49
+ export function getInjectTokens(target, propertyKey) {
50
+ return Reflect.getMetadata(INJECT_KEY, target, propertyKey);
51
+ }
30
52
  //# sourceMappingURL=decorators.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"decorators.js","sourceRoot":"","sources":["../src/decorators.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAA;AAEzB,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,CAAA;AACnC,MAAM,WAAW,GAAG,MAAM,CAAC,aAAa,CAAC,CAAA;AACzC,MAAM,gBAAgB,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAA;AACnD,MAAM,eAAe,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAA;AAEjD,MAAM,UAAU,IAAI,CAAC,IAAY;IAC/B,OAAO,CAAC,MAAM,EAAE,EAAE,GAAG,OAAO,CAAC,cAAc,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,CAAA,CAAC,CAAC,CAAA;AACvE,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,OAAe;IACrC,OAAO,CAAC,MAAM,EAAE,EAAE,GAAG,OAAO,CAAC,cAAc,CAAC,WAAW,EAAE,OAAO,EAAE,MAAM,CAAC,CAAA,CAAC,CAAC,CAAA;AAC7E,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,YAAoB;IAC/C,OAAO,CAAC,MAAM,EAAE,EAAE,GAAG,OAAO,CAAC,cAAc,CAAC,gBAAgB,EAAE,YAAY,EAAE,MAAM,CAAC,CAAA,CAAC,CAAC,CAAA;AACvF,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,WAAmB;IAC7C,OAAO,CAAC,MAAM,EAAE,EAAE,GAAG,OAAO,CAAC,cAAc,CAAC,eAAe,EAAE,WAAW,EAAE,MAAM,CAAC,CAAA,CAAC,CAAC,CAAA;AACrF,CAAC;AAED,sEAAsE;AACtE,MAAM,UAAU,iBAAiB,CAAC,MAAgB;IAChD,OAAO;QACL,IAAI,EAAE,OAAO,CAAC,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAuB;QACjE,OAAO,EAAE,OAAO,CAAC,WAAW,CAAC,WAAW,EAAE,MAAM,CAAuB;QACvE,YAAY,EAAE,OAAO,CAAC,WAAW,CAAC,gBAAgB,EAAE,MAAM,CAAuB;KAClF,CAAA;AACH,CAAC;AAED,sEAAsE;AACtE,MAAM,UAAU,cAAc,CAAC,MAAgB;IAC7C,OAAO,OAAO,CAAC,WAAW,CAAC,eAAe,EAAE,MAAM,CAAuB,CAAA;AAC3E,CAAC"}
1
+ {"version":3,"file":"decorators.js","sourceRoot":"","sources":["../src/decorators.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAA;AAEzB,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,CAAA;AACnC,MAAM,WAAW,GAAG,MAAM,CAAC,aAAa,CAAC,CAAA;AACzC,MAAM,gBAAgB,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAA;AACnD,MAAM,eAAe,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAA;AACjD,MAAM,UAAU,GAAG,MAAM,CAAC,YAAY,CAAC,CAAA;AAEvC,MAAM,UAAU,IAAI,CAAC,IAAY;IAC/B,OAAO,CAAC,MAAM,EAAE,EAAE,GAAG,OAAO,CAAC,cAAc,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,CAAA,CAAC,CAAC,CAAA;AACvE,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,OAAe;IACrC,OAAO,CAAC,MAAM,EAAE,EAAE,GAAG,OAAO,CAAC,cAAc,CAAC,WAAW,EAAE,OAAO,EAAE,MAAM,CAAC,CAAA,CAAC,CAAC,CAAA;AAC7E,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,YAAoB;IAC/C,OAAO,CAAC,MAAM,EAAE,EAAE,GAAG,OAAO,CAAC,cAAc,CAAC,gBAAgB,EAAE,YAAY,EAAE,MAAM,CAAC,CAAA,CAAC,CAAC,CAAA;AACvF,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,WAAmB;IAC7C,OAAO,CAAC,MAAM,EAAE,EAAE,GAAG,OAAO,CAAC,cAAc,CAAC,eAAe,EAAE,WAAW,EAAE,MAAM,CAAC,CAAA,CAAC,CAAC,CAAA;AACrF,CAAC;AAED,sEAAsE;AACtE,MAAM,UAAU,iBAAiB,CAAC,MAAgB;IAChD,OAAO;QACL,IAAI,EAAE,OAAO,CAAC,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAuB;QACjE,OAAO,EAAE,OAAO,CAAC,WAAW,CAAC,WAAW,EAAE,MAAM,CAAuB;QACvE,YAAY,EAAE,OAAO,CAAC,WAAW,CAAC,gBAAgB,EAAE,MAAM,CAAuB;KAClF,CAAA;AACH,CAAC;AAED,sEAAsE;AACtE,MAAM,UAAU,cAAc,CAAC,MAAgB;IAC7C,OAAO,OAAO,CAAC,WAAW,CAAC,eAAe,EAAE,MAAM,CAAuB,CAAA;AAC3E,CAAC;AAKD;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,MAAM,CAAC,GAAG,MAAqB;IAC7C,OAAO,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE;QAC7B,OAAO,CAAC,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,CAAA;IACjE,CAAC,CAAA;AACH,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,MAAc,EAAE,WAA4B;IAC1E,OAAO,OAAO,CAAC,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,CAA8B,CAAA;AAC1F,CAAC"}
package/dist/index.d.ts CHANGED
@@ -7,8 +7,14 @@ export { McpPrompt } from './McpPrompt.js';
7
7
  export type { McpPromptMessage } from './McpPrompt.js';
8
8
  export { McpResponse } from './McpResponse.js';
9
9
  export { Mcp } from './Mcp.js';
10
- export { Name, Version, Instructions, Description } from './decorators.js';
11
- export { createSdkServer, startStdio } from './runtime.js';
12
- export { mcp } from './provider.js';
10
+ export type { McpWebEntry, McpWebBuilder } from './Mcp.js';
11
+ export { Name, Version, Instructions, Description, Handle } from './decorators.js';
12
+ export type { InjectToken } from './decorators.js';
13
+ export { createSdkServer, startStdio, mountHttpTransport } from './runtime.js';
14
+ export type { HttpTransportOptions } from './runtime.js';
15
+ export { oauth2McpMiddleware, registerOAuth2Metadata } from './auth/oauth2.js';
16
+ export type { OAuth2McpOptions } from './auth/oauth2.js';
17
+ export { McpProvider } from './provider.js';
13
18
  export { McpTestClient } from './testing.js';
19
+ export type { McpObserverEvent, McpObserver, McpObserverRegistry } from './observers.js';
14
20
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,YAAY,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,YAAY,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,YAAY,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAA;AAC9B,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAC1E,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAC1D,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAA;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,YAAY,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,YAAY,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,YAAY,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAA;AAC9B,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAC1D,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AAClF,YAAY,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAClD,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AAC9E,YAAY,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAA;AACxD,OAAO,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAA;AAC9E,YAAY,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAC5C,YAAY,EAAE,gBAAgB,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAA"}
package/dist/index.js CHANGED
@@ -4,8 +4,9 @@ export { McpResource } from './McpResource.js';
4
4
  export { McpPrompt } from './McpPrompt.js';
5
5
  export { McpResponse } from './McpResponse.js';
6
6
  export { Mcp } from './Mcp.js';
7
- export { Name, Version, Instructions, Description } from './decorators.js';
8
- export { createSdkServer, startStdio } from './runtime.js';
9
- export { mcp } from './provider.js';
7
+ export { Name, Version, Instructions, Description, Handle } from './decorators.js';
8
+ export { createSdkServer, startStdio, mountHttpTransport } from './runtime.js';
9
+ export { oauth2McpMiddleware, registerOAuth2Metadata } from './auth/oauth2.js';
10
+ export { McpProvider } from './provider.js';
10
11
  export { McpTestClient } from './testing.js';
11
12
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAE1C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAEtC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAE1C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAA;AAC9B,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAC1E,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAC1D,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAA;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAE1C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAEtC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAE1C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAA;AAE9B,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AAElF,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AAE9E,OAAO,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAA;AAE9E,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * MCP observer registry — Telescope and other collectors subscribe here to
3
+ * receive structured events when tools, resources, and prompts are invoked.
4
+ *
5
+ * Same architecture as `@rudderjs/ai/observers`: a singleton stored on
6
+ * `globalThis` so state survives Vite SSR module re-evaluation, and a
7
+ * try/catch around dispatch so an observer error never breaks an MCP
8
+ * server.
9
+ */
10
+ export interface McpObserverEvent {
11
+ kind: 'tool.called' | 'tool.failed' | 'resource.read' | 'resource.failed' | 'prompt.rendered' | 'prompt.failed';
12
+ serverName: string;
13
+ /** Tool name, resource URI, or prompt name */
14
+ name: string;
15
+ /** Tool args, resource URI params, or prompt args */
16
+ input: unknown;
17
+ /** Tool result, resource content, or prompt messages (null on failure) */
18
+ output: unknown;
19
+ /** Wall-clock duration in ms */
20
+ duration: number;
21
+ /** Present on `*.failed` events */
22
+ error?: string;
23
+ }
24
+ export type McpObserver = (event: McpObserverEvent) => void;
25
+ export declare class McpObserverRegistry {
26
+ private observers;
27
+ subscribe(fn: McpObserver): () => void;
28
+ emit(event: McpObserverEvent): void;
29
+ reset(): void;
30
+ }
31
+ export declare const mcpObservers: McpObserverRegistry;
32
+ //# sourceMappingURL=observers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"observers.d.ts","sourceRoot":"","sources":["../src/observers.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EACA,aAAa,GAAG,aAAa,GAC7B,eAAe,GAAG,iBAAiB,GACnC,iBAAiB,GAAG,eAAe,CAAA;IACvC,UAAU,EAAE,MAAM,CAAA;IAClB,8CAA8C;IAC9C,IAAI,EAAQ,MAAM,CAAA;IAClB,qDAAqD;IACrD,KAAK,EAAO,OAAO,CAAA;IACnB,0EAA0E;IAC1E,MAAM,EAAM,OAAO,CAAA;IACnB,gCAAgC;IAChC,QAAQ,EAAI,MAAM,CAAA;IAClB,mCAAmC;IACnC,KAAK,CAAC,EAAM,MAAM,CAAA;CACnB;AAED,MAAM,MAAM,WAAW,GAAG,CAAC,KAAK,EAAE,gBAAgB,KAAK,IAAI,CAAA;AAE3D,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,SAAS,CAAoB;IAErC,SAAS,CAAC,EAAE,EAAE,WAAW,GAAG,MAAM,IAAI;IAKtC,IAAI,CAAC,KAAK,EAAE,gBAAgB,GAAG,IAAI;IAMnC,KAAK,IAAI,IAAI;CACd;AAMD,eAAO,MAAM,YAAY,EAAuC,mBAAmB,CAAA"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * MCP observer registry — Telescope and other collectors subscribe here to
3
+ * receive structured events when tools, resources, and prompts are invoked.
4
+ *
5
+ * Same architecture as `@rudderjs/ai/observers`: a singleton stored on
6
+ * `globalThis` so state survives Vite SSR module re-evaluation, and a
7
+ * try/catch around dispatch so an observer error never breaks an MCP
8
+ * server.
9
+ */
10
+ export class McpObserverRegistry {
11
+ observers = [];
12
+ subscribe(fn) {
13
+ this.observers.push(fn);
14
+ return () => { this.observers = this.observers.filter((o) => o !== fn); };
15
+ }
16
+ emit(event) {
17
+ for (const observer of this.observers) {
18
+ try {
19
+ observer(event);
20
+ }
21
+ catch { /* observer errors must not break MCP servers */ }
22
+ }
23
+ }
24
+ reset() { this.observers = []; }
25
+ }
26
+ const _g = globalThis;
27
+ if (!_g['__rudderjs_mcp_observers__']) {
28
+ _g['__rudderjs_mcp_observers__'] = new McpObserverRegistry();
29
+ }
30
+ export const mcpObservers = _g['__rudderjs_mcp_observers__'];
31
+ //# sourceMappingURL=observers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"observers.js","sourceRoot":"","sources":["../src/observers.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAsBH,MAAM,OAAO,mBAAmB;IACtB,SAAS,GAAkB,EAAE,CAAA;IAErC,SAAS,CAAC,EAAe;QACvB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QACvB,OAAO,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAA,CAAC,CAAC,CAAA;IAC1E,CAAC;IAED,IAAI,CAAC,KAAuB;QAC1B,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACtC,IAAI,CAAC;gBAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,gDAAgD,CAAC,CAAC;QACpF,CAAC;IACH,CAAC;IAED,KAAK,KAAW,IAAI,CAAC,SAAS,GAAG,EAAE,CAAA,CAAC,CAAC;CACtC;AAED,MAAM,EAAE,GAAG,UAAqC,CAAA;AAChD,IAAI,CAAC,EAAE,CAAC,4BAA4B,CAAC,EAAE,CAAC;IACtC,EAAE,CAAC,4BAA4B,CAAC,GAAG,IAAI,mBAAmB,EAAE,CAAA;AAC9D,CAAC;AACD,MAAM,CAAC,MAAM,YAAY,GAAG,EAAE,CAAC,4BAA4B,CAAwB,CAAA"}
@@ -1,4 +1,6 @@
1
- import type { Application } from '@rudderjs/core';
2
1
  import { ServiceProvider } from '@rudderjs/core';
3
- export declare function mcp(): new (app: Application) => ServiceProvider;
2
+ export declare class McpProvider extends ServiceProvider {
3
+ register(): void;
4
+ boot(): Promise<void>;
5
+ }
4
6
  //# sourceMappingURL=provider.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAGhD,wBAAgB,GAAG,IAAI,KAAK,GAAG,EAAE,WAAW,KAAK,eAAe,CAoD/D"}
1
+ {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAGhD,qBAAa,WAAY,SAAQ,eAAe;IAC9C,QAAQ,IAAI,IAAI;IAIV,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CA4F5B"}
package/dist/provider.js CHANGED
@@ -1,51 +1,89 @@
1
1
  import { ServiceProvider } from '@rudderjs/core';
2
2
  import { Mcp } from './Mcp.js';
3
- export function mcp() {
4
- class McpServiceProvider extends ServiceProvider {
5
- register() {
6
- this.app.instance('mcp', Mcp);
7
- }
8
- async boot() {
3
+ export class McpProvider extends ServiceProvider {
4
+ register() {
5
+ this.app.instance('mcp', Mcp);
6
+ }
7
+ async boot() {
8
+ const webServers = Mcp.getWebServers();
9
+ if (webServers.size > 0) {
9
10
  try {
10
- const { rudder } = await import('@rudderjs/core');
11
- // mcp:start <name> start a local server via stdio
12
- rudder.command('mcp:start', async (args) => {
13
- const name = args[0];
14
- const ServerClass = name != null ? Mcp.getLocalServers().get(name) : undefined;
15
- if (!ServerClass) {
16
- console.error(`MCP server "${name}" not found. Available: ${[...Mcp.getLocalServers().keys()].join(', ')}`);
17
- process.exit(1);
18
- }
19
- const { startStdio } = await import('./runtime.js');
20
- await startStdio(new ServerClass());
21
- }).description('Start an MCP server (stdio)');
22
- // mcp:list — list all registered servers
23
- rudder.command('mcp:list', () => {
24
- const web = [...Mcp.getWebServers().entries()];
25
- const local = [...Mcp.getLocalServers().entries()];
26
- if (web.length === 0 && local.length === 0) {
27
- console.log('No MCP servers registered.');
28
- return;
29
- }
30
- if (web.length > 0) {
31
- console.log('\nWeb Servers:');
32
- for (const [path, { server }] of web) {
33
- console.log(` ${path} -> ${server.name}`);
34
- }
35
- }
36
- if (local.length > 0) {
37
- console.log('\nLocal Servers:');
38
- for (const [serverName, server] of local) {
39
- console.log(` ${serverName} -> ${server.name}`);
40
- }
11
+ const { mountHttpTransport } = await import('./runtime.js');
12
+ const { oauth2McpMiddleware, registerOAuth2Metadata } = await import('./auth/oauth2.js');
13
+ let router;
14
+ try {
15
+ const { resolveOptionalPeer } = await import('@rudderjs/core');
16
+ const mod = await resolveOptionalPeer('@rudderjs/router');
17
+ router = mod.router;
18
+ }
19
+ catch { /* no router */ }
20
+ for (const [path, entry] of webServers) {
21
+ const server = new entry.server();
22
+ const middleware = [...entry.middleware];
23
+ if (entry.oauth2) {
24
+ middleware.unshift(oauth2McpMiddleware(path, entry.oauth2));
25
+ if (router)
26
+ registerOAuth2Metadata(router, path, entry.oauth2);
41
27
  }
42
- }).description('List registered MCP servers');
28
+ await mountHttpTransport(server, path, { middleware });
29
+ }
43
30
  }
44
31
  catch {
45
- // rudder not available
32
+ // router or transport not available — skip web mounting
46
33
  }
47
34
  }
35
+ try {
36
+ const { resolveOptionalPeer } = await import('@rudderjs/core');
37
+ const { registerMakeSpecs } = await resolveOptionalPeer('@rudderjs/rudder');
38
+ const { makeMcpServerSpec } = await import('./commands/make-mcp-server.js');
39
+ const { makeMcpToolSpec } = await import('./commands/make-mcp-tool.js');
40
+ const { makeMcpResourceSpec } = await import('./commands/make-mcp-resource.js');
41
+ const { makeMcpPromptSpec } = await import('./commands/make-mcp-prompt.js');
42
+ registerMakeSpecs(makeMcpServerSpec, makeMcpToolSpec, makeMcpResourceSpec, makeMcpPromptSpec);
43
+ }
44
+ catch { /* rudder not available */ }
45
+ try {
46
+ const { rudder } = await import('@rudderjs/core');
47
+ rudder.command('mcp:start', async (args) => {
48
+ const name = args[0];
49
+ const ServerClass = name != null ? Mcp.getLocalServers().get(name) : undefined;
50
+ if (!ServerClass) {
51
+ console.error(`MCP server "${name}" not found. Available: ${[...Mcp.getLocalServers().keys()].join(', ')}`);
52
+ process.exit(1);
53
+ }
54
+ const { startStdio } = await import('./runtime.js');
55
+ await startStdio(new ServerClass());
56
+ }).description('Start an MCP server (stdio)');
57
+ rudder.command('mcp:list', () => {
58
+ const web = [...Mcp.getWebServers().entries()];
59
+ const local = [...Mcp.getLocalServers().entries()];
60
+ if (web.length === 0 && local.length === 0) {
61
+ console.log('No MCP servers registered.');
62
+ return;
63
+ }
64
+ if (web.length > 0) {
65
+ console.log('\nWeb Servers:');
66
+ for (const [path, { server }] of web) {
67
+ console.log(` ${path} -> ${server.name}`);
68
+ }
69
+ }
70
+ if (local.length > 0) {
71
+ console.log('\nLocal Servers:');
72
+ for (const [serverName, server] of local) {
73
+ console.log(` ${serverName} -> ${server.name}`);
74
+ }
75
+ }
76
+ }).description('List registered MCP servers');
77
+ rudder.command('mcp:inspector', async (args) => {
78
+ const portIdx = args.indexOf('--port');
79
+ const port = portIdx >= 0 && args[portIdx + 1] ? Number.parseInt(args[portIdx + 1], 10) : 9100;
80
+ const { startInspector } = await import('./commands/inspector.js');
81
+ await startInspector({ port });
82
+ }).description('Launch a web UI for interactively testing registered MCP servers');
83
+ }
84
+ catch {
85
+ // rudder not available
86
+ }
48
87
  }
49
- return McpServiceProvider;
50
88
  }
51
89
  //# sourceMappingURL=provider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"provider.js","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAChD,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAA;AAE9B,MAAM,UAAU,GAAG;IACjB,MAAM,kBAAmB,SAAQ,eAAe;QAC9C,QAAQ;YACN,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;QAC/B,CAAC;QAED,KAAK,CAAC,IAAI;YACR,IAAI,CAAC;gBACH,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,CAAA;gBAEjD,oDAAoD;gBACpD,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,EAAE,IAAc,EAAE,EAAE;oBACnD,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;oBACpB,MAAM,WAAW,GAAG,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;oBAC9E,IAAI,CAAC,WAAW,EAAE,CAAC;wBACjB,OAAO,CAAC,KAAK,CAAC,eAAe,IAAI,2BAA2B,CAAC,GAAG,GAAG,CAAC,eAAe,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;wBAC3G,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;oBACjB,CAAC;oBACD,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,CAAA;oBACnD,MAAM,UAAU,CAAC,IAAI,WAAW,EAAE,CAAC,CAAA;gBACrC,CAAC,CAAC,CAAC,WAAW,CAAC,6BAA6B,CAAC,CAAA;gBAE7C,yCAAyC;gBACzC,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE,GAAG,EAAE;oBAC9B,MAAM,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,aAAa,EAAE,CAAC,OAAO,EAAE,CAAC,CAAA;oBAC9C,MAAM,KAAK,GAAG,CAAC,GAAG,GAAG,CAAC,eAAe,EAAE,CAAC,OAAO,EAAE,CAAC,CAAA;oBAElD,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;wBAC3C,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAA;wBACzC,OAAM;oBACR,CAAC;oBAED,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBACnB,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAA;wBAC7B,KAAK,MAAM,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC;4BACrC,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC,CAAA;wBAC5C,CAAC;oBACH,CAAC;oBAED,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBACrB,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAA;wBAC/B,KAAK,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;4BACzC,OAAO,CAAC,GAAG,CAAC,KAAK,UAAU,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC,CAAA;wBAClD,CAAC;oBACH,CAAC;gBACH,CAAC,CAAC,CAAC,WAAW,CAAC,6BAA6B,CAAC,CAAA;YAC/C,CAAC;YAAC,MAAM,CAAC;gBACP,uBAAuB;YACzB,CAAC;QACH,CAAC;KACF;IACD,OAAO,kBAAkB,CAAA;AAC3B,CAAC"}
1
+ {"version":3,"file":"provider.js","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"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"}
package/dist/runtime.d.ts CHANGED
@@ -1,6 +1,36 @@
1
1
  import { Server } from '@modelcontextprotocol/sdk/server/index.js';
2
2
  import type { McpServer } from './McpServer.js';
3
+ /**
4
+ * Read `design:paramtypes` for the given method and resolve all parameters
5
+ * beyond index 0 from the DI container. Index 0 is reserved for the tool
6
+ * input (or resource params / prompt arguments).
7
+ *
8
+ * Returns an empty array if:
9
+ * - the method wasn't decorated (no metadata emitted by TS)
10
+ * - the framework container isn't available
11
+ * - no extra parameters were declared
12
+ */
13
+ export declare function resolveHandleDeps(instance: object, propertyKey: string): unknown[];
3
14
  export declare function createSdkServer(server: McpServer): Server;
4
15
  /** Start a server with stdio transport */
5
16
  export declare function startStdio(server: McpServer): Promise<void>;
17
+ export interface HttpTransportOptions {
18
+ /** Middleware to apply before MCP request handling */
19
+ middleware?: unknown[];
20
+ /** Generate session IDs for stateful mode. Set to undefined for stateless. */
21
+ sessionIdGenerator?: (() => string) | undefined;
22
+ }
23
+ /**
24
+ * Mount an MCP server on the framework's router at the given path.
25
+ *
26
+ * Uses the MCP SDK's `WebStandardStreamableHTTPServerTransport` which
27
+ * accepts Web Standard `Request` objects and returns `Response` — a
28
+ * natural fit for Hono (the framework's server adapter).
29
+ *
30
+ * The transport handles all three HTTP methods:
31
+ * - POST — JSON-RPC messages (initialization + ongoing)
32
+ * - GET — SSE stream for server-initiated notifications
33
+ * - DELETE — session termination
34
+ */
35
+ export declare function mountHttpTransport(server: McpServer, path: string, options?: HttpTransportOptions): Promise<void>;
6
36
  //# sourceMappingURL=runtime.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAA;AAUlE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAU/C,wBAAgB,eAAe,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM,CAgFzD;AAED,0CAA0C;AAC1C,wBAAsB,UAAU,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAIjE"}
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAA;AAWlE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAwE/C;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,EAAE,CAmClF;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM,CA6JzD;AAED,0CAA0C;AAC1C,wBAAsB,UAAU,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAIjE;AAID,MAAM,WAAW,oBAAoB;IACnC,sDAAsD;IACtD,UAAU,CAAC,EAAE,OAAO,EAAE,CAAA;IACtB,8EAA8E;IAC9E,kBAAkB,CAAC,EAAE,CAAC,MAAM,MAAM,CAAC,GAAG,SAAS,CAAA;CAChD;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,SAAS,EACjB,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,oBAAoB,GAC7B,OAAO,CAAC,IAAI,CAAC,CAuEf"}