kleanmcp 1.0.1 → 1.0.3

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.
package/dist/index.cjs ADDED
@@ -0,0 +1,554 @@
1
+ var __create = Object.create;
2
+ var __getProtoOf = Object.getPrototypeOf;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ function __accessProp(key) {
8
+ return this[key];
9
+ }
10
+ var __toESMCache_node;
11
+ var __toESMCache_esm;
12
+ var __toESM = (mod, isNodeMode, target) => {
13
+ var canCache = mod != null && typeof mod === "object";
14
+ if (canCache) {
15
+ var cache = isNodeMode ? __toESMCache_node ??= new WeakMap : __toESMCache_esm ??= new WeakMap;
16
+ var cached = cache.get(mod);
17
+ if (cached)
18
+ return cached;
19
+ }
20
+ target = mod != null ? __create(__getProtoOf(mod)) : {};
21
+ const to = isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target;
22
+ for (let key of __getOwnPropNames(mod))
23
+ if (!__hasOwnProp.call(to, key))
24
+ __defProp(to, key, {
25
+ get: __accessProp.bind(mod, key),
26
+ enumerable: true
27
+ });
28
+ if (canCache)
29
+ cache.set(mod, to);
30
+ return to;
31
+ };
32
+ var __toCommonJS = (from) => {
33
+ var entry = (__moduleCache ??= new WeakMap).get(from), desc;
34
+ if (entry)
35
+ return entry;
36
+ entry = __defProp({}, "__esModule", { value: true });
37
+ if (from && typeof from === "object" || typeof from === "function") {
38
+ for (var key of __getOwnPropNames(from))
39
+ if (!__hasOwnProp.call(entry, key))
40
+ __defProp(entry, key, {
41
+ get: __accessProp.bind(from, key),
42
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
43
+ });
44
+ }
45
+ __moduleCache.set(from, entry);
46
+ return entry;
47
+ };
48
+ var __moduleCache;
49
+ var __returnValue = (v) => v;
50
+ function __exportSetter(name, newValue) {
51
+ this[name] = __returnValue.bind(null, newValue);
52
+ }
53
+ var __export = (target, all) => {
54
+ for (var name in all)
55
+ __defProp(target, name, {
56
+ get: all[name],
57
+ enumerable: true,
58
+ configurable: true,
59
+ set: __exportSetter.bind(all, name)
60
+ });
61
+ };
62
+
63
+ // src/types.ts
64
+ var exports_types = {};
65
+ __export(exports_types, {
66
+ methodDefs: () => jb,
67
+ defaultJSONRPCHandler: () => e,
68
+ ToolDefinition: () => ToolDefinition,
69
+ ToolArgsToParameterList: () => ToolArgsToParameterList,
70
+ StatusMap: () => import_elysia.StatusMap,
71
+ OpenRPCSupportedVersionsSchema: () => m2,
72
+ OpenRPCServerObjectSchema: () => Y2,
73
+ OpenRPCSchema: () => R2,
74
+ OpenRPCReferenceObjectSchema: () => p,
75
+ OpenRPCMethodObjectSchema: () => d,
76
+ OpenRPCLicenseObjectSchema: () => E,
77
+ OpenRPCInfoObjectSchema: () => I,
78
+ OpenRPCExternalDocumentationObjectSchema: () => s,
79
+ OpenRPCContentDescriptorSchema: () => F,
80
+ OpenRPCContactObjectSchema: () => u,
81
+ OpenRPCComponentsObjectSchema: () => r,
82
+ OPENRPC_VERSION: () => q,
83
+ MCPError: () => _,
84
+ JSONRPC_VERSION: () => _2,
85
+ JSONRPCSupportedVersionsSchema: () => n,
86
+ JSONRPCSchema: () => A,
87
+ JSONRPCResultSchema: () => f,
88
+ JSONRPCResultResponseSchema: () => j,
89
+ JSONRPCResponseSchema: () => X2,
90
+ JSONRPCRequestSchema: () => W2,
91
+ JSONRPCRequestIdSchema: () => G2,
92
+ JSONRPCParamsSchema: () => U,
93
+ JSONRPCNotificationSchema: () => H,
94
+ JSONRPCMessageSchema: () => P2,
95
+ JSONRPCHandlerReturnTypeSchema: () => a,
96
+ JSONRPCHandlerArgumentSchema: () => C2,
97
+ JSONRPCException: () => i,
98
+ JSONRPCErrorSchema: () => b2,
99
+ JSONRPCErrorResponseSchema: () => D,
100
+ JSONRPCErrorCode: () => O,
101
+ InvertedStatusMap: () => import_elysia.InvertedStatusMap,
102
+ InputSchemaFromParameters: () => InputSchemaFromParameters,
103
+ DEFAULT_OPTIONS: () => r2
104
+ });
105
+ module.exports = __toCommonJS(exports_types);
106
+
107
+ // ../elysia-jsonrpc/dist/mcp.types.js
108
+ var import_v4 = require("zod/v4");
109
+ var P = Object.create;
110
+ var { getPrototypeOf: Q, defineProperty: m, getOwnPropertyNames: R } = Object;
111
+ var W = Object.prototype.hasOwnProperty;
112
+ function X(l) {
113
+ return this[l];
114
+ }
115
+ var Y;
116
+ var Z;
117
+ var $ = (l, u, U) => {
118
+ var j = l != null && typeof l === "object";
119
+ if (j) {
120
+ var A = u ? Y ??= new WeakMap : Z ??= new WeakMap, I = A.get(l);
121
+ if (I)
122
+ return I;
123
+ }
124
+ U = l != null ? P(Q(l)) : {};
125
+ let V = u || !l || !l.__esModule ? m(U, "default", { value: l, enumerable: true }) : U;
126
+ for (let F of R(l))
127
+ if (!W.call(V, F))
128
+ m(V, F, { get: X.bind(l, F), enumerable: true });
129
+ if (j)
130
+ A.set(l, V);
131
+ return V;
132
+ };
133
+ var B = (l, u) => () => (u || l((u = { exports: {} }).exports, u), u.exports);
134
+ var C = B((v) => {
135
+ Object.defineProperty(v, "__esModule", { value: true });
136
+ });
137
+ var G = B((D) => {
138
+ Object.defineProperty(D, "__esModule", { value: true });
139
+ var d = Symbol("inverted"), i = Symbol("expectNull"), o = Symbol("expectUndefined"), y = Symbol("expectNumber"), h = Symbol("expectString"), t = Symbol("expectBoolean"), k = Symbol("expectVoid"), a = Symbol("expectFunction"), O = Symbol("expectObject"), x = Symbol("expectArray"), r = Symbol("expectSymbol"), T = Symbol("expectAny"), s = Symbol("expectUnknown"), e = Symbol("expectNever"), f = Symbol("expectNullable"), p = Symbol("expectBigInt");
140
+ });
141
+ var J = B((H) => {
142
+ Object.defineProperty(H, "__esModule", { value: true });
143
+ });
144
+ var L = B((K) => {
145
+ Object.defineProperty(K, "__esModule", { value: true });
146
+ var lb = Symbol("secret"), Sb = Symbol("mismatch"), cb = Symbol("avalue");
147
+ });
148
+ var M = B((c) => {
149
+ var n = c && c.__createBinding || (Object.create ? function(l, u, U, j) {
150
+ if (j === undefined)
151
+ j = U;
152
+ var A = Object.getOwnPropertyDescriptor(u, U);
153
+ if (!A || ("get" in A ? !u.__esModule : A.writable || A.configurable))
154
+ A = { enumerable: true, get: function() {
155
+ return u[U];
156
+ } };
157
+ Object.defineProperty(l, j, A);
158
+ } : function(l, u, U, j) {
159
+ if (j === undefined)
160
+ j = U;
161
+ l[j] = u[U];
162
+ }), w = c && c.__exportStar || function(l, u) {
163
+ for (var U in l)
164
+ if (U !== "default" && !Object.prototype.hasOwnProperty.call(u, U))
165
+ n(u, l, U);
166
+ };
167
+ Object.defineProperty(c, "__esModule", { value: true });
168
+ c.expectTypeOf = undefined;
169
+ w(C(), c);
170
+ w(G(), c);
171
+ w(J(), c);
172
+ w(L(), c);
173
+ var N = () => true, q = (l) => {
174
+ let u = ["parameters", "returns", "resolves", "not", "items", "constructorParameters", "thisParameter", "instance", "guards", "asserts", "branded"], U = { toBeAny: N, toBeUnknown: N, toBeNever: N, toBeFunction: N, toBeObject: N, toBeArray: N, toBeString: N, toBeNumber: N, toBeBoolean: N, toBeVoid: N, toBeSymbol: N, toBeNull: N, toBeUndefined: N, toBeNullable: N, toBeBigInt: N, toMatchTypeOf: N, toEqualTypeOf: N, toBeConstructibleWith: N, toMatchObjectType: N, toExtend: N, map: c.expectTypeOf, toBeCallableWith: c.expectTypeOf, extract: c.expectTypeOf, exclude: c.expectTypeOf, pick: c.expectTypeOf, omit: c.expectTypeOf, toHaveProperty: c.expectTypeOf, parameter: c.expectTypeOf };
175
+ return u.forEach((A) => Object.defineProperty(U, A, { get: () => (0, c.expectTypeOf)({}) })), U;
176
+ };
177
+ c.expectTypeOf = q;
178
+ });
179
+ var S = $(M(), 1);
180
+ var jb = { initialize: { params: import_v4.z.object({ protocolVersion: import_v4.z.string(), capabilities: import_v4.z.any(), clientInfo: import_v4.z.any() }), result: import_v4.z.object({ protocolVersion: import_v4.z.string(), capabilities: import_v4.z.any(), serverInfo: import_v4.z.any() }) }, ping: { params: import_v4.z.object({}), result: import_v4.z.object({}) }, prompts: { list: { params: import_v4.z.object({ cursor: import_v4.z.string().optional() }), result: import_v4.z.object({ prompts: import_v4.z.array(import_v4.z.object({ name: import_v4.z.string(), description: import_v4.z.string().optional(), arguments: import_v4.z.array(import_v4.z.object({ name: import_v4.z.string(), description: import_v4.z.string().optional(), required: import_v4.z.boolean().optional() })).optional() })), nextCursor: import_v4.z.string().optional() }), description: "" }, get: { params: import_v4.z.object({ name: import_v4.z.string(), arguments: import_v4.z.record(import_v4.z.string(), import_v4.z.string()).optional() }), result: import_v4.z.object({ description: import_v4.z.string().optional(), messages: import_v4.z.array(import_v4.z.object({ role: import_v4.z.enum(["user", "assistant"]), content: import_v4.z.object({ type: import_v4.z.literal("text"), text: import_v4.z.string() }) })) }) } }, resources: { list: { params: import_v4.z.object({ cursor: import_v4.z.string().optional() }), result: import_v4.z.object({ resources: import_v4.z.array(import_v4.z.object({ uri: import_v4.z.string(), name: import_v4.z.string(), description: import_v4.z.string().optional(), mimeType: import_v4.z.string().optional() })), nextCursor: import_v4.z.string().optional() }) }, read: { params: import_v4.z.object({ uri: import_v4.z.string() }), result: import_v4.z.object({ contents: import_v4.z.array(import_v4.z.object({ uri: import_v4.z.string(), mimeType: import_v4.z.string().optional(), text: import_v4.z.string().optional(), blob: import_v4.z.string().optional() })) }) }, subscribe: { params: import_v4.z.object({ uri: import_v4.z.string() }), result: import_v4.z.object({}) }, templates: { list: { params: import_v4.z.object({ cursor: import_v4.z.string().optional() }), result: import_v4.z.object({ resourceTemplates: import_v4.z.array(import_v4.z.object({ uriTemplate: import_v4.z.string(), name: import_v4.z.string(), description: import_v4.z.string().optional(), mimeType: import_v4.z.string().optional() })), nextCursor: import_v4.z.string().optional() }) } } }, tools: { list: { params: import_v4.z.object({ cursor: import_v4.z.string().optional() }), result: import_v4.z.object({ tools: import_v4.z.array(import_v4.z.object({ name: import_v4.z.string(), description: import_v4.z.string().optional(), inputSchema: import_v4.z.object({ type: import_v4.z.literal("object"), properties: import_v4.z.record(import_v4.z.string(), import_v4.z.any()).optional(), required: import_v4.z.array(import_v4.z.string()).optional() }) })), nextCursor: import_v4.z.string().optional() }) }, call: { params: import_v4.z.object({ name: import_v4.z.string(), arguments: import_v4.z.record(import_v4.z.string(), import_v4.z.any()).optional() }), result: import_v4.z.object({ content: import_v4.z.array(import_v4.z.object({ type: import_v4.z.enum(["text", "image", "resource"]), text: import_v4.z.string().optional(), data: import_v4.z.string().optional(), mimeType: import_v4.z.string().optional() })), isError: import_v4.z.boolean().optional() }) } }, notifications: { "prompts/list_changed": null, "resources/list_changed": null, "resources/updated": null, "tools/list_changed": null, cancelled: null } };
181
+
182
+ class _ extends Error {
183
+ args;
184
+ constructor(l, u) {
185
+ super(`MCPError: ${l} with args ${u || {}}`);
186
+ this.args = u;
187
+ }
188
+ }
189
+ S.expectTypeOf().toEqualTypeOf();
190
+ S.expectTypeOf().not.toEqualTypeOf();
191
+ S.expectTypeOf().not.toEqualTypeOf();
192
+ S.expectTypeOf().toEqualTypeOf();
193
+ S.expectTypeOf().toEqualTypeOf();
194
+ S.expectTypeOf({ a: 1, b: 1 }).toMatchObjectType();
195
+ S.expectTypeOf().toEqualTypeOf();
196
+ S.expectTypeOf().toEqualTypeOf();
197
+ S.expectTypeOf().toEqualTypeOf();
198
+ S.expectTypeOf().toEqualTypeOf();
199
+ S.expectTypeOf().toEqualTypeOf();
200
+ S.expectTypeOf().toEqualTypeOf();
201
+ S.expectTypeOf().toEqualTypeOf();
202
+ S.expectTypeOf().toEqualTypeOf();
203
+ S.expectTypeOf().toEqualTypeOf();
204
+ S.expectTypeOf().toEqualTypeOf();
205
+ S.expectTypeOf().toEqualTypeOf();
206
+ S.expectTypeOf().toEqualTypeOf();
207
+ S.expectTypeOf().toEqualTypeOf();
208
+ S.expectTypeOf().toEqualTypeOf();
209
+ S.expectTypeOf().toEqualTypeOf();
210
+ S.expectTypeOf().toEqualTypeOf();
211
+ // ../elysia-jsonrpc/dist/rpc.types.js
212
+ var import_v42 = __toESM(require("zod/v4"));
213
+ var _2 = "2.0";
214
+ var q = "1.3.2";
215
+ var A = import_v42.default.string();
216
+ var n = import_v42.default.enum([_2]);
217
+ var m2 = import_v42.default.enum([q]);
218
+ var G2 = import_v42.default.union([import_v42.default.string(), import_v42.default.number(), import_v42.default.null()]);
219
+ var U = import_v42.default.union([import_v42.default.array(import_v42.default.unknown()), import_v42.default.record(import_v42.default.any(), import_v42.default.unknown())]).optional();
220
+ var b2 = import_v42.default.object({ code: import_v42.default.number().int(), message: import_v42.default.string(), data: import_v42.default.unknown().optional() });
221
+ var W2 = import_v42.default.object({ jsonrpc: A, method: import_v42.default.string(), params: U, id: G2 });
222
+ var H = import_v42.default.object({ jsonrpc: A, method: import_v42.default.string(), params: U });
223
+ var f = import_v42.default.unknown();
224
+ var j = import_v42.default.object({ jsonrpc: A, result: f, id: G2 });
225
+ var D = import_v42.default.object({ jsonrpc: A, error: b2, id: G2 });
226
+ var X2 = import_v42.default.union([j, D]);
227
+ var P2 = import_v42.default.union([W2, H, X2]);
228
+ var C2 = import_v42.default.union([W2, H]);
229
+ var a = import_v42.default.union([X2, H]);
230
+ var O = { ParseError: -32700, InvalidRequest: -32600, MethodNotFound: -32601, InvalidParams: -32602, InternalError: -32603 };
231
+ var u = import_v42.default.object({ name: import_v42.default.string().optional(), url: import_v42.default.url().optional(), email: import_v42.default.email().optional() });
232
+ var E = import_v42.default.object({ name: import_v42.default.string(), url: import_v42.default.url().optional() });
233
+ var I = import_v42.default.object({ title: import_v42.default.string(), version: import_v42.default.string(), description: import_v42.default.string().optional(), termsOfService: import_v42.default.string().optional(), contact: u.optional(), license: E.optional() });
234
+ var Y2 = import_v42.default.object({ name: import_v42.default.string(), url: import_v42.default.string(), summary: import_v42.default.string().optional(), description: import_v42.default.string().optional(), variables: import_v42.default.record(import_v42.default.string(), import_v42.default.any()).optional() });
235
+ var F = import_v42.default.object({ name: import_v42.default.string(), summary: import_v42.default.string().optional(), description: import_v42.default.string().optional(), required: import_v42.default.boolean().optional(), schema: import_v42.default.any(), deprecated: import_v42.default.boolean().optional() });
236
+ var d = import_v42.default.object({ name: import_v42.default.string(), tags: import_v42.default.array(import_v42.default.object({ name: import_v42.default.string(), description: import_v42.default.string().optional() })).optional(), summary: import_v42.default.string().optional(), description: import_v42.default.string().optional(), externalDocs: import_v42.default.object({ description: import_v42.default.string().optional(), url: import_v42.default.string() }).optional(), params: import_v42.default.array(F).optional(), result: F, deprecated: import_v42.default.boolean().optional(), servers: import_v42.default.array(Y2).optional(), errors: import_v42.default.array(import_v42.default.any()).optional(), links: import_v42.default.array(import_v42.default.any()).optional(), examples: import_v42.default.array(import_v42.default.any()).optional(), paramStructure: import_v42.default.enum(["by-name", "by-position", "either"]).optional() });
237
+ var p = import_v42.default.object({ $ref: import_v42.default.string() });
238
+ var r = import_v42.default.object({ schemas: import_v42.default.record(import_v42.default.string(), import_v42.default.any()).optional(), links: import_v42.default.record(import_v42.default.string(), import_v42.default.any()).optional(), errors: import_v42.default.record(import_v42.default.string(), import_v42.default.any()).optional(), examples: import_v42.default.record(import_v42.default.string(), import_v42.default.any()).optional(), examplePairings: import_v42.default.record(import_v42.default.string(), import_v42.default.any()).optional(), contentDescriptors: import_v42.default.record(import_v42.default.string(), F).optional(), tags: import_v42.default.record(import_v42.default.string(), import_v42.default.any()).optional() });
239
+ var s = import_v42.default.object({ description: import_v42.default.string().optional(), url: import_v42.default.string() });
240
+ var R2 = import_v42.default.object({ openrpc: import_v42.default.string(), info: I, servers: import_v42.default.array(Y2).optional(), methods: import_v42.default.array(import_v42.default.union([d, p])), components: r.optional(), externalDocs: s.optional() });
241
+
242
+ class i extends Error {
243
+ code;
244
+ message;
245
+ originalError;
246
+ constructor(v, w, y) {
247
+ super(`JSONRPCException ${v}: ${w}`);
248
+ this.code = v;
249
+ this.message = w;
250
+ this.originalError = y;
251
+ }
252
+ }
253
+ // ../elysia-jsonrpc/dist/index.js
254
+ var import_v43 = __toESM(require("zod/v4"));
255
+ var import_elysia = __toESM(require("elysia"));
256
+ var B2 = "2.0";
257
+ var I2 = "1.3.2";
258
+ var j2 = import_v43.default.string();
259
+ var b3 = import_v43.default.enum([B2]);
260
+ var AG = import_v43.default.enum([I2]);
261
+ var _3 = import_v43.default.union([import_v43.default.string(), import_v43.default.number(), import_v43.default.null()]);
262
+ var D2 = import_v43.default.union([import_v43.default.array(import_v43.default.unknown()), import_v43.default.record(import_v43.default.any(), import_v43.default.unknown())]).optional();
263
+ var n2 = import_v43.default.object({ code: import_v43.default.number().int(), message: import_v43.default.string(), data: import_v43.default.unknown().optional() });
264
+ var V = import_v43.default.object({ jsonrpc: j2, method: import_v43.default.string(), params: D2, id: _3 });
265
+ var M2 = import_v43.default.object({ jsonrpc: j2, method: import_v43.default.string(), params: D2 });
266
+ var i2 = import_v43.default.unknown();
267
+ var R3 = import_v43.default.object({ jsonrpc: j2, result: i2, id: _3 });
268
+ var S2 = import_v43.default.object({ jsonrpc: j2, error: n2, id: _3 });
269
+ var v = import_v43.default.union([R3, S2]);
270
+ var LG = import_v43.default.union([V, M2, v]);
271
+ var UG = import_v43.default.union([V, M2]);
272
+ var kG = import_v43.default.union([v, M2]);
273
+ var w = { ParseError: -32700, InvalidRequest: -32600, MethodNotFound: -32601, InvalidParams: -32602, InternalError: -32603 };
274
+ var c = import_v43.default.object({ name: import_v43.default.string().optional(), url: import_v43.default.url().optional(), email: import_v43.default.email().optional() });
275
+ var p2 = import_v43.default.object({ name: import_v43.default.string(), url: import_v43.default.url().optional() });
276
+ var d2 = import_v43.default.object({ title: import_v43.default.string(), version: import_v43.default.string(), description: import_v43.default.string().optional(), termsOfService: import_v43.default.string().optional(), contact: c.optional(), license: p2.optional() });
277
+ var l = import_v43.default.object({ name: import_v43.default.string(), url: import_v43.default.string(), summary: import_v43.default.string().optional(), description: import_v43.default.string().optional(), variables: import_v43.default.record(import_v43.default.string(), import_v43.default.any()).optional() });
278
+ var x = import_v43.default.object({ name: import_v43.default.string(), summary: import_v43.default.string().optional(), description: import_v43.default.string().optional(), required: import_v43.default.boolean().optional(), schema: import_v43.default.any(), deprecated: import_v43.default.boolean().optional() });
279
+ var a2 = import_v43.default.object({ name: import_v43.default.string(), tags: import_v43.default.array(import_v43.default.object({ name: import_v43.default.string(), description: import_v43.default.string().optional() })).optional(), summary: import_v43.default.string().optional(), description: import_v43.default.string().optional(), externalDocs: import_v43.default.object({ description: import_v43.default.string().optional(), url: import_v43.default.string() }).optional(), params: import_v43.default.array(x).optional(), result: x, deprecated: import_v43.default.boolean().optional(), servers: import_v43.default.array(l).optional(), errors: import_v43.default.array(import_v43.default.any()).optional(), links: import_v43.default.array(import_v43.default.any()).optional(), examples: import_v43.default.array(import_v43.default.any()).optional(), paramStructure: import_v43.default.enum(["by-name", "by-position", "either"]).optional() });
280
+ var s2 = import_v43.default.object({ $ref: import_v43.default.string() });
281
+ var o = import_v43.default.object({ schemas: import_v43.default.record(import_v43.default.string(), import_v43.default.any()).optional(), links: import_v43.default.record(import_v43.default.string(), import_v43.default.any()).optional(), errors: import_v43.default.record(import_v43.default.string(), import_v43.default.any()).optional(), examples: import_v43.default.record(import_v43.default.string(), import_v43.default.any()).optional(), examplePairings: import_v43.default.record(import_v43.default.string(), import_v43.default.any()).optional(), contentDescriptors: import_v43.default.record(import_v43.default.string(), x).optional(), tags: import_v43.default.record(import_v43.default.string(), import_v43.default.any()).optional() });
282
+ var t = import_v43.default.object({ description: import_v43.default.string().optional(), url: import_v43.default.string() });
283
+ var HG = import_v43.default.object({ openrpc: import_v43.default.string(), info: d2, servers: import_v43.default.array(l).optional(), methods: import_v43.default.array(import_v43.default.union([a2, s2])), components: o.optional(), externalDocs: t.optional() });
284
+
285
+ class z extends Error {
286
+ code;
287
+ message;
288
+ originalError;
289
+ constructor(Q2, K, Z2) {
290
+ super(`JSONRPCException ${Q2}: ${K}`);
291
+ this.code = Q2;
292
+ this.message = K;
293
+ this.originalError = Z2;
294
+ }
295
+ }
296
+ var r2 = { version: B2, debug: false, dns_rebind_origin: undefined, rpcHandler: e, onError: undefined, onResponse: undefined, onRequest: undefined, service: null, cors: "*" };
297
+ async function e(Q2, K, Z2) {
298
+ let A2 = J2(Q2, Z2.method), L2 = GG(Z2.params), U2 = await A2.apply(Q2, [L2]);
299
+ return { id: K, jsonrpc: "2.0", result: U2 };
300
+ }
301
+ function J2(Q2, K) {
302
+ if (!Q2)
303
+ throw new z(w.MethodNotFound, "Invalid Method");
304
+ let Z2 = Q2[K];
305
+ if (!Z2) {
306
+ let A2 = K.split("/");
307
+ if (A2.length > 1)
308
+ return J2(Q2[A2[0]], A2.slice(1).join("/"));
309
+ throw new z(w.MethodNotFound, "Method not found");
310
+ }
311
+ return Z2;
312
+ }
313
+ function y(Q2) {
314
+ let K = b3.safeParse(Q2);
315
+ if (!K.success)
316
+ throw new z(w.InvalidRequest, "Invalid JSON RPC Version");
317
+ return K.success;
318
+ }
319
+ function GG(Q2) {
320
+ let K = D2.safeParse(Q2);
321
+ if (!K.success)
322
+ throw new z(w.InvalidParams, "Invalid Params");
323
+ return K.data;
324
+ }
325
+ function KG(Q2) {
326
+ try {
327
+ let K = typeof Q2 === "string" ? JSON.parse(Q2) : Q2;
328
+ if (typeof Q2 == "object")
329
+ return K;
330
+ throw new z(w.ParseError, "body is not an object");
331
+ } catch (K) {
332
+ throw new z(w.ParseError, "failed json parse", K);
333
+ }
334
+ }
335
+ function E2(Q2, K, Z2 = false) {
336
+ return { id: Q2, jsonrpc: "2.0", error: { code: K?.code || w.InvalidRequest, message: K?.message || "InvalidRequest", data: Z2 && K ? K.originalError ?? {} : undefined } };
337
+ }
338
+ function QG(Q2) {
339
+ let K = { ...r2, ...Q2 }, Z2 = async function(X3) {
340
+ let $2 = null;
341
+ try {
342
+ let W3 = V.safeParse(X3), Y3 = M2.safeParse(X3 || {});
343
+ if (W3.success) {
344
+ y(W3.data.jsonrpc), $2 = W3.data?.id;
345
+ try {
346
+ if (K.onRequest)
347
+ K.onRequest(W3.data);
348
+ } catch (T) {}
349
+ return await K.rpcHandler(K.service, $2, W3.data);
350
+ } else if (Y3.success) {
351
+ y(Y3.data.jsonrpc);
352
+ try {
353
+ if (K.onRequest)
354
+ K.onRequest(Y3.data);
355
+ } catch (H2) {}
356
+ } else
357
+ throw new z(w.InvalidRequest, "Invalid Request", W3.error);
358
+ } catch (W3) {
359
+ let Y3 = E2($2, W3, K.debug);
360
+ try {
361
+ if (K.onError)
362
+ K.onError(Y3);
363
+ } catch (H2) {}
364
+ return Y3;
365
+ }
366
+ };
367
+ function A2() {
368
+ return function(X3) {
369
+ return X3;
370
+ };
371
+ }
372
+ let L2 = async function({ body: X3, set: $2 }) {
373
+ $2.headers["Content-Type"] = "application/json";
374
+ try {
375
+ let W3 = KG(X3);
376
+ if (Array.isArray(W3)) {
377
+ let Y3 = [];
378
+ if (W3.length == 0)
379
+ throw new z(w.InvalidRequest, "Batch empty");
380
+ for (let H2 of W3) {
381
+ let T = await Z2(H2);
382
+ try {
383
+ if (T && K.onResponse)
384
+ K.onResponse(T);
385
+ } catch (YG) {}
386
+ if (T)
387
+ Y3.push(T);
388
+ }
389
+ return Y3;
390
+ } else {
391
+ let Y3 = await Z2(W3);
392
+ try {
393
+ if (Y3 && K.onResponse)
394
+ K.onResponse(Y3);
395
+ } catch (H2) {}
396
+ return Y3;
397
+ }
398
+ } catch (W3) {
399
+ let Y3 = E2(null, W3, K.debug);
400
+ try {
401
+ if (K.onError)
402
+ K.onError(Y3);
403
+ } catch (H2) {}
404
+ return Y3;
405
+ }
406
+ }, U2 = new import_elysia.default().options("sse", async ({ set: X3 }) => {
407
+ X3.headers.Allow = ["GET", "POST", "OPTIONS"].join(",");
408
+ }).get("sse", async function* ({ set: X3 }) {
409
+ X3.headers["Content-Type"] = "text/event-stream";
410
+ for await (let $2 of [])
411
+ yield import_elysia.sse({ data: $2, event: "message" });
412
+ yield import_elysia.sse({ event: "done" });
413
+ }).post("sse", ({ body: X3 }) => {}), k2 = new import_elysia.default().options("stream", async ({ set: X3, status: $2 }) => {
414
+ X3.headers.Allow = ["POST", "OPTIONS"].join(",");
415
+ }).post("stream", L2, {}), F2 = new import_elysia.default().get("/openrpc.json", async ({}) => {
416
+ let X3 = Object.getPrototypeOf(K.service), $2 = Object.getOwnPropertyNames(X3).filter((W3) => W3 !== "constructor" && typeof K.service[W3] === "function");
417
+ return { openrpc: I2, info: { title: K.title || "JSON RPC Server", version: K.version }, methods: $2.map((W3) => {
418
+ return { name: W3, params: [], result: { name: "", schema: "" } };
419
+ }) };
420
+ });
421
+ return new import_elysia.default({ name: "jsonRPC" }).onRequest(({ request: X3, status: $2 }) => {
422
+ if (K.dns_rebind_origin !== undefined) {
423
+ if (X3.headers.get("Origin") != K.dns_rebind_origin)
424
+ return $2(400, "Wrong domain");
425
+ }
426
+ }).use(U2).use(k2).use(F2);
427
+ }
428
+
429
+ // src/types.ts
430
+ function InputSchemaFromParameters(params) {
431
+ return {
432
+ type: "object",
433
+ properties: Object.fromEntries(Object.entries(params).map(([k2, v2]) => [
434
+ v2.name,
435
+ {
436
+ description: v2.description,
437
+ type: v2.type,
438
+ default: v2.default
439
+ }
440
+ ])),
441
+ required: Object.entries(params).map(([k2, v2]) => v2.required ? k2 : undefined).filter((v2) => v2 !== undefined)
442
+ };
443
+ }
444
+ function ToolArgsToParameterList(toolArgs, params) {
445
+ let res = [];
446
+ for (const param of params) {
447
+ res.push(toolArgs[param.name] ?? param.default ?? undefined);
448
+ }
449
+ return res;
450
+ }
451
+ function ToolDefinition(methodName, methodDescription, params) {
452
+ return (callback) => {
453
+ return {
454
+ name: methodName,
455
+ description: methodDescription,
456
+ params,
457
+ callback
458
+ };
459
+ };
460
+ }
461
+
462
+ // src/index.ts
463
+ var exports_src = {};
464
+ __export(exports_src, {
465
+ elysiaJsonRPC: () => QG,
466
+ MCPServerService: () => MCPServerService
467
+ });
468
+ module.exports = __toCommonJS(exports_src);
469
+ class MCPServerService {
470
+ serverTitle;
471
+ serverVersion;
472
+ serverInstructions;
473
+ getReferenceInstanceForToolCall;
474
+ toolsets;
475
+ constructor(serverTitle, serverVersion, serverInstructions, getReferenceInstanceForToolCall, toolsets) {
476
+ this.serverTitle = serverTitle;
477
+ this.serverVersion = serverVersion;
478
+ this.serverInstructions = serverInstructions;
479
+ this.getReferenceInstanceForToolCall = getReferenceInstanceForToolCall;
480
+ this.toolsets = toolsets;
481
+ }
482
+ initialize(params) {
483
+ return Promise.resolve({
484
+ capabilities: {
485
+ tools: {}
486
+ },
487
+ serverInfo: {
488
+ name: this.serverTitle,
489
+ version: this.serverVersion
490
+ },
491
+ protocolVersion: "2025-11-25",
492
+ instructions: this.serverInstructions
493
+ });
494
+ }
495
+ ping(params) {
496
+ return Promise.resolve({});
497
+ }
498
+ "tools/list"(params) {
499
+ return Promise.resolve({
500
+ tools: this.toolsets.flatMap((toolset) => {
501
+ return toolset.getTools().map((tool) => {
502
+ return {
503
+ name: tool.name,
504
+ description: tool.description,
505
+ inputSchema: InputSchemaFromParameters(tool.params)
506
+ };
507
+ });
508
+ })
509
+ });
510
+ }
511
+ getTool(toolName) {
512
+ for (const toolset of this.toolsets) {
513
+ const maybeTool = toolset.getTool(toolName);
514
+ if (maybeTool)
515
+ return maybeTool;
516
+ }
517
+ return null;
518
+ }
519
+ async "tools/call"(params) {
520
+ const toolName = params.name;
521
+ const toolArgs = params.arguments || {};
522
+ const tool = this.getTool(toolName);
523
+ if (!tool)
524
+ throw new _("Tool not found!", { toolName });
525
+ const referenceInstance = this.getReferenceInstanceForToolCall(toolName);
526
+ const result = await tool.callback(referenceInstance, ...ToolArgsToParameterList(toolArgs, tool.params), {});
527
+ return ((result2) => {
528
+ return {
529
+ toolUseId: "",
530
+ content: result2.content,
531
+ type: "tool_result",
532
+ isError: result2.isError || false
533
+ };
534
+ })(result);
535
+ }
536
+ "prompts/list"(params) {
537
+ throw new Error("Method not implemented.");
538
+ }
539
+ "prompts/get"(params) {
540
+ throw new Error("Method not implemented.");
541
+ }
542
+ "resources/list"(params) {
543
+ throw new Error("Method not implemented.");
544
+ }
545
+ "resources/read"(params) {
546
+ throw new Error("Method not implemented.");
547
+ }
548
+ "resources/subscribe"(params) {
549
+ throw new Error("Method not implemented.");
550
+ }
551
+ "resources/templates/list"(params) {
552
+ throw new Error("Method not implemented.");
553
+ }
554
+ }
@@ -0,0 +1,24 @@
1
+ import { type ToolDefinitionGeneric, type ToolSet } from "./types";
2
+ import { type InitializeParams, type InitializeResult, type MCPServerInterface, type PingParams, type PingResult, type PromptsGetParams, type PromptsGetResult, type PromptsListParams, type PromptsListResult, type ResourcesListParams, type ResourcesListResult, type ResourcesReadParams, type ResourcesReadResult, type ResourcesSubscribeParams, type ResourcesSubscribeResult, type ResourcesTemplatesListParams, type ResourcesTemplatesListResult, type ToolsCallParams, type ToolsCallResult, type ToolsListParams, type ToolsListResult } from "elysia-jsonrpc/mcp";
3
+ import elysiaJsonRPC from "elysia-jsonrpc";
4
+ export { elysiaJsonRPC };
5
+ export type ReferenceForToolCallFunction = (toolName: string) => any;
6
+ export declare class MCPServerService implements MCPServerInterface {
7
+ readonly serverTitle: string;
8
+ readonly serverVersion: string;
9
+ readonly serverInstructions: string;
10
+ readonly getReferenceInstanceForToolCall: ReferenceForToolCallFunction;
11
+ readonly toolsets: ToolSet[];
12
+ constructor(serverTitle: string, serverVersion: string, serverInstructions: string, getReferenceInstanceForToolCall: ReferenceForToolCallFunction, toolsets: ToolSet[]);
13
+ initialize(params: InitializeParams): Promise<InitializeResult>;
14
+ ping(params: PingParams): Promise<PingResult>;
15
+ "tools/list"(params: ToolsListParams): Promise<ToolsListResult>;
16
+ getTool(toolName: string): ToolDefinitionGeneric | null;
17
+ "tools/call"(params: ToolsCallParams): Promise<ToolsCallResult>;
18
+ "prompts/list"(params: PromptsListParams): Promise<PromptsListResult>;
19
+ "prompts/get"(params: PromptsGetParams): Promise<PromptsGetResult>;
20
+ "resources/list"(params: ResourcesListParams): Promise<ResourcesListResult>;
21
+ "resources/read"(params: ResourcesReadParams): Promise<ResourcesReadResult>;
22
+ "resources/subscribe"(params: ResourcesSubscribeParams): Promise<ResourcesSubscribeResult>;
23
+ "resources/templates/list"(params: ResourcesTemplatesListParams): Promise<ResourcesTemplatesListResult>;
24
+ }