mcp-use 1.9.0 → 1.9.1-canary.1

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 (108) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/chunk-2EYAMIT3.js +76 -0
  3. package/dist/chunk-33U4IA4N.js +337 -0
  4. package/dist/chunk-362PI25Z.js +110 -0
  5. package/dist/chunk-LWVK6RXA.js +30 -0
  6. package/dist/context-storage-NA4MHWOZ.js +13 -0
  7. package/dist/conversion-5MA4VY3B.js +7 -0
  8. package/dist/conversion-OTRZZBUU.js +7 -0
  9. package/dist/src/server/context-storage.d.ts +8 -1
  10. package/dist/src/server/context-storage.d.ts.map +1 -1
  11. package/dist/src/server/endpoints/index.d.ts +7 -0
  12. package/dist/src/server/endpoints/index.d.ts.map +1 -0
  13. package/dist/src/server/endpoints/mount-mcp.d.ts +21 -0
  14. package/dist/src/server/endpoints/mount-mcp.d.ts.map +1 -0
  15. package/dist/src/server/index.cjs +4180 -3956
  16. package/dist/src/server/index.d.ts +4 -3
  17. package/dist/src/server/index.d.ts.map +1 -1
  18. package/dist/src/server/index.js +3590 -3040
  19. package/dist/src/server/inspector/index.d.ts +5 -0
  20. package/dist/src/server/inspector/index.d.ts.map +1 -0
  21. package/dist/src/server/inspector/mount.d.ts +33 -0
  22. package/dist/src/server/inspector/mount.d.ts.map +1 -0
  23. package/dist/src/server/logging.d.ts.map +1 -1
  24. package/dist/src/server/mcp-server.d.ts +91 -770
  25. package/dist/src/server/mcp-server.d.ts.map +1 -1
  26. package/dist/src/server/notifications/index.d.ts +7 -0
  27. package/dist/src/server/notifications/index.d.ts.map +1 -0
  28. package/dist/src/server/notifications/notification-registration.d.ts +82 -0
  29. package/dist/src/server/notifications/notification-registration.d.ts.map +1 -0
  30. package/dist/src/server/oauth/index.d.ts +1 -0
  31. package/dist/src/server/oauth/index.d.ts.map +1 -1
  32. package/dist/src/server/oauth/setup.d.ts +28 -0
  33. package/dist/src/server/oauth/setup.d.ts.map +1 -0
  34. package/dist/src/server/prompts/conversion.d.ts +22 -0
  35. package/dist/src/server/prompts/conversion.d.ts.map +1 -0
  36. package/dist/src/server/prompts/index.d.ts +60 -0
  37. package/dist/src/server/prompts/index.d.ts.map +1 -0
  38. package/dist/src/server/resources/conversion.d.ts +20 -0
  39. package/dist/src/server/resources/conversion.d.ts.map +1 -0
  40. package/dist/src/server/resources/index.d.ts +117 -0
  41. package/dist/src/server/resources/index.d.ts.map +1 -0
  42. package/dist/src/server/resources/subscriptions.d.ts +54 -0
  43. package/dist/src/server/resources/subscriptions.d.ts.map +1 -0
  44. package/dist/src/server/roots/index.d.ts +7 -0
  45. package/dist/src/server/roots/index.d.ts.map +1 -0
  46. package/dist/src/server/roots/roots-registration.d.ts +56 -0
  47. package/dist/src/server/roots/roots-registration.d.ts.map +1 -0
  48. package/dist/src/server/sessions/index.d.ts +6 -0
  49. package/dist/src/server/sessions/index.d.ts.map +1 -0
  50. package/dist/src/server/sessions/notifications.d.ts +25 -0
  51. package/dist/src/server/sessions/notifications.d.ts.map +1 -0
  52. package/dist/src/server/sessions/session-manager.d.ts +47 -0
  53. package/dist/src/server/sessions/session-manager.d.ts.map +1 -0
  54. package/dist/src/server/tools/index.d.ts +10 -0
  55. package/dist/src/server/tools/index.d.ts.map +1 -0
  56. package/dist/src/server/tools/schema-helpers.d.ts +54 -0
  57. package/dist/src/server/tools/schema-helpers.d.ts.map +1 -0
  58. package/dist/src/server/tools/tool-execution-helpers.d.ts +110 -0
  59. package/dist/src/server/tools/tool-execution-helpers.d.ts.map +1 -0
  60. package/dist/src/server/tools/tool-registration.d.ts +85 -0
  61. package/dist/src/server/tools/tool-registration.d.ts.map +1 -0
  62. package/dist/src/server/types/common.d.ts +24 -0
  63. package/dist/src/server/types/common.d.ts.map +1 -1
  64. package/dist/src/server/types/index.d.ts +5 -4
  65. package/dist/src/server/types/index.d.ts.map +1 -1
  66. package/dist/src/server/types/prompt.d.ts +61 -6
  67. package/dist/src/server/types/prompt.d.ts.map +1 -1
  68. package/dist/src/server/types/resource.d.ts +83 -8
  69. package/dist/src/server/types/resource.d.ts.map +1 -1
  70. package/dist/src/server/types/tool-context.d.ts +252 -0
  71. package/dist/src/server/types/tool-context.d.ts.map +1 -0
  72. package/dist/src/server/types/tool.d.ts +62 -5
  73. package/dist/src/server/types/tool.d.ts.map +1 -1
  74. package/dist/src/server/utils/hono-proxy.d.ts +21 -0
  75. package/dist/src/server/utils/hono-proxy.d.ts.map +1 -0
  76. package/dist/src/server/utils/index.d.ts +3 -0
  77. package/dist/src/server/utils/index.d.ts.map +1 -1
  78. package/dist/src/server/utils/jsonrpc-helpers.d.ts +94 -0
  79. package/dist/src/server/utils/jsonrpc-helpers.d.ts.map +1 -0
  80. package/dist/src/server/utils/response-helpers.d.ts +163 -7
  81. package/dist/src/server/utils/response-helpers.d.ts.map +1 -1
  82. package/dist/src/server/utils/server-helpers.d.ts +78 -0
  83. package/dist/src/server/utils/server-helpers.d.ts.map +1 -0
  84. package/dist/src/server/utils/server-lifecycle.d.ts +52 -0
  85. package/dist/src/server/utils/server-lifecycle.d.ts.map +1 -0
  86. package/dist/src/server/utils/session-helpers.d.ts +55 -0
  87. package/dist/src/server/utils/session-helpers.d.ts.map +1 -0
  88. package/dist/src/server/widgets/index.d.ts +30 -0
  89. package/dist/src/server/widgets/index.d.ts.map +1 -0
  90. package/dist/src/server/widgets/mcp-ui-adapter.d.ts.map +1 -0
  91. package/dist/src/server/widgets/mount-widgets-dev.d.ts +28 -0
  92. package/dist/src/server/widgets/mount-widgets-dev.d.ts.map +1 -0
  93. package/dist/src/server/widgets/mount-widgets-production.d.ts +27 -0
  94. package/dist/src/server/widgets/mount-widgets-production.d.ts.map +1 -0
  95. package/dist/src/server/widgets/setup-widget-routes.d.ts +23 -0
  96. package/dist/src/server/widgets/setup-widget-routes.d.ts.map +1 -0
  97. package/dist/src/server/widgets/ui-resource-registration.d.ts +75 -0
  98. package/dist/src/server/widgets/ui-resource-registration.d.ts.map +1 -0
  99. package/dist/src/server/widgets/widget-helpers.d.ts +277 -0
  100. package/dist/src/server/widgets/widget-helpers.d.ts.map +1 -0
  101. package/dist/src/server/widgets/widget-types.d.ts +49 -0
  102. package/dist/src/server/widgets/widget-types.d.ts.map +1 -0
  103. package/dist/tool-execution-helpers-BQJTPWPN.js +29 -0
  104. package/package.json +6 -5
  105. package/dist/chunk-F4UHAA5L.js +0 -854
  106. package/dist/oauth-U4NNKN4B.js +0 -30
  107. package/dist/src/server/adapters/mcp-ui-adapter.d.ts.map +0 -1
  108. /package/dist/src/server/{adapters → widgets}/mcp-ui-adapter.d.ts +0 -0
@@ -0,0 +1,76 @@
1
+ import {
2
+ __name
3
+ } from "./chunk-3GQAWCBQ.js";
4
+
5
+ // src/server/prompts/conversion.ts
6
+ function isGetPromptResult(result) {
7
+ return "messages" in result && Array.isArray(result.messages);
8
+ }
9
+ __name(isGetPromptResult, "isGetPromptResult");
10
+ function convertToolResultToPromptResult(result) {
11
+ if (isGetPromptResult(result)) {
12
+ return result;
13
+ }
14
+ const messages = [];
15
+ if (result.content && result.content.length > 0) {
16
+ for (const content of result.content) {
17
+ if (content.type === "text") {
18
+ const textContent = content;
19
+ messages.push({
20
+ role: "user",
21
+ content: {
22
+ type: "text",
23
+ text: textContent.text
24
+ }
25
+ });
26
+ } else if (content.type === "image") {
27
+ const imageContent = content;
28
+ messages.push({
29
+ role: "user",
30
+ content: {
31
+ type: "image",
32
+ data: imageContent.data,
33
+ mimeType: imageContent.mimeType || "image/png"
34
+ }
35
+ });
36
+ } else if (content.type === "resource") {
37
+ const resourceContent = content;
38
+ const resourceData = resourceContent.resource;
39
+ const embeddedResource = {
40
+ type: "resource",
41
+ resource: {
42
+ uri: resourceData.uri,
43
+ mimeType: resourceData.mimeType
44
+ }
45
+ };
46
+ if (resourceData.text) {
47
+ embeddedResource.resource.text = resourceData.text;
48
+ } else if (resourceData.blob) {
49
+ embeddedResource.resource.blob = resourceData.blob;
50
+ }
51
+ messages.push({
52
+ role: "user",
53
+ content: embeddedResource
54
+ });
55
+ }
56
+ }
57
+ }
58
+ if (messages.length === 0) {
59
+ messages.push({
60
+ role: "user",
61
+ content: {
62
+ type: "text",
63
+ text: ""
64
+ }
65
+ });
66
+ }
67
+ return {
68
+ messages,
69
+ description: result._meta?.description
70
+ };
71
+ }
72
+ __name(convertToolResultToPromptResult, "convertToolResultToPromptResult");
73
+
74
+ export {
75
+ convertToolResultToPromptResult
76
+ };
@@ -0,0 +1,337 @@
1
+ import {
2
+ ElicitationValidationError
3
+ } from "./chunk-KUEVOU4M.js";
4
+ import {
5
+ generateUUID
6
+ } from "./chunk-MTHLLDCX.js";
7
+ import {
8
+ __name
9
+ } from "./chunk-3GQAWCBQ.js";
10
+
11
+ // src/server/tools/tool-execution-helpers.ts
12
+ import { toJsonSchemaCompat } from "@modelcontextprotocol/sdk/server/zod-json-schema-compat.js";
13
+ function findSessionContext(sessions, initialRequestContext, extraProgressToken, extraSendNotification) {
14
+ let requestContext = initialRequestContext;
15
+ let session;
16
+ let progressToken = extraProgressToken;
17
+ let sendNotification = extraSendNotification;
18
+ if (!requestContext) {
19
+ for (const [, s] of sessions.entries()) {
20
+ if (s.context) {
21
+ requestContext = s.context;
22
+ break;
23
+ }
24
+ }
25
+ }
26
+ if (!progressToken || !sendNotification) {
27
+ if (requestContext) {
28
+ for (const [, s] of sessions.entries()) {
29
+ if (s.context === requestContext) {
30
+ session = s;
31
+ break;
32
+ }
33
+ }
34
+ } else {
35
+ const firstSession = sessions.values().next().value;
36
+ if (firstSession) {
37
+ session = firstSession;
38
+ }
39
+ }
40
+ if (session) {
41
+ if (!progressToken && session.progressToken) {
42
+ progressToken = session.progressToken;
43
+ }
44
+ if (!sendNotification && session.sendNotification) {
45
+ sendNotification = session.sendNotification;
46
+ }
47
+ }
48
+ }
49
+ return { requestContext, session, progressToken, sendNotification };
50
+ }
51
+ __name(findSessionContext, "findSessionContext");
52
+ async function sendProgressNotification(sendNotification, progressToken, progress, total, message) {
53
+ if (sendNotification && progressToken !== void 0) {
54
+ try {
55
+ await sendNotification({
56
+ method: "notifications/progress",
57
+ params: {
58
+ progressToken,
59
+ progress,
60
+ total,
61
+ message
62
+ }
63
+ });
64
+ } catch {
65
+ }
66
+ }
67
+ }
68
+ __name(sendProgressNotification, "sendProgressNotification");
69
+ async function withTimeout(promise, timeout, errorMessage) {
70
+ if (timeout && timeout !== Infinity) {
71
+ const timeoutPromise = new Promise((_, reject) => {
72
+ setTimeout(() => reject(new Error(errorMessage)), timeout);
73
+ });
74
+ return await Promise.race([promise, timeoutPromise]);
75
+ }
76
+ return await promise;
77
+ }
78
+ __name(withTimeout, "withTimeout");
79
+ function parseElicitParams(messageOrParams, schemaOrUrlOrOptions, maybeOptions) {
80
+ let sdkParams;
81
+ let zodSchema = null;
82
+ let options;
83
+ if (typeof messageOrParams === "string") {
84
+ const message = messageOrParams;
85
+ if (typeof schemaOrUrlOrOptions === "string") {
86
+ options = maybeOptions;
87
+ const elicitationId = `elicit-${generateUUID()}`;
88
+ sdkParams = {
89
+ mode: "url",
90
+ message,
91
+ url: schemaOrUrlOrOptions,
92
+ elicitationId
93
+ };
94
+ } else if (schemaOrUrlOrOptions && typeof schemaOrUrlOrOptions === "object" && "_def" in schemaOrUrlOrOptions) {
95
+ options = maybeOptions;
96
+ zodSchema = schemaOrUrlOrOptions;
97
+ const jsonSchema = toJsonSchemaCompat(schemaOrUrlOrOptions);
98
+ sdkParams = {
99
+ mode: "form",
100
+ message,
101
+ requestedSchema: jsonSchema
102
+ };
103
+ } else {
104
+ throw new Error(
105
+ "Invalid elicit signature: second parameter must be a Zod schema or URL string"
106
+ );
107
+ }
108
+ } else {
109
+ options = schemaOrUrlOrOptions;
110
+ const params = messageOrParams;
111
+ if (params.mode === "url") {
112
+ const elicitationId = `elicit-${generateUUID()}`;
113
+ sdkParams = {
114
+ mode: "url",
115
+ message: params.message,
116
+ url: params.url,
117
+ elicitationId
118
+ };
119
+ } else {
120
+ sdkParams = {
121
+ mode: "form",
122
+ message: params.message,
123
+ requestedSchema: params.requestedSchema
124
+ };
125
+ }
126
+ }
127
+ return { sdkParams, zodSchema, options };
128
+ }
129
+ __name(parseElicitParams, "parseElicitParams");
130
+ function createSampleMethod(createMessage, progressToken, sendNotification) {
131
+ return async (promptOrParams, options) => {
132
+ let sampleParams;
133
+ if (typeof promptOrParams === "string") {
134
+ sampleParams = {
135
+ messages: [
136
+ {
137
+ role: "user",
138
+ content: {
139
+ type: "text",
140
+ text: promptOrParams
141
+ }
142
+ }
143
+ ],
144
+ maxTokens: options?.maxTokens || 1e3,
145
+ ...options?.modelPreferences && {
146
+ modelPreferences: options.modelPreferences
147
+ },
148
+ ...options?.systemPrompt && { systemPrompt: options.systemPrompt },
149
+ ...options?.temperature !== void 0 && {
150
+ temperature: options.temperature
151
+ },
152
+ ...options?.stopSequences && { stopSequences: options.stopSequences },
153
+ ...options?.metadata && { metadata: options.metadata }
154
+ };
155
+ } else {
156
+ sampleParams = promptOrParams;
157
+ }
158
+ const { timeout, progressIntervalMs = 5e3, onProgress } = options ?? {};
159
+ let progressCount = 0;
160
+ let completed = false;
161
+ let progressInterval = null;
162
+ if (progressToken !== void 0 && sendNotification) {
163
+ progressInterval = setInterval(async () => {
164
+ if (completed) return;
165
+ progressCount++;
166
+ const progressData = {
167
+ progress: progressCount,
168
+ total: void 0,
169
+ message: `Waiting for LLM response... (${progressCount * Math.round(progressIntervalMs / 1e3)}s elapsed)`
170
+ };
171
+ if (onProgress) {
172
+ try {
173
+ onProgress(progressData);
174
+ } catch {
175
+ }
176
+ }
177
+ await sendProgressNotification(
178
+ sendNotification,
179
+ progressToken,
180
+ progressData.progress,
181
+ progressData.total,
182
+ progressData.message
183
+ );
184
+ }, progressIntervalMs);
185
+ }
186
+ try {
187
+ console.log("[SAMPLING DEBUG] Calling createMessage...");
188
+ const sdkTimeout = timeout && timeout !== Infinity ? timeout : 2147483647;
189
+ const samplePromise = createMessage(sampleParams, {
190
+ timeout: sdkTimeout
191
+ });
192
+ console.log("[SAMPLING DEBUG] Waiting for response...");
193
+ const result = await withTimeout(
194
+ samplePromise,
195
+ timeout,
196
+ `Sampling timed out after ${timeout}ms`
197
+ );
198
+ console.log("[SAMPLING DEBUG] Got result:", result);
199
+ return result;
200
+ } catch (error) {
201
+ console.error("[SAMPLING DEBUG] Error during sampling:", error);
202
+ throw error;
203
+ } finally {
204
+ completed = true;
205
+ if (progressInterval) {
206
+ clearInterval(progressInterval);
207
+ }
208
+ }
209
+ };
210
+ }
211
+ __name(createSampleMethod, "createSampleMethod");
212
+ function createElicitMethod(elicitInput) {
213
+ return async (messageOrParams, schemaOrUrlOrOptions, maybeOptions) => {
214
+ const { sdkParams, zodSchema, options } = parseElicitParams(
215
+ messageOrParams,
216
+ schemaOrUrlOrOptions,
217
+ maybeOptions
218
+ );
219
+ const { timeout } = options ?? {};
220
+ const sdkTimeout = timeout && timeout !== Infinity ? timeout : 2147483647;
221
+ const result = await elicitInput(sdkParams, { timeout: sdkTimeout });
222
+ if (zodSchema && result.action === "accept" && result.data) {
223
+ try {
224
+ const validatedData = zodSchema.parse(result.data);
225
+ return {
226
+ ...result,
227
+ data: validatedData
228
+ };
229
+ } catch (error) {
230
+ throw new ElicitationValidationError(
231
+ `Elicitation data validation failed: ${error.message}`,
232
+ error
233
+ );
234
+ }
235
+ }
236
+ return result;
237
+ };
238
+ }
239
+ __name(createElicitMethod, "createElicitMethod");
240
+ function createReportProgressMethod(progressToken, sendNotification) {
241
+ if (progressToken !== void 0 && sendNotification) {
242
+ return async (progress, total, message) => {
243
+ await sendProgressNotification(
244
+ sendNotification,
245
+ progressToken,
246
+ progress,
247
+ total,
248
+ message
249
+ );
250
+ };
251
+ }
252
+ return void 0;
253
+ }
254
+ __name(createReportProgressMethod, "createReportProgressMethod");
255
+ var LOG_LEVELS = {
256
+ debug: 0,
257
+ info: 1,
258
+ notice: 2,
259
+ warning: 3,
260
+ error: 4,
261
+ critical: 5,
262
+ alert: 6,
263
+ emergency: 7
264
+ };
265
+ var VALID_LOG_LEVELS = [
266
+ "debug",
267
+ "info",
268
+ "notice",
269
+ "warning",
270
+ "error",
271
+ "critical",
272
+ "alert",
273
+ "emergency"
274
+ ];
275
+ function isValidLogLevel(level) {
276
+ return VALID_LOG_LEVELS.includes(level);
277
+ }
278
+ __name(isValidLogLevel, "isValidLogLevel");
279
+ function shouldLogMessage(messageLevel, minLevel) {
280
+ if (!minLevel) {
281
+ return true;
282
+ }
283
+ if (!isValidLogLevel(messageLevel) || !isValidLogLevel(minLevel)) {
284
+ return true;
285
+ }
286
+ return LOG_LEVELS[messageLevel] >= LOG_LEVELS[minLevel];
287
+ }
288
+ __name(shouldLogMessage, "shouldLogMessage");
289
+ function createLogMethod(sendNotification, minLogLevel) {
290
+ if (!sendNotification) {
291
+ return void 0;
292
+ }
293
+ return async (level, message, logger) => {
294
+ if (!shouldLogMessage(level, minLogLevel)) {
295
+ return;
296
+ }
297
+ await sendNotification({
298
+ method: "notifications/message",
299
+ params: {
300
+ level,
301
+ data: message,
302
+ logger: logger || "tool"
303
+ }
304
+ });
305
+ };
306
+ }
307
+ __name(createLogMethod, "createLogMethod");
308
+ function createEnhancedContext(baseContext, createMessage, elicitInput, progressToken, sendNotification, minLogLevel) {
309
+ const enhancedContext = baseContext ? Object.create(baseContext) : {};
310
+ enhancedContext.sample = createSampleMethod(
311
+ createMessage,
312
+ progressToken,
313
+ sendNotification
314
+ );
315
+ enhancedContext.elicit = createElicitMethod(elicitInput);
316
+ enhancedContext.reportProgress = createReportProgressMethod(
317
+ progressToken,
318
+ sendNotification
319
+ );
320
+ enhancedContext.log = createLogMethod(sendNotification, minLogLevel);
321
+ return enhancedContext;
322
+ }
323
+ __name(createEnhancedContext, "createEnhancedContext");
324
+
325
+ export {
326
+ findSessionContext,
327
+ sendProgressNotification,
328
+ withTimeout,
329
+ parseElicitParams,
330
+ createSampleMethod,
331
+ createElicitMethod,
332
+ createReportProgressMethod,
333
+ VALID_LOG_LEVELS,
334
+ isValidLogLevel,
335
+ shouldLogMessage,
336
+ createEnhancedContext
337
+ };
@@ -0,0 +1,110 @@
1
+ import {
2
+ __name
3
+ } from "./chunk-3GQAWCBQ.js";
4
+
5
+ // src/server/resources/conversion.ts
6
+ function isReadResourceResult(result) {
7
+ return "contents" in result && Array.isArray(result.contents);
8
+ }
9
+ __name(isReadResourceResult, "isReadResourceResult");
10
+ function extractMimeType(result) {
11
+ if (result._meta && typeof result._meta === "object") {
12
+ const meta = result._meta;
13
+ if (meta.mimeType && typeof meta.mimeType === "string") {
14
+ return meta.mimeType;
15
+ }
16
+ }
17
+ if (result.content && result.content.length > 0) {
18
+ const firstContent = result.content[0];
19
+ if (firstContent.type === "image") {
20
+ return firstContent.mimeType || "image/png";
21
+ }
22
+ if (firstContent.type === "text") {
23
+ return "text/plain";
24
+ }
25
+ if (firstContent.type === "resource") {
26
+ const resourceData = firstContent.resource;
27
+ return resourceData?.mimeType || "application/octet-stream";
28
+ }
29
+ }
30
+ return "text/plain";
31
+ }
32
+ __name(extractMimeType, "extractMimeType");
33
+ function isBinaryContent(result) {
34
+ if (result._meta && typeof result._meta === "object") {
35
+ const meta = result._meta;
36
+ return meta.isBinary === true || meta.isImage === true;
37
+ }
38
+ return false;
39
+ }
40
+ __name(isBinaryContent, "isBinaryContent");
41
+ function convertToolResultToResourceResult(uri, result) {
42
+ if (isReadResourceResult(result)) {
43
+ return result;
44
+ }
45
+ const mimeType = extractMimeType(result);
46
+ const isBinary = isBinaryContent(result);
47
+ const contents = [];
48
+ if (result.content && result.content.length > 0) {
49
+ for (const content of result.content) {
50
+ if (content.type === "text") {
51
+ const textContent = content;
52
+ if (isBinary) {
53
+ contents.push({
54
+ uri,
55
+ mimeType,
56
+ blob: textContent.text
57
+ });
58
+ } else {
59
+ contents.push({
60
+ uri,
61
+ mimeType,
62
+ text: textContent.text
63
+ });
64
+ }
65
+ } else if (content.type === "image") {
66
+ const imageContent = content;
67
+ contents.push({
68
+ uri,
69
+ mimeType: imageContent.mimeType || mimeType,
70
+ blob: imageContent.data
71
+ });
72
+ } else if (content.type === "resource") {
73
+ const resourceContent = content;
74
+ const resourceData = resourceContent.resource;
75
+ if (resourceData.text !== void 0) {
76
+ contents.push({
77
+ uri: resourceData.uri,
78
+ mimeType: resourceData.mimeType || mimeType,
79
+ text: resourceData.text
80
+ });
81
+ } else if (resourceData.blob !== void 0) {
82
+ contents.push({
83
+ uri: resourceData.uri,
84
+ mimeType: resourceData.mimeType || mimeType,
85
+ blob: resourceData.blob
86
+ });
87
+ } else {
88
+ contents.push({
89
+ uri: resourceData.uri,
90
+ mimeType: resourceData.mimeType || mimeType,
91
+ text: ""
92
+ });
93
+ }
94
+ }
95
+ }
96
+ }
97
+ if (contents.length === 0) {
98
+ contents.push({
99
+ uri,
100
+ mimeType: "text/plain",
101
+ text: ""
102
+ });
103
+ }
104
+ return { contents };
105
+ }
106
+ __name(convertToolResultToResourceResult, "convertToolResultToResourceResult");
107
+
108
+ export {
109
+ convertToolResultToResourceResult
110
+ };
@@ -0,0 +1,30 @@
1
+ import {
2
+ __name
3
+ } from "./chunk-3GQAWCBQ.js";
4
+
5
+ // src/server/context-storage.ts
6
+ import { AsyncLocalStorage } from "async_hooks";
7
+ var requestContextStorage = new AsyncLocalStorage();
8
+ async function runWithContext(context, fn, sessionId) {
9
+ return requestContextStorage.run({ honoContext: context, sessionId }, fn);
10
+ }
11
+ __name(runWithContext, "runWithContext");
12
+ function getRequestContext() {
13
+ return requestContextStorage.getStore()?.honoContext;
14
+ }
15
+ __name(getRequestContext, "getRequestContext");
16
+ function getSessionId() {
17
+ return requestContextStorage.getStore()?.sessionId;
18
+ }
19
+ __name(getSessionId, "getSessionId");
20
+ function hasRequestContext() {
21
+ return requestContextStorage.getStore() !== void 0;
22
+ }
23
+ __name(hasRequestContext, "hasRequestContext");
24
+
25
+ export {
26
+ runWithContext,
27
+ getRequestContext,
28
+ getSessionId,
29
+ hasRequestContext
30
+ };
@@ -0,0 +1,13 @@
1
+ import {
2
+ getRequestContext,
3
+ getSessionId,
4
+ hasRequestContext,
5
+ runWithContext
6
+ } from "./chunk-LWVK6RXA.js";
7
+ import "./chunk-3GQAWCBQ.js";
8
+ export {
9
+ getRequestContext,
10
+ getSessionId,
11
+ hasRequestContext,
12
+ runWithContext
13
+ };
@@ -0,0 +1,7 @@
1
+ import {
2
+ convertToolResultToResourceResult
3
+ } from "./chunk-362PI25Z.js";
4
+ import "./chunk-3GQAWCBQ.js";
5
+ export {
6
+ convertToolResultToResourceResult
7
+ };
@@ -0,0 +1,7 @@
1
+ import {
2
+ convertToolResultToPromptResult
3
+ } from "./chunk-2EYAMIT3.js";
4
+ import "./chunk-3GQAWCBQ.js";
5
+ export {
6
+ convertToolResultToPromptResult
7
+ };
@@ -15,6 +15,7 @@ import type { Context } from "hono";
15
15
  *
16
16
  * @param context - Hono Context object to store
17
17
  * @param fn - Function to execute within this context
18
+ * @param sessionId - Optional session ID to store with the context
18
19
  * @returns Promise resolving to the function's return value
19
20
  *
20
21
  * @example
@@ -28,7 +29,7 @@ import type { Context } from "hono";
28
29
  * });
29
30
  * ```
30
31
  */
31
- export declare function runWithContext<T>(context: Context, fn: () => Promise<T>): Promise<T>;
32
+ export declare function runWithContext<T>(context: Context, fn: () => Promise<T>, sessionId?: string): Promise<T>;
32
33
  /**
33
34
  * Get the current request context from AsyncLocalStorage
34
35
  *
@@ -45,6 +46,12 @@ export declare function runWithContext<T>(context: Context, fn: () => Promise<T>
45
46
  * ```
46
47
  */
47
48
  export declare function getRequestContext(): Context | undefined;
49
+ /**
50
+ * Get the current session ID from AsyncLocalStorage
51
+ *
52
+ * @returns The session ID for the current async operation, or undefined if not in a request context
53
+ */
54
+ export declare function getSessionId(): string | undefined;
48
55
  /**
49
56
  * Check if currently executing within a request context
50
57
  *
@@ -1 +1 @@
1
- {"version":3,"file":"context-storage.d.ts","sourceRoot":"","sources":["../../../src/server/context-storage.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAQpC;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,cAAc,CAAC,CAAC,EACpC,OAAO,EAAE,OAAO,EAChB,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GACnB,OAAO,CAAC,CAAC,CAAC,CAEZ;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,GAAG,SAAS,CAEvD;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,CAE3C"}
1
+ {"version":3,"file":"context-storage.d.ts","sourceRoot":"","sources":["../../../src/server/context-storage.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAgBpC;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,cAAc,CAAC,CAAC,EACpC,OAAO,EAAE,OAAO,EAChB,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,CAAC,CAAC,CAEZ;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,GAAG,SAAS,CAEvD;AAED;;;;GAIG;AACH,wBAAgB,YAAY,IAAI,MAAM,GAAG,SAAS,CAEjD;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,CAE3C"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * MCP Endpoints Module
3
+ *
4
+ * Exports endpoint mounting function.
5
+ */
6
+ export { mountMcp } from "./mount-mcp.js";
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/server/endpoints/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * MCP Endpoint Mounting
3
+ *
4
+ * Main orchestration function for mounting MCP endpoints at /mcp and /sse.
5
+ * Uses a single native SDK transport instance to handle all sessions.
6
+ */
7
+ import type { Hono as HonoType } from "hono";
8
+ import type { SessionData } from "../sessions/index.js";
9
+ import type { ServerConfig } from "../types/index.js";
10
+ /**
11
+ * Mount MCP server endpoints at /mcp and /sse
12
+ *
13
+ * Uses FetchStreamableHTTPServerTransport (Web Standard APIs) for proper bidirectional communication.
14
+ * Follows the official Hono example from PR #1209.
15
+ */
16
+ export declare function mountMcp(app: HonoType, mcpServerInstance: any, // The McpServer instance with getServerForSession() method
17
+ sessions: Map<string, SessionData>, config: ServerConfig, isProductionMode: boolean): Promise<{
18
+ mcpMounted: boolean;
19
+ idleCleanupInterval?: NodeJS.Timeout;
20
+ }>;
21
+ //# sourceMappingURL=mount-mcp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mount-mcp.d.ts","sourceRoot":"","sources":["../../../../src/server/endpoints/mount-mcp.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAW,IAAI,IAAI,QAAQ,EAAE,MAAM,MAAM,CAAC;AACtD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAExD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGtD;;;;;GAKG;AACH,wBAAsB,QAAQ,CAC5B,GAAG,EAAE,QAAQ,EACb,iBAAiB,EAAE,GAAG,EAAE,2DAA2D;AACnF,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,EAClC,MAAM,EAAE,YAAY,EACpB,gBAAgB,EAAE,OAAO,GACxB,OAAO,CAAC;IAAE,UAAU,EAAE,OAAO,CAAC;IAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC,OAAO,CAAA;CAAE,CAAC,CAkFxE"}