mcp-http-webhook 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 (80) hide show
  1. package/.eslintrc.json +16 -0
  2. package/.prettierrc.json +8 -0
  3. package/ARCHITECTURE.md +269 -0
  4. package/CONTRIBUTING.md +136 -0
  5. package/GETTING_STARTED.md +310 -0
  6. package/IMPLEMENTATION.md +294 -0
  7. package/LICENSE +21 -0
  8. package/MIGRATION_TO_SDK.md +263 -0
  9. package/README.md +496 -0
  10. package/SDK_INTEGRATION_COMPLETE.md +300 -0
  11. package/STANDARD_SUBSCRIPTIONS.md +268 -0
  12. package/STANDARD_SUBSCRIPTIONS_COMPLETE.md +309 -0
  13. package/SUMMARY.md +272 -0
  14. package/Spec.md +2778 -0
  15. package/dist/errors/index.d.ts +52 -0
  16. package/dist/errors/index.d.ts.map +1 -0
  17. package/dist/errors/index.js +81 -0
  18. package/dist/errors/index.js.map +1 -0
  19. package/dist/index.d.ts +9 -0
  20. package/dist/index.d.ts.map +1 -0
  21. package/dist/index.js +37 -0
  22. package/dist/index.js.map +1 -0
  23. package/dist/protocol/ProtocolHandler.d.ts +37 -0
  24. package/dist/protocol/ProtocolHandler.d.ts.map +1 -0
  25. package/dist/protocol/ProtocolHandler.js +172 -0
  26. package/dist/protocol/ProtocolHandler.js.map +1 -0
  27. package/dist/server.d.ts +6 -0
  28. package/dist/server.d.ts.map +1 -0
  29. package/dist/server.js +502 -0
  30. package/dist/server.js.map +1 -0
  31. package/dist/stores/InMemoryStore.d.ts +27 -0
  32. package/dist/stores/InMemoryStore.d.ts.map +1 -0
  33. package/dist/stores/InMemoryStore.js +73 -0
  34. package/dist/stores/InMemoryStore.js.map +1 -0
  35. package/dist/stores/RedisStore.d.ts +18 -0
  36. package/dist/stores/RedisStore.d.ts.map +1 -0
  37. package/dist/stores/RedisStore.js +45 -0
  38. package/dist/stores/RedisStore.js.map +1 -0
  39. package/dist/stores/index.d.ts +3 -0
  40. package/dist/stores/index.d.ts.map +1 -0
  41. package/dist/stores/index.js +9 -0
  42. package/dist/stores/index.js.map +1 -0
  43. package/dist/subscriptions/SubscriptionManager.d.ts +49 -0
  44. package/dist/subscriptions/SubscriptionManager.d.ts.map +1 -0
  45. package/dist/subscriptions/SubscriptionManager.js +181 -0
  46. package/dist/subscriptions/SubscriptionManager.js.map +1 -0
  47. package/dist/types/index.d.ts +271 -0
  48. package/dist/types/index.d.ts.map +1 -0
  49. package/dist/types/index.js +16 -0
  50. package/dist/types/index.js.map +1 -0
  51. package/dist/utils/index.d.ts +51 -0
  52. package/dist/utils/index.d.ts.map +1 -0
  53. package/dist/utils/index.js +154 -0
  54. package/dist/utils/index.js.map +1 -0
  55. package/dist/webhooks/WebhookManager.d.ts +27 -0
  56. package/dist/webhooks/WebhookManager.d.ts.map +1 -0
  57. package/dist/webhooks/WebhookManager.js +174 -0
  58. package/dist/webhooks/WebhookManager.js.map +1 -0
  59. package/examples/GITHUB_LIVE_EXAMPLE.md +308 -0
  60. package/examples/GITHUB_LIVE_SETUP.md +253 -0
  61. package/examples/QUICKSTART.md +130 -0
  62. package/examples/basic-setup.ts +142 -0
  63. package/examples/github-server-live.ts +690 -0
  64. package/examples/github-server.ts +223 -0
  65. package/examples/google-drive-server-live.ts +773 -0
  66. package/examples/start-github-live.sh +53 -0
  67. package/jest.config.js +20 -0
  68. package/package.json +58 -0
  69. package/src/errors/index.ts +81 -0
  70. package/src/index.ts +19 -0
  71. package/src/server.ts +595 -0
  72. package/src/stores/InMemoryStore.ts +87 -0
  73. package/src/stores/RedisStore.ts +51 -0
  74. package/src/stores/index.ts +2 -0
  75. package/src/subscriptions/SubscriptionManager.ts +240 -0
  76. package/src/types/index.ts +341 -0
  77. package/src/utils/index.ts +156 -0
  78. package/src/webhooks/WebhookManager.ts +230 -0
  79. package/test-sdk-integration.sh +157 -0
  80. package/tsconfig.json +21 -0
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Base MCP Error class
3
+ */
4
+ export declare class MCPError extends Error {
5
+ code: number;
6
+ data?: any;
7
+ constructor(message: string, code: number, data?: any);
8
+ toJSON(): {
9
+ error: {
10
+ code: number;
11
+ message: string;
12
+ data: any;
13
+ };
14
+ };
15
+ }
16
+ /**
17
+ * Authentication error
18
+ */
19
+ export declare class AuthenticationError extends MCPError {
20
+ constructor(message?: string, data?: any);
21
+ }
22
+ /**
23
+ * Validation error
24
+ */
25
+ export declare class ValidationError extends MCPError {
26
+ constructor(message?: string, data?: any);
27
+ }
28
+ /**
29
+ * Resource not found error
30
+ */
31
+ export declare class ResourceNotFoundError extends MCPError {
32
+ constructor(message?: string, data?: any);
33
+ }
34
+ /**
35
+ * Tool execution error
36
+ */
37
+ export declare class ToolExecutionError extends MCPError {
38
+ constructor(message?: string, data?: any);
39
+ }
40
+ /**
41
+ * Webhook error
42
+ */
43
+ export declare class WebhookError extends MCPError {
44
+ constructor(message?: string, data?: any);
45
+ }
46
+ /**
47
+ * Storage error
48
+ */
49
+ export declare class StorageError extends MCPError {
50
+ constructor(message?: string, data?: any);
51
+ }
52
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,qBAAa,QAAS,SAAQ,KAAK;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,GAAG,CAAC;gBAEC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG;IAQrD,MAAM;;;;;;;CASP;AAED;;GAEG;AACH,qBAAa,mBAAoB,SAAQ,QAAQ;gBACnC,OAAO,SAA0B,EAAE,IAAI,CAAC,EAAE,GAAG;CAG1D;AAED;;GAEG;AACH,qBAAa,eAAgB,SAAQ,QAAQ;gBAC/B,OAAO,SAAsB,EAAE,IAAI,CAAC,EAAE,GAAG;CAGtD;AAED;;GAEG;AACH,qBAAa,qBAAsB,SAAQ,QAAQ;gBACrC,OAAO,SAAuB,EAAE,IAAI,CAAC,EAAE,GAAG;CAGvD;AAED;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,QAAQ;gBAClC,OAAO,SAA0B,EAAE,IAAI,CAAC,EAAE,GAAG;CAG1D;AAED;;GAEG;AACH,qBAAa,YAAa,SAAQ,QAAQ;gBAC5B,OAAO,SAAkB,EAAE,IAAI,CAAC,EAAE,GAAG;CAGlD;AAED;;GAEG;AACH,qBAAa,YAAa,SAAQ,QAAQ;gBAC5B,OAAO,SAAkB,EAAE,IAAI,CAAC,EAAE,GAAG;CAGlD"}
@@ -0,0 +1,81 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.StorageError = exports.WebhookError = exports.ToolExecutionError = exports.ResourceNotFoundError = exports.ValidationError = exports.AuthenticationError = exports.MCPError = void 0;
4
+ const types_1 = require("../types");
5
+ /**
6
+ * Base MCP Error class
7
+ */
8
+ class MCPError extends Error {
9
+ constructor(message, code, data) {
10
+ super(message);
11
+ this.name = this.constructor.name;
12
+ this.code = code;
13
+ this.data = data;
14
+ Error.captureStackTrace(this, this.constructor);
15
+ }
16
+ toJSON() {
17
+ return {
18
+ error: {
19
+ code: this.code,
20
+ message: this.message,
21
+ data: this.data,
22
+ },
23
+ };
24
+ }
25
+ }
26
+ exports.MCPError = MCPError;
27
+ /**
28
+ * Authentication error
29
+ */
30
+ class AuthenticationError extends MCPError {
31
+ constructor(message = 'Authentication failed', data) {
32
+ super(message, types_1.MCPErrorCode.AuthenticationError, data);
33
+ }
34
+ }
35
+ exports.AuthenticationError = AuthenticationError;
36
+ /**
37
+ * Validation error
38
+ */
39
+ class ValidationError extends MCPError {
40
+ constructor(message = 'Validation failed', data) {
41
+ super(message, types_1.MCPErrorCode.ValidationError, data);
42
+ }
43
+ }
44
+ exports.ValidationError = ValidationError;
45
+ /**
46
+ * Resource not found error
47
+ */
48
+ class ResourceNotFoundError extends MCPError {
49
+ constructor(message = 'Resource not found', data) {
50
+ super(message, types_1.MCPErrorCode.ResourceNotFoundError, data);
51
+ }
52
+ }
53
+ exports.ResourceNotFoundError = ResourceNotFoundError;
54
+ /**
55
+ * Tool execution error
56
+ */
57
+ class ToolExecutionError extends MCPError {
58
+ constructor(message = 'Tool execution failed', data) {
59
+ super(message, types_1.MCPErrorCode.ToolExecutionError, data);
60
+ }
61
+ }
62
+ exports.ToolExecutionError = ToolExecutionError;
63
+ /**
64
+ * Webhook error
65
+ */
66
+ class WebhookError extends MCPError {
67
+ constructor(message = 'Webhook error', data) {
68
+ super(message, types_1.MCPErrorCode.WebhookError, data);
69
+ }
70
+ }
71
+ exports.WebhookError = WebhookError;
72
+ /**
73
+ * Storage error
74
+ */
75
+ class StorageError extends MCPError {
76
+ constructor(message = 'Storage error', data) {
77
+ super(message, types_1.MCPErrorCode.StorageError, data);
78
+ }
79
+ }
80
+ exports.StorageError = StorageError;
81
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":";;;AAAA,oCAAwC;AAExC;;GAEG;AACH,MAAa,QAAS,SAAQ,KAAK;IAIjC,YAAY,OAAe,EAAE,IAAY,EAAE,IAAU;QACnD,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;QAClC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;IAClD,CAAC;IAED,MAAM;QACJ,OAAO;YACL,KAAK,EAAE;gBACL,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,IAAI,EAAE,IAAI,CAAC,IAAI;aAChB;SACF,CAAC;IACJ,CAAC;CACF;AArBD,4BAqBC;AAED;;GAEG;AACH,MAAa,mBAAoB,SAAQ,QAAQ;IAC/C,YAAY,OAAO,GAAG,uBAAuB,EAAE,IAAU;QACvD,KAAK,CAAC,OAAO,EAAE,oBAAY,CAAC,mBAAmB,EAAE,IAAI,CAAC,CAAC;IACzD,CAAC;CACF;AAJD,kDAIC;AAED;;GAEG;AACH,MAAa,eAAgB,SAAQ,QAAQ;IAC3C,YAAY,OAAO,GAAG,mBAAmB,EAAE,IAAU;QACnD,KAAK,CAAC,OAAO,EAAE,oBAAY,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;IACrD,CAAC;CACF;AAJD,0CAIC;AAED;;GAEG;AACH,MAAa,qBAAsB,SAAQ,QAAQ;IACjD,YAAY,OAAO,GAAG,oBAAoB,EAAE,IAAU;QACpD,KAAK,CAAC,OAAO,EAAE,oBAAY,CAAC,qBAAqB,EAAE,IAAI,CAAC,CAAC;IAC3D,CAAC;CACF;AAJD,sDAIC;AAED;;GAEG;AACH,MAAa,kBAAmB,SAAQ,QAAQ;IAC9C,YAAY,OAAO,GAAG,uBAAuB,EAAE,IAAU;QACvD,KAAK,CAAC,OAAO,EAAE,oBAAY,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC;IACxD,CAAC;CACF;AAJD,gDAIC;AAED;;GAEG;AACH,MAAa,YAAa,SAAQ,QAAQ;IACxC,YAAY,OAAO,GAAG,eAAe,EAAE,IAAU;QAC/C,KAAK,CAAC,OAAO,EAAE,oBAAY,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;IAClD,CAAC;CACF;AAJD,oCAIC;AAED;;GAEG;AACH,MAAa,YAAa,SAAQ,QAAQ;IACxC,YAAY,OAAO,GAAG,eAAe,EAAE,IAAU;QAC/C,KAAK,CAAC,OAAO,EAAE,oBAAY,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;IAClD,CAAC;CACF;AAJD,oCAIC"}
@@ -0,0 +1,9 @@
1
+ export { createMCPServer } from './server';
2
+ export * from './types';
3
+ export * from './errors';
4
+ export * from './utils';
5
+ export { SubscriptionManager } from './subscriptions/SubscriptionManager';
6
+ export { WebhookManager } from './webhooks/WebhookManager';
7
+ export { InMemoryStore } from './stores/InMemoryStore';
8
+ export { RedisStore } from './stores/RedisStore';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAG3C,cAAc,SAAS,CAAC;AAGxB,cAAc,UAAU,CAAC;AAGzB,cAAc,SAAS,CAAC;AAGxB,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAC1E,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAG3D,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.RedisStore = exports.InMemoryStore = exports.WebhookManager = exports.SubscriptionManager = exports.createMCPServer = void 0;
18
+ // Main export
19
+ var server_1 = require("./server");
20
+ Object.defineProperty(exports, "createMCPServer", { enumerable: true, get: function () { return server_1.createMCPServer; } });
21
+ // Types
22
+ __exportStar(require("./types"), exports);
23
+ // Errors
24
+ __exportStar(require("./errors"), exports);
25
+ // Utilities
26
+ __exportStar(require("./utils"), exports);
27
+ // Managers (for advanced usage)
28
+ var SubscriptionManager_1 = require("./subscriptions/SubscriptionManager");
29
+ Object.defineProperty(exports, "SubscriptionManager", { enumerable: true, get: function () { return SubscriptionManager_1.SubscriptionManager; } });
30
+ var WebhookManager_1 = require("./webhooks/WebhookManager");
31
+ Object.defineProperty(exports, "WebhookManager", { enumerable: true, get: function () { return WebhookManager_1.WebhookManager; } });
32
+ // Store implementations
33
+ var InMemoryStore_1 = require("./stores/InMemoryStore");
34
+ Object.defineProperty(exports, "InMemoryStore", { enumerable: true, get: function () { return InMemoryStore_1.InMemoryStore; } });
35
+ var RedisStore_1 = require("./stores/RedisStore");
36
+ Object.defineProperty(exports, "RedisStore", { enumerable: true, get: function () { return RedisStore_1.RedisStore; } });
37
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,cAAc;AACd,mCAA2C;AAAlC,yGAAA,eAAe,OAAA;AAExB,QAAQ;AACR,0CAAwB;AAExB,SAAS;AACT,2CAAyB;AAEzB,YAAY;AACZ,0CAAwB;AAExB,gCAAgC;AAChC,2EAA0E;AAAjE,0HAAA,mBAAmB,OAAA;AAC5B,4DAA2D;AAAlD,gHAAA,cAAc,OAAA;AAEvB,wBAAwB;AACxB,wDAAuD;AAA9C,8GAAA,aAAa,OAAA;AACtB,kDAAiD;AAAxC,wGAAA,UAAU,OAAA"}
@@ -0,0 +1,37 @@
1
+ import { ToolDefinition, ResourceDefinition, PromptDefinition, AuthContext, Logger } from '../types';
2
+ export declare class ProtocolHandler {
3
+ private tools;
4
+ private resources;
5
+ private prompts;
6
+ private logger?;
7
+ constructor(tools: ToolDefinition[], resources: ResourceDefinition[], prompts: PromptDefinition[], logger?: Logger | undefined);
8
+ /**
9
+ * List available tools
10
+ */
11
+ listTools(): Promise<any>;
12
+ /**
13
+ * Call a tool
14
+ */
15
+ callTool(name: string, args: any, context: AuthContext): Promise<any>;
16
+ /**
17
+ * List available resources
18
+ */
19
+ listResources(context: AuthContext): Promise<any>;
20
+ /**
21
+ * Read a resource
22
+ */
23
+ readResource(uri: string, context: AuthContext, options?: any): Promise<any>;
24
+ /**
25
+ * List available prompts
26
+ */
27
+ listPrompts(): Promise<any>;
28
+ /**
29
+ * Get a prompt
30
+ */
31
+ getPrompt(name: string, args: any, context: AuthContext): Promise<any>;
32
+ /**
33
+ * Find resource for URI
34
+ */
35
+ private findResourceForUri;
36
+ }
37
+ //# sourceMappingURL=ProtocolHandler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProtocolHandler.d.ts","sourceRoot":"","sources":["../../src/protocol/ProtocolHandler.ts"],"names":[],"mappings":"AACA,OAAO,EACL,cAAc,EACd,kBAAkB,EAClB,gBAAgB,EAChB,WAAW,EACX,MAAM,EACP,MAAM,UAAU,CAAC;AASlB,qBAAa,eAAe;IAExB,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,MAAM,CAAC;gBAHP,KAAK,EAAE,cAAc,EAAE,EACvB,SAAS,EAAE,kBAAkB,EAAE,EAC/B,OAAO,EAAE,gBAAgB,EAAE,EAC3B,MAAM,CAAC,EAAE,MAAM,YAAA;IAGzB;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,GAAG,CAAC;IAU/B;;OAEG;IACG,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC;IA0C3E;;OAEG;IACG,aAAa,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC;IAwBvD;;OAEG;IACG,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;IAmClF;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC;IAUjC;;OAEG;IACG,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC;IA2B5E;;OAEG;IACH,OAAO,CAAC,kBAAkB;CAM3B"}
@@ -0,0 +1,172 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.ProtocolHandler = void 0;
7
+ const ajv_1 = __importDefault(require("ajv"));
8
+ const errors_1 = require("../errors");
9
+ const ajv = new ajv_1.default();
10
+ class ProtocolHandler {
11
+ constructor(tools, resources, prompts, logger) {
12
+ this.tools = tools;
13
+ this.resources = resources;
14
+ this.prompts = prompts;
15
+ this.logger = logger;
16
+ }
17
+ /**
18
+ * List available tools
19
+ */
20
+ async listTools() {
21
+ return {
22
+ tools: this.tools.map((tool) => ({
23
+ name: tool.name,
24
+ description: tool.description,
25
+ inputSchema: tool.inputSchema,
26
+ })),
27
+ };
28
+ }
29
+ /**
30
+ * Call a tool
31
+ */
32
+ async callTool(name, args, context) {
33
+ this.logger?.debug('Calling tool', { name, args });
34
+ const tool = this.tools.find((t) => t.name === name);
35
+ if (!tool) {
36
+ throw new errors_1.ValidationError(`Tool not found: ${name}`);
37
+ }
38
+ // Validate input
39
+ const validate = ajv.compile(tool.inputSchema);
40
+ if (!validate(args)) {
41
+ throw new errors_1.ValidationError('Invalid tool input', {
42
+ errors: validate.errors,
43
+ });
44
+ }
45
+ try {
46
+ const result = await tool.handler(args, context);
47
+ this.logger?.debug('Tool executed successfully', { name });
48
+ return {
49
+ content: [
50
+ {
51
+ type: 'text',
52
+ text: JSON.stringify(result, null, 2),
53
+ },
54
+ ],
55
+ };
56
+ }
57
+ catch (error) {
58
+ this.logger?.error('Tool execution failed', {
59
+ name,
60
+ error: error instanceof Error ? error.message : String(error),
61
+ });
62
+ throw new errors_1.ToolExecutionError('Tool execution failed', {
63
+ tool: name,
64
+ error: error instanceof Error ? error.message : String(error),
65
+ });
66
+ }
67
+ }
68
+ /**
69
+ * List available resources
70
+ */
71
+ async listResources(context) {
72
+ const resourceLists = await Promise.all(this.resources
73
+ .filter((r) => r.list)
74
+ .map(async (resource) => {
75
+ try {
76
+ return await resource.list(context);
77
+ }
78
+ catch (error) {
79
+ this.logger?.warn('Failed to list resource', {
80
+ resource: resource.name,
81
+ error: error instanceof Error ? error.message : String(error),
82
+ });
83
+ return [];
84
+ }
85
+ }));
86
+ const allResources = resourceLists.flat();
87
+ return {
88
+ resources: allResources,
89
+ };
90
+ }
91
+ /**
92
+ * Read a resource
93
+ */
94
+ async readResource(uri, context, options) {
95
+ this.logger?.debug('Reading resource', { uri });
96
+ const resource = this.findResourceForUri(uri);
97
+ if (!resource) {
98
+ throw new errors_1.ResourceNotFoundError(`No resource handler found for URI: ${uri}`);
99
+ }
100
+ try {
101
+ const result = await resource.read(uri, context, options);
102
+ this.logger?.debug('Resource read successfully', { uri });
103
+ return {
104
+ contents: [
105
+ {
106
+ uri,
107
+ mimeType: resource.mimeType || 'application/json',
108
+ text: JSON.stringify(result.contents, null, 2),
109
+ },
110
+ ],
111
+ };
112
+ }
113
+ catch (error) {
114
+ this.logger?.error('Resource read failed', {
115
+ uri,
116
+ error: error instanceof Error ? error.message : String(error),
117
+ });
118
+ throw new errors_1.ResourceNotFoundError('Failed to read resource', {
119
+ uri,
120
+ error: error instanceof Error ? error.message : String(error),
121
+ });
122
+ }
123
+ }
124
+ /**
125
+ * List available prompts
126
+ */
127
+ async listPrompts() {
128
+ return {
129
+ prompts: this.prompts.map((prompt) => ({
130
+ name: prompt.name,
131
+ description: prompt.description,
132
+ arguments: prompt.arguments || [],
133
+ })),
134
+ };
135
+ }
136
+ /**
137
+ * Get a prompt
138
+ */
139
+ async getPrompt(name, args, context) {
140
+ this.logger?.debug('Getting prompt', { name, args });
141
+ const prompt = this.prompts.find((p) => p.name === name);
142
+ if (!prompt) {
143
+ throw new errors_1.ValidationError(`Prompt not found: ${name}`);
144
+ }
145
+ try {
146
+ const result = await prompt.handler(args, context);
147
+ this.logger?.debug('Prompt generated successfully', { name });
148
+ return result;
149
+ }
150
+ catch (error) {
151
+ this.logger?.error('Prompt generation failed', {
152
+ name,
153
+ error: error instanceof Error ? error.message : String(error),
154
+ });
155
+ throw new errors_1.ToolExecutionError('Prompt generation failed', {
156
+ prompt: name,
157
+ error: error instanceof Error ? error.message : String(error),
158
+ });
159
+ }
160
+ }
161
+ /**
162
+ * Find resource for URI
163
+ */
164
+ findResourceForUri(uri) {
165
+ return this.resources.find((resource) => {
166
+ // Simple prefix matching - could be enhanced
167
+ return uri.startsWith(resource.uri.split('{')[0]);
168
+ });
169
+ }
170
+ }
171
+ exports.ProtocolHandler = ProtocolHandler;
172
+ //# sourceMappingURL=ProtocolHandler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProtocolHandler.js","sourceRoot":"","sources":["../../src/protocol/ProtocolHandler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { MCPServerConfig, MCPServer } from './types';
2
+ /**
3
+ * Create MCP HTTP Webhook Server using standard MCP SDK
4
+ */
5
+ export declare function createMCPServer(config: MCPServerConfig): MCPServer;
6
+ //# sourceMappingURL=server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,eAAe,EAAE,SAAS,EAAsB,MAAM,SAAS,CAAC;AAmEzE;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,eAAe,GAAG,SAAS,CAwclE"}