mcp-use 1.9.0-canary.3 → 1.9.1-canary.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.
- package/dist/.tsbuildinfo +1 -1
- package/dist/chunk-2EYAMIT3.js +76 -0
- package/dist/chunk-362PI25Z.js +110 -0
- package/dist/chunk-5URNFWCQ.js +25 -0
- package/dist/chunk-KHTTBIRP.js +280 -0
- package/dist/context-storage-TXQ4DVSS.js +11 -0
- package/dist/conversion-5MA4VY3B.js +7 -0
- package/dist/conversion-OTRZZBUU.js +7 -0
- package/dist/src/server/endpoints/index.d.ts +7 -0
- package/dist/src/server/endpoints/index.d.ts.map +1 -0
- package/dist/src/server/endpoints/mount-mcp.d.ts +21 -0
- package/dist/src/server/endpoints/mount-mcp.d.ts.map +1 -0
- package/dist/src/server/index.cjs +3738 -3940
- package/dist/src/server/index.d.ts +4 -3
- package/dist/src/server/index.d.ts.map +1 -1
- package/dist/src/server/index.js +3223 -3039
- package/dist/src/server/inspector/index.d.ts +5 -0
- package/dist/src/server/inspector/index.d.ts.map +1 -0
- package/dist/src/server/inspector/mount.d.ts +33 -0
- package/dist/src/server/inspector/mount.d.ts.map +1 -0
- package/dist/src/server/logging.d.ts.map +1 -1
- package/dist/src/server/mcp-server.d.ts +71 -780
- package/dist/src/server/mcp-server.d.ts.map +1 -1
- package/dist/src/server/notifications/index.d.ts +7 -0
- package/dist/src/server/notifications/index.d.ts.map +1 -0
- package/dist/src/server/notifications/notification-registration.d.ts +82 -0
- package/dist/src/server/notifications/notification-registration.d.ts.map +1 -0
- package/dist/src/server/oauth/index.d.ts +1 -0
- package/dist/src/server/oauth/index.d.ts.map +1 -1
- package/dist/src/server/oauth/setup.d.ts +28 -0
- package/dist/src/server/oauth/setup.d.ts.map +1 -0
- package/dist/src/server/prompts/conversion.d.ts +22 -0
- package/dist/src/server/prompts/conversion.d.ts.map +1 -0
- package/dist/src/server/prompts/index.d.ts +60 -0
- package/dist/src/server/prompts/index.d.ts.map +1 -0
- package/dist/src/server/resources/conversion.d.ts +20 -0
- package/dist/src/server/resources/conversion.d.ts.map +1 -0
- package/dist/src/server/resources/index.d.ts +116 -0
- package/dist/src/server/resources/index.d.ts.map +1 -0
- package/dist/src/server/roots/index.d.ts +7 -0
- package/dist/src/server/roots/index.d.ts.map +1 -0
- package/dist/src/server/roots/roots-registration.d.ts +56 -0
- package/dist/src/server/roots/roots-registration.d.ts.map +1 -0
- package/dist/src/server/sessions/index.d.ts +6 -0
- package/dist/src/server/sessions/index.d.ts.map +1 -0
- package/dist/src/server/sessions/notifications.d.ts +25 -0
- package/dist/src/server/sessions/notifications.d.ts.map +1 -0
- package/dist/src/server/sessions/session-manager.d.ts +41 -0
- package/dist/src/server/sessions/session-manager.d.ts.map +1 -0
- package/dist/src/server/tools/index.d.ts +10 -0
- package/dist/src/server/tools/index.d.ts.map +1 -0
- package/dist/src/server/tools/schema-helpers.d.ts +54 -0
- package/dist/src/server/tools/schema-helpers.d.ts.map +1 -0
- package/dist/src/server/tools/tool-execution-helpers.d.ts +97 -0
- package/dist/src/server/tools/tool-execution-helpers.d.ts.map +1 -0
- package/dist/src/server/tools/tool-registration.d.ts +85 -0
- package/dist/src/server/tools/tool-registration.d.ts.map +1 -0
- package/dist/src/server/types/common.d.ts +24 -0
- package/dist/src/server/types/common.d.ts.map +1 -1
- package/dist/src/server/types/index.d.ts +5 -4
- package/dist/src/server/types/index.d.ts.map +1 -1
- package/dist/src/server/types/prompt.d.ts +61 -6
- package/dist/src/server/types/prompt.d.ts.map +1 -1
- package/dist/src/server/types/resource.d.ts +83 -8
- package/dist/src/server/types/resource.d.ts.map +1 -1
- package/dist/src/server/types/tool-context.d.ts +236 -0
- package/dist/src/server/types/tool-context.d.ts.map +1 -0
- package/dist/src/server/types/tool.d.ts +62 -5
- package/dist/src/server/types/tool.d.ts.map +1 -1
- package/dist/src/server/utils/hono-proxy.d.ts +21 -0
- package/dist/src/server/utils/hono-proxy.d.ts.map +1 -0
- package/dist/src/server/utils/index.d.ts +3 -0
- package/dist/src/server/utils/index.d.ts.map +1 -1
- package/dist/src/server/utils/jsonrpc-helpers.d.ts +94 -0
- package/dist/src/server/utils/jsonrpc-helpers.d.ts.map +1 -0
- package/dist/src/server/utils/response-helpers.d.ts +115 -3
- package/dist/src/server/utils/response-helpers.d.ts.map +1 -1
- package/dist/src/server/utils/server-helpers.d.ts +78 -0
- package/dist/src/server/utils/server-helpers.d.ts.map +1 -0
- package/dist/src/server/utils/server-lifecycle.d.ts +52 -0
- package/dist/src/server/utils/server-lifecycle.d.ts.map +1 -0
- package/dist/src/server/utils/session-helpers.d.ts +55 -0
- package/dist/src/server/utils/session-helpers.d.ts.map +1 -0
- package/dist/src/server/widgets/index.d.ts +30 -0
- package/dist/src/server/widgets/index.d.ts.map +1 -0
- package/dist/src/server/widgets/mcp-ui-adapter.d.ts.map +1 -0
- package/dist/src/server/widgets/mount-widgets-dev.d.ts +28 -0
- package/dist/src/server/widgets/mount-widgets-dev.d.ts.map +1 -0
- package/dist/src/server/widgets/mount-widgets-production.d.ts +27 -0
- package/dist/src/server/widgets/mount-widgets-production.d.ts.map +1 -0
- package/dist/src/server/widgets/setup-widget-routes.d.ts +23 -0
- package/dist/src/server/widgets/setup-widget-routes.d.ts.map +1 -0
- package/dist/src/server/widgets/ui-resource-registration.d.ts +75 -0
- package/dist/src/server/widgets/ui-resource-registration.d.ts.map +1 -0
- package/dist/src/server/widgets/widget-helpers.d.ts +277 -0
- package/dist/src/server/widgets/widget-helpers.d.ts.map +1 -0
- package/dist/src/server/widgets/widget-types.d.ts +49 -0
- package/dist/src/server/widgets/widget-types.d.ts.map +1 -0
- package/dist/tool-execution-helpers-IVUDHXMK.js +23 -0
- package/package.json +6 -5
- package/dist/chunk-F4UHAA5L.js +0 -854
- package/dist/oauth-U4NNKN4B.js +0 -30
- package/dist/src/server/adapters/mcp-ui-adapter.d.ts.map +0 -1
- /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,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,25 @@
|
|
|
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) {
|
|
9
|
+
return requestContextStorage.run(context, fn);
|
|
10
|
+
}
|
|
11
|
+
__name(runWithContext, "runWithContext");
|
|
12
|
+
function getRequestContext() {
|
|
13
|
+
return requestContextStorage.getStore();
|
|
14
|
+
}
|
|
15
|
+
__name(getRequestContext, "getRequestContext");
|
|
16
|
+
function hasRequestContext() {
|
|
17
|
+
return requestContextStorage.getStore() !== void 0;
|
|
18
|
+
}
|
|
19
|
+
__name(hasRequestContext, "hasRequestContext");
|
|
20
|
+
|
|
21
|
+
export {
|
|
22
|
+
runWithContext,
|
|
23
|
+
getRequestContext,
|
|
24
|
+
hasRequestContext
|
|
25
|
+
};
|
|
@@ -0,0 +1,280 @@
|
|
|
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
|
+
function createEnhancedContext(baseContext, createMessage, elicitInput, progressToken, sendNotification) {
|
|
256
|
+
const enhancedContext = baseContext ? Object.create(baseContext) : {};
|
|
257
|
+
enhancedContext.sample = createSampleMethod(
|
|
258
|
+
createMessage,
|
|
259
|
+
progressToken,
|
|
260
|
+
sendNotification
|
|
261
|
+
);
|
|
262
|
+
enhancedContext.elicit = createElicitMethod(elicitInput);
|
|
263
|
+
enhancedContext.reportProgress = createReportProgressMethod(
|
|
264
|
+
progressToken,
|
|
265
|
+
sendNotification
|
|
266
|
+
);
|
|
267
|
+
return enhancedContext;
|
|
268
|
+
}
|
|
269
|
+
__name(createEnhancedContext, "createEnhancedContext");
|
|
270
|
+
|
|
271
|
+
export {
|
|
272
|
+
findSessionContext,
|
|
273
|
+
sendProgressNotification,
|
|
274
|
+
withTimeout,
|
|
275
|
+
parseElicitParams,
|
|
276
|
+
createSampleMethod,
|
|
277
|
+
createElicitMethod,
|
|
278
|
+
createReportProgressMethod,
|
|
279
|
+
createEnhancedContext
|
|
280
|
+
};
|
|
@@ -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,CA4ExE"}
|